Octopus
pcm_eom_oct_m Module Reference

Data Types

type  debye_param_t
 set of parameters for Debye dielectric model More...
 
type  drude_param_t
 set of parameters for Drude-Lorentz dielectric model More...
 
type  pcm_tessera_t
 tesselation derived type More...
 

Functions/Subroutines

subroutine, public pcm_charges_propagation (q_t, pot_t, this_dt, this_cts_act, input_asc, this_eom, this_eps, namespace, this_deb, this_drl)
 Driving subroutine for the Equation of Motion (EOM) propagation of the polarization charges within the Integral Equation Formalism (IEF) formulation of the Polarization Continuum Model (PCM). More...
 
subroutine pcm_charges_from_input_file (q_t, pot_t, namespace)
 Polarization charges initialization from input file. More...
 
subroutine init_charges (q_t, pot_t, namespace)
 Polarization charges initialization (in equilibrium with the initial potential for electrons) More...
 
subroutine pcm_ief_prop_deb (q_t, pot_t)
 Euler method for integrating first order EOM for the polarization charges within IEF-PCM in the case of Debye dielectric functions. More...
 
subroutine init_vv_propagator
 Subroutine to initialize numerical constants required by the Velocity-Verlet (VV) algorithm. More...
 
subroutine pcm_ief_prop_vv_ief_drl (q_t, pot_t)
 VV algorithm for integrating second order EOM for the polarization charges within IEF-PCM in the case of Drude-Lorentz dielectric functions. More...
 
subroutine pcm_bem_init (namespace)
 Boundary Element Method (BEM) EOM-IEF-PCM matrices initialization. More...
 
subroutine, public pcm_eom_end ()
 
subroutine do_pcm_propmat (namespace)
 Subroutine to build the required BEM matrices for the EOM-IEF-PCM for Debye and Drude-Lorentz cases. More...
 
subroutine green_d (i, j, value)
 Subroutine to build BEM matrix corresponding to the Calderon operator D, using the Green function of an isotropic medium (!) More...
 
subroutine green_s (i, j, value)
 Subroutine to build BEM matrix corresponding to the Calderon operator S, using the Green function of an isotropic medium (!) More...
 
subroutine allocate_ts_matrix ()
 
subroutine deallocate_ts_matrix ()
 
subroutine do_ts_matrix (namespace)
 Subroutine to build matrices \(S^{1/2}\), \(S^{-1/2}\), \(T\) and \(\Lambda\) (notation of Refs.1-2) More...
 
subroutine, public pcm_eom_enough_initial (not_yet_called)
 

Variables

type(pcm_tessera_t), dimension(:), allocatable cts_act
 tesselation arrays (nts_act) More...
 
integer nts_act
 number of tesserae More...
 
integer, parameter, public pcm_debye_model = 1
 
integer, parameter, public pcm_drude_model = 2
 
integer, parameter, public pcm_electrons = 0
 
integer, parameter, public pcm_nuclei = 1
 
integer, parameter, public pcm_external_potential = 2
 
integer, parameter, public pcm_kick = 3
 
integer, parameter, public pcm_external_plus_kick = 4
 
type(debye_param_tdeb
 
type(drude_param_tdrl
 
integer which_eom
 flag for PCM charges due to: electrons, external potential (including kick) or just the kick More...
 
integer which_eps
 flag for Debye (PCM_DEBYE_MODEL) and Drude-Lorentz (PCM_DRUDE_MODEL) models More...
 
real(real64) dt
 time-step of the propagation More...
 
real(real64), dimension(:), allocatable q_tp
 
real(real64), dimension(:), allocatable dq_tp
 due to solute electrons More...
 
real(real64), dimension(:), allocatable qext_tp
 
real(real64), dimension(:), allocatable dqext_tp
 due to external potential More...
 
real(real64), dimension(:), allocatable qkick_tp
 
real(real64), dimension(:), allocatable dqkick_tp
 due to kick More...
 
real(real64), dimension(:), allocatable pot_tp
 Hartree (electrons) potential in previous iteration. More...
 
real(real64), dimension(:), allocatable potext_tp
 external potential in previous iteration More...
 
real(real64) f1
 
real(real64) f2
 
real(real64) f3
 
real(real64) f4
 
real(real64) f5
 auxiliar constants for VV More...
 
real(real64), dimension(:), allocatable force_tp
 due to solute electrons More...
 
real(real64), dimension(:), allocatable force_qext_tp
 due to external potential More...
 
real(real64), dimension(:), allocatable force_qkick_tp
 due to kick More...
 
real(real64), dimension(:,:), allocatable cals
 
real(real64), dimension(:,:), allocatable cald
 Calderon matrices S and D from Eq.(5), Ref.1. More...
 
real(real64), dimension(:), allocatable eigv
 
real(real64), dimension(:,:), allocatable eigt
 \( \Lambda \) and T matrices from Eq.(10), Ref.1 More...
 
real(real64), dimension(:,:), allocatable sm12
 
real(real64), dimension(:,:), allocatable sp12
 \(S^{-1/2}\) and \(S^{1/2}\) \(Q^{IEF(d)}_0\) (not used in ref.) and \(Q^{IEF(d)}_d\) from Eq.(18) with eps_0/eps_d More...
 
real(real64), dimension(:,:), allocatable matq0
 
real(real64), dimension(:,:), allocatable matqd
 for solute More...
 
real(real64), dimension(:,:), allocatable matq0_lf
 
real(real64), dimension(:,:), allocatable matqd_lf
 for external potential More...
 
real(real64), dimension(:,:), allocatable matqv
 
real(real64), dimension(:,:), allocatable matqq
 for solute More...
 
real(real64), dimension(:,:), allocatable matqv_lf
 for external potential More...
 
logical enough_initial = .false.
 

Function/Subroutine Documentation

◆ pcm_charges_propagation()

subroutine, public pcm_eom_oct_m::pcm_charges_propagation ( real(real64), dimension(:), intent(out)  q_t,
real(real64), dimension(:), intent(in)  pot_t,
real(real64), intent(in)  this_dt,
type(pcm_tessera_t), dimension(:), intent(in)  this_cts_act,
logical, intent(in)  input_asc,
integer, intent(in)  this_eom,
integer, intent(in)  this_eps,
type(namespace_t), intent(in)  namespace,
type(debye_param_t), intent(in), optional  this_deb,
type(drude_param_t), intent(in), optional  this_drl 
)

Driving subroutine for the Equation of Motion (EOM) propagation of the polarization charges within the Integral Equation Formalism (IEF) formulation of the Polarization Continuum Model (PCM).

Parameters
[in]this_eomEOM case, either due to electrons ('electron') or due to external potential ('external')
[in]this_epstype of dielectric model to be used, either Debye (PCM_DEBYE_MODEL) or Drude-Lorentz (PCM_DRUDE_MODEL)

Definition at line 231 of file pcm_eom.F90.

◆ pcm_charges_from_input_file()

subroutine pcm_eom_oct_m::pcm_charges_from_input_file ( real(real64), dimension(:), intent(out)  q_t,
real(real64), dimension(:), intent(in)  pot_t,
type(namespace_t), intent(in)  namespace 
)
private

Polarization charges initialization from input file.

Definition at line 345 of file pcm_eom.F90.

◆ init_charges()

subroutine pcm_eom_oct_m::init_charges ( real(real64), dimension(:), intent(out)  q_t,
real(real64), dimension(:), intent(in)  pot_t,
type(namespace_t), intent(in)  namespace 
)
private

Polarization charges initialization (in equilibrium with the initial potential for electrons)

Definition at line 391 of file pcm_eom.F90.

◆ pcm_ief_prop_deb()

subroutine pcm_eom_oct_m::pcm_ief_prop_deb ( real(real64), dimension(:), intent(out)  q_t,
real(real64), dimension(:), intent(in)  pot_t 
)
private

Euler method for integrating first order EOM for the polarization charges within IEF-PCM in the case of Debye dielectric functions.

Definition at line 470 of file pcm_eom.F90.

◆ init_vv_propagator()

subroutine pcm_eom_oct_m::init_vv_propagator
private

Subroutine to initialize numerical constants required by the Velocity-Verlet (VV) algorithm.

See E. Vanden-Eijnden, G. Ciccotti, Chem.Phys.Lett. 429 (2006) 310-316. Using the scheme in Eq.(21) and (17), ibid. See subroutine pcm_ief_prop_vv_ief_drl

Definition at line 513 of file pcm_eom.F90.

◆ pcm_ief_prop_vv_ief_drl()

subroutine pcm_eom_oct_m::pcm_ief_prop_vv_ief_drl ( real(real64), dimension(:), intent(out)  q_t,
real(real64), dimension(:), intent(in)  pot_t 
)
private

VV algorithm for integrating second order EOM for the polarization charges within IEF-PCM in the case of Drude-Lorentz dielectric functions.

Definition at line 528 of file pcm_eom.F90.

◆ pcm_bem_init()

subroutine pcm_eom_oct_m::pcm_bem_init ( type(namespace_t), intent(in)  namespace)
private

Boundary Element Method (BEM) EOM-IEF-PCM matrices initialization.

Definition at line 570 of file pcm_eom.F90.

◆ pcm_eom_end()

subroutine, public pcm_eom_oct_m::pcm_eom_end

Definition at line 623 of file pcm_eom.F90.

◆ do_pcm_propmat()

subroutine pcm_eom_oct_m::do_pcm_propmat ( type(namespace_t), intent(in)  namespace)
private

Subroutine to build the required BEM matrices for the EOM-IEF-PCM for Debye and Drude-Lorentz cases.

Following from Ref.1 - J.Phys.Chem.A 2015, 119, 5405-5416. - Debye case Ref.2 - J.Phys.Chem.C 2016, 120, 28-774-28781. - Drude-Lorentz case The matrices are required for the EOMs, eq.(37) in Ref.1 and eq.(15) in Ref.2

Definition at line 665 of file pcm_eom.F90.

◆ green_d()

subroutine pcm_eom_oct_m::green_d ( integer, intent(in)  i,
integer, intent(in)  j,
real(real64), intent(out)  value 
)
private

Subroutine to build BEM matrix corresponding to the Calderon operator D, using the Green function of an isotropic medium (!)

Only solvents can be treated with this. To be changed for surfaces, spherical nanoparticles, etc.

Definition at line 801 of file pcm_eom.F90.

◆ green_s()

subroutine pcm_eom_oct_m::green_s ( integer, intent(in)  i,
integer, intent(in)  j,
real(real64), intent(out)  value 
)
private

Subroutine to build BEM matrix corresponding to the Calderon operator S, using the Green function of an isotropic medium (!)

Only solvents can be treated with this. To be changed for surfaces, spherical nanoparticles, etc.

Definition at line 825 of file pcm_eom.F90.

◆ allocate_ts_matrix()

subroutine pcm_eom_oct_m::allocate_ts_matrix
private

Definition at line 845 of file pcm_eom.F90.

◆ deallocate_ts_matrix()

subroutine pcm_eom_oct_m::deallocate_ts_matrix
private

Definition at line 857 of file pcm_eom.F90.

◆ do_ts_matrix()

subroutine pcm_eom_oct_m::do_ts_matrix ( type(namespace_t), intent(in)  namespace)
private

Subroutine to build matrices \(S^{1/2}\), \(S^{-1/2}\), \(T\) and \(\Lambda\) (notation of Refs.1-2)

Definition at line 870 of file pcm_eom.F90.

◆ pcm_eom_enough_initial()

subroutine, public pcm_eom_oct_m::pcm_eom_enough_initial ( logical, intent(out)  not_yet_called)

Definition at line 933 of file pcm_eom.F90.

Variable Documentation

◆ cts_act

type(pcm_tessera_t), dimension(:), allocatable pcm_eom_oct_m::cts_act
private

tesselation arrays (nts_act)

Definition at line 149 of file pcm_eom.F90.

◆ nts_act

integer pcm_eom_oct_m::nts_act
private

number of tesserae

Definition at line 150 of file pcm_eom.F90.

◆ pcm_debye_model

integer, parameter, public pcm_eom_oct_m::pcm_debye_model = 1

Definition at line 168 of file pcm_eom.F90.

◆ pcm_drude_model

integer, parameter, public pcm_eom_oct_m::pcm_drude_model = 2

Definition at line 168 of file pcm_eom.F90.

◆ pcm_electrons

integer, parameter, public pcm_eom_oct_m::pcm_electrons = 0

Definition at line 172 of file pcm_eom.F90.

◆ pcm_nuclei

integer, parameter, public pcm_eom_oct_m::pcm_nuclei = 1

Definition at line 172 of file pcm_eom.F90.

◆ pcm_external_potential

integer, parameter, public pcm_eom_oct_m::pcm_external_potential = 2

Definition at line 172 of file pcm_eom.F90.

◆ pcm_kick

integer, parameter, public pcm_eom_oct_m::pcm_kick = 3

Definition at line 172 of file pcm_eom.F90.

◆ pcm_external_plus_kick

integer, parameter, public pcm_eom_oct_m::pcm_external_plus_kick = 4

Definition at line 172 of file pcm_eom.F90.

◆ deb

type(debye_param_t) pcm_eom_oct_m::deb
private

Definition at line 180 of file pcm_eom.F90.

◆ drl

type(drude_param_t) pcm_eom_oct_m::drl
private

Definition at line 181 of file pcm_eom.F90.

◆ which_eom

integer pcm_eom_oct_m::which_eom
private

flag for PCM charges due to: electrons, external potential (including kick) or just the kick

Definition at line 184 of file pcm_eom.F90.

◆ which_eps

integer pcm_eom_oct_m::which_eps
private

flag for Debye (PCM_DEBYE_MODEL) and Drude-Lorentz (PCM_DRUDE_MODEL) models

Definition at line 187 of file pcm_eom.F90.

◆ dt

real(real64) pcm_eom_oct_m::dt
private

time-step of the propagation

Definition at line 189 of file pcm_eom.F90.

◆ q_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::q_tp
private

Definition at line 192 of file pcm_eom.F90.

◆ dq_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::dq_tp
private

due to solute electrons

Definition at line 192 of file pcm_eom.F90.

◆ qext_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::qext_tp
private

Definition at line 193 of file pcm_eom.F90.

◆ dqext_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::dqext_tp
private

due to external potential

Definition at line 193 of file pcm_eom.F90.

◆ qkick_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::qkick_tp
private

Definition at line 194 of file pcm_eom.F90.

◆ dqkick_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::dqkick_tp
private

due to kick

Definition at line 194 of file pcm_eom.F90.

◆ pot_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::pot_tp
private

Hartree (electrons) potential in previous iteration.

Definition at line 196 of file pcm_eom.F90.

◆ potext_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::potext_tp
private

external potential in previous iteration

Definition at line 197 of file pcm_eom.F90.

◆ f1

real(real64) pcm_eom_oct_m::f1
private

Definition at line 200 of file pcm_eom.F90.

◆ f2

real(real64) pcm_eom_oct_m::f2
private

Definition at line 200 of file pcm_eom.F90.

◆ f3

real(real64) pcm_eom_oct_m::f3
private

Definition at line 200 of file pcm_eom.F90.

◆ f4

real(real64) pcm_eom_oct_m::f4
private

Definition at line 200 of file pcm_eom.F90.

◆ f5

real(real64) pcm_eom_oct_m::f5
private

auxiliar constants for VV

Definition at line 200 of file pcm_eom.F90.

◆ force_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::force_tp
private

due to solute electrons

Definition at line 202 of file pcm_eom.F90.

◆ force_qext_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::force_qext_tp
private

due to external potential

Definition at line 203 of file pcm_eom.F90.

◆ force_qkick_tp

real(real64), dimension(:), allocatable pcm_eom_oct_m::force_qkick_tp
private

due to kick

Definition at line 204 of file pcm_eom.F90.

◆ cals

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::cals
private

Definition at line 208 of file pcm_eom.F90.

◆ cald

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::cald
private

Calderon matrices S and D from Eq.(5), Ref.1.

Definition at line 208 of file pcm_eom.F90.

◆ eigv

real(real64), dimension(:), allocatable pcm_eom_oct_m::eigv
private

Definition at line 209 of file pcm_eom.F90.

◆ eigt

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::eigt
private

\( \Lambda \) and T matrices from Eq.(10), Ref.1

Definition at line 209 of file pcm_eom.F90.

◆ sm12

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::sm12
private

Definition at line 210 of file pcm_eom.F90.

◆ sp12

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::sp12
private

\(S^{-1/2}\) and \(S^{1/2}\) \(Q^{IEF(d)}_0\) (not used in ref.) and \(Q^{IEF(d)}_d\) from Eq.(18) with eps_0/eps_d

Definition at line 210 of file pcm_eom.F90.

◆ matq0

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matq0
private

Definition at line 212 of file pcm_eom.F90.

◆ matqd

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matqd
private

for solute

Definition at line 212 of file pcm_eom.F90.

◆ matq0_lf

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matq0_lf
private

Definition at line 213 of file pcm_eom.F90.

◆ matqd_lf

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matqd_lf
private

for external potential

Definition at line 213 of file pcm_eom.F90.

◆ matqv

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matqv
private

Definition at line 216 of file pcm_eom.F90.

◆ matqq

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matqq
private

for solute

Definition at line 216 of file pcm_eom.F90.

◆ matqv_lf

real(real64), dimension(:,:), allocatable pcm_eom_oct_m::matqv_lf
private

for external potential

Definition at line 217 of file pcm_eom.F90.

◆ enough_initial

logical pcm_eom_oct_m::enough_initial = .false.
private

Definition at line 224 of file pcm_eom.F90.