Octopus
pcm_oct_m Module Reference

Data Types

type  pcm_min_t
 
type  pcm_sphere_t
 The cavity hosting the solute molecule is built from a set of interlocking spheres with optimized radii centered at the nuclear positions. More...
 
type  pcm_t
 

Functions/Subroutines

subroutine, public pcm_init (pcm, namespace, space, ions, grid, qtot, val_charge, external_potentials_present, kick_present)
 Initializes the PCM calculation: reads the VdW molecular cavity and generates the PCM response matrix. More...
 
subroutine, public pcm_calc_pot_rs (pcm, mesh, psolver, ions, v_h, v_ext, kick, time_present, kick_time)
 
subroutine, public pcm_v_cav_li (v_cav, v_mesh, pcm, mesh)
 Calculates the Hartree/external/kick potential at the tessera representative points by doing a 3D linear interpolation. More...
 
subroutine, public pcm_v_nuclei_cav (v_n_cav, ions, tess, n_tess)
 Calculates the classical electrostatic potential geneated by the nuclei at the tesserae. \( v_{n_cav(ik)} = \sum_{I=1}^{natoms} Z_val / |s_{ik} - R_I| \). More...
 
subroutine, public pcm_elect_energy (ions, pcm, E_int_ee, E_int_en, E_int_ne, E_int_nn, E_int_e_ext, E_int_n_ext)
 Calculates the solute-solvent electrostatic interaction energy \( E_M-solv = \sum_{ik=1}^n_tess { [VHartree(ik) + Vnuclei(ik)]*[q_e(ik) + q_n(ik)] } \) \( (if external potential) + q_ext(ik) \). More...
 
subroutine, public pcm_charges (q_pcm, q_pcm_tot, v_cav, pcm_mat, n_tess, qtot_nominal, epsilon, renorm_charges, q_tot_tol, deltaQ)
 Calculates the polarization charges at each tessera by using the response matrix 'pcm_mat', provided the value of the molecular electrostatic potential at the tesserae: \( q_pcm(ia) = \sum_{ib}^{n_tess} pcm_mat(ia,ib)*v_cav(ib) \). More...
 
logical function pcm_nn_in_mesh (pcm, mesh)
 Check wether the nearest neighbor requested are in the mesh or not. More...
 
subroutine pcm_poisson_sanity_check (pcm, mesh)
 Check that all the required nearest neighbors are prensent in the mesh. More...
 
subroutine, public pcm_charge_density (pcm, q_pcm, q_pcm_tot, mesh, rho)
 Generates the polarization charge density smearing the charge with a gaussian distribution on the mesh nearest neighboring points of each tessera. More...
 
subroutine, public pcm_pot_rs (pcm, v_pcm, q_pcm, rho, mesh, psolver)
 Generates the potential 'v_pcm' in real-space. More...
 
subroutine pcm_pot_rs_poisson (namespace, v_pcm, psolver, rho)
 Generates the potential 'v_pcm' in real-space solving the poisson equation for rho. More...
 
subroutine pcm_pot_rs_direct (v_pcm, q_pcm, tess, n_tess, mesh, width_factor)
 Generates the potential 'v_pcm' in real-space by direct sum. More...
 
subroutine pcm_matrix (eps, tess, n_tess, pcm_mat, localf)
 Generates the PCM response matrix. J. Tomassi et al. Chem. Rev. 105, 2999 (2005). More...
 
subroutine s_i_matrix (n_tess, tess)
 
subroutine d_i_matrix (n_tess, tess)
 
real(real64) function s_mat_elem_i (tessi, tessj)
 electrostatic Green function in vacuo: \( G_I(r,r^\prime) = 1 / | r - r^\prime | \) More...
 
real(real64) function d_mat_elem_i (tessi, tessj)
 Gradient of the Green function in vacuo \( GRAD[G_I(r,r^\prime)] \). More...
 
subroutine cav_gen (tess_sphere, tess_min_distance, nesf, sfe, nts, cts, unit_pcminfo)
 It builds the solute cavity surface and calculates the vertices, representative points and areas of the tesserae by using the Gauss-Bonnet theorem. More...
 
subroutine subtessera (sfe, ns, nesf, nv, pts, ccc, pp, pp1, area)
 find the uncovered region for each tessera and computes the area, the representative point (pp) and the unitary normal vector (pp1) More...
 
subroutine inter (sfe, p1, p2, p3, p4, ns, ia)
 Finds the point 'p4', on the arc 'p1'-'p2' developed from 'p3', which is on the surface of sphere 'ns'. p4 is a linear combination of p1 and p2 with the 'alpha' parameter optimized iteratively. More...
 
subroutine gaubon (sfe, nv, ns, pts, ccc, pp, pp1, area, intsph)
 Use the Gauss-Bonnet theorem to calculate the area of the tessera with vertices 'pts(3,nv)'. Area = \( R^2 [ 2pi + S(Phi(N)cosT(N)) - S(Beta(N)) ] \) Phi(n): length of the arc in radians of the side 'n'. T(n): azimuthal angle for the side 'n' Beta(n): external angle respect to vertex 'n'. More...
 
subroutine vecp (p1, p2, p3, dnorm)
 calculates the vectorial product p3 = p1 x p2 More...
 
subroutine, public pcm_end (pcm)
 
logical function, public pcm_update (this)
 Update pcm potential. More...
 
real(real64) function, public pcm_get_vdw_radius (species, pcm_vdw_type, namespace)
 get the vdw radius More...
 
subroutine, public pcm_dipole (mu_pcm, q_pcm, tess, n_tess)
 Computes the dipole moment mu_pcm due to a distribution of charges q_pcm. More...
 
subroutine, public pcm_field (e_pcm, q_pcm, ref_point, tess, n_tess)
 Computes the field e_pcm at the reference point ref_point due to a distribution of charges q_pcm. More...
 
subroutine, public pcm_eps (pcm, eps, omega)
 
subroutine, public pcm_min_input_parsing_for_spectrum (pcm, namespace)
 
subroutine pcm_eps_deb (eps, deb, omega)
 
subroutine pcm_eps_drl (eps, drl, omega)
 

Variables

integer, parameter pcm_dim_space = 3
 The resulting cavity is discretized by a set of tesserae defined in 3d. More...
 
real(real64), dimension(:,:), allocatable s_mat_act
 S_I matrix. More...
 
real(real64), dimension(:,:), allocatable d_mat_act
 D_I matrix. More...
 
real(real64), dimension(:,:), allocatable sigma
 S_E matrix. More...
 
real(real64), dimension(:,:), allocatable delta
 D_E matrix in JCP 139, 024105 (2013). More...
 
logical gamess_benchmark
 Decide to output pcm_matrix in a GAMESS format. More...
 
real(real64), dimension(:,:), allocatable mat_gamess
 PCM matrix formatted to be inputed to GAMESS. More...
 
integer, parameter, public pcm_td_eq = 0
 
integer, parameter, public pcm_td_neq = 1
 
integer, parameter, public pcm_td_eom = 2
 
integer, parameter, public pcm_calc_direct = 1
 
integer, parameter, public pcm_calc_poisson = 2
 
integer, parameter pcm_vdw_optimized = 1
 
integer, parameter pcm_vdw_species = 2
 
integer, parameter n_tess_sphere = 60
 minimum number of tesserae per sphere More...
 

Function/Subroutine Documentation

◆ pcm_init()

subroutine, public pcm_oct_m::pcm_init ( type(pcm_t), intent(out)  pcm,
type(namespace_t), intent(in), target  namespace,
class(space_t), intent(in)  space,
type(ions_t), intent(in)  ions,
type(grid_t), intent(in)  grid,
real(real64), intent(in)  qtot,
real(real64), intent(in)  val_charge,
logical, intent(in)  external_potentials_present,
logical, intent(in)  kick_present 
)

Initializes the PCM calculation: reads the VdW molecular cavity and generates the PCM response matrix.

packing Debye parameters for convenience

re-parse TDTimeStep to propagate polarization charges

These coordinates are already in atomic units (Bohr)

Counting the number of tesserae and generating the Van der Waals discretized surface of the solute system

The cavity surface will be read from a external file

printing out the cavity surface

Generating the dynamical PCM matrix

Definition at line 293 of file pcm.F90.

◆ pcm_calc_pot_rs()

subroutine, public pcm_oct_m::pcm_calc_pot_rs ( type(pcm_t), intent(inout)  pcm,
class(mesh_t), intent(in)  mesh,
type(poisson_t), intent(in)  psolver,
type(ions_t), intent(in), optional  ions,
real(real64), dimension(:), intent(in), optional  v_h,
real(real64), dimension(:), intent(in), optional  v_ext,
real(real64), dimension(:), intent(in), optional  kick,
logical, intent(in), optional  time_present,
logical, intent(in), optional  kick_time 
)

Definition at line 1214 of file pcm.F90.

◆ pcm_v_cav_li()

subroutine, public pcm_oct_m::pcm_v_cav_li ( real(real64), dimension(:), intent(out)  v_cav,
real(real64), dimension(:), intent(in)  v_mesh,
type(pcm_t), intent(in)  pcm,
type(mesh_t), intent(in)  mesh 
)

Calculates the Hartree/external/kick potential at the tessera representative points by doing a 3D linear interpolation.

Parameters
[in]v_mesh(1:meshnp)
[out]v_cav(1:n_tess)

Definition at line 1484 of file pcm.F90.

◆ pcm_v_nuclei_cav()

subroutine, public pcm_oct_m::pcm_v_nuclei_cav ( real(real64), dimension(:), intent(out)  v_n_cav,
type(ions_t), intent(in)  ions,
type(pcm_tessera_t), dimension(:), intent(in)  tess,
integer, intent(in)  n_tess 
)

Calculates the classical electrostatic potential geneated by the nuclei at the tesserae. \( v_{n_cav(ik)} = \sum_{I=1}^{natoms} Z_val / |s_{ik} - R_I| \).

Parameters
[out]v_n_cav(1:n_tess)
[in]tess(1:n_tess)

Definition at line 1513 of file pcm.F90.

◆ pcm_elect_energy()

subroutine, public pcm_oct_m::pcm_elect_energy ( type(ions_t), intent(in)  ions,
type(pcm_t), intent(in)  pcm,
real(real64), intent(out)  E_int_ee,
real(real64), intent(out)  E_int_en,
real(real64), intent(out)  E_int_ne,
real(real64), intent(out)  E_int_nn,
real(real64), intent(out), optional  E_int_e_ext,
real(real64), intent(out), optional  E_int_n_ext 
)

Calculates the solute-solvent electrostatic interaction energy \( E_M-solv = \sum_{ik=1}^n_tess { [VHartree(ik) + Vnuclei(ik)]*[q_e(ik) + q_n(ik)] } \) \( (if external potential) + q_ext(ik) \).

Definition at line 1543 of file pcm.F90.

◆ pcm_charges()

subroutine, public pcm_oct_m::pcm_charges ( real(real64), dimension(:), intent(out)  q_pcm,
real(real64), intent(out)  q_pcm_tot,
real(real64), dimension(:), intent(in)  v_cav,
real(real64), dimension(:,:), intent(in)  pcm_mat,
integer, intent(in)  n_tess,
real(real64), intent(in), optional  qtot_nominal,
real(real64), intent(in), optional  epsilon,
logical, intent(in), optional  renorm_charges,
real(real64), intent(in), optional  q_tot_tol,
real(real64), intent(out), optional  deltaQ 
)

Calculates the polarization charges at each tessera by using the response matrix 'pcm_mat', provided the value of the molecular electrostatic potential at the tesserae: \( q_pcm(ia) = \sum_{ib}^{n_tess} pcm_mat(ia,ib)*v_cav(ib) \).

Parameters
[out]q_pcm(1:n_tess)
[in]v_cav(1:n_tess)
[in]pcm_mat(1:n_tess, 1:n_tess)

Definition at line 1642 of file pcm.F90.

◆ pcm_nn_in_mesh()

logical function pcm_oct_m::pcm_nn_in_mesh ( type(pcm_t), intent(in)  pcm,
class(mesh_t), intent(in)  mesh 
)
private

Check wether the nearest neighbor requested are in the mesh or not.

Definition at line 1692 of file pcm.F90.

◆ pcm_poisson_sanity_check()

subroutine pcm_oct_m::pcm_poisson_sanity_check ( type(pcm_t), intent(in)  pcm,
class(mesh_t), intent(in)  mesh 
)
private

Check that all the required nearest neighbors are prensent in the mesh.

Definition at line 1733 of file pcm.F90.

◆ pcm_charge_density()

subroutine, public pcm_oct_m::pcm_charge_density ( type(pcm_t), intent(inout)  pcm,
real(real64), dimension(:), intent(in)  q_pcm,
real(real64), intent(in)  q_pcm_tot,
type(mesh_t), intent(in)  mesh,
real(real64), dimension(:), intent(out)  rho 
)

Generates the polarization charge density smearing the charge with a gaussian distribution on the mesh nearest neighboring points of each tessera.

Parameters
[in]q_pcm(1:n_tess)

Definition at line 1752 of file pcm.F90.

◆ pcm_pot_rs()

subroutine, public pcm_oct_m::pcm_pot_rs ( type(pcm_t), intent(inout)  pcm,
real(real64), dimension(:), intent(inout), contiguous  v_pcm,
real(real64), dimension(:), intent(in), contiguous  q_pcm,
real(real64), dimension(:), intent(inout), contiguous  rho,
type(mesh_t), intent(in)  mesh,
type(poisson_t), intent(in)  psolver 
)

Generates the potential 'v_pcm' in real-space.

Parameters
[in,out]v_pcm(1:meshnp) running serially np=np_global
[in]q_pcm(1:n_tess)

Definition at line 1889 of file pcm.F90.

◆ pcm_pot_rs_poisson()

subroutine pcm_oct_m::pcm_pot_rs_poisson ( type(namespace_t), intent(in)  namespace,
real(real64), dimension(:), intent(inout), contiguous  v_pcm,
type(poisson_t), intent(in)  psolver,
real(real64), dimension(:), intent(inout), contiguous  rho 
)
private

Generates the potential 'v_pcm' in real-space solving the poisson equation for rho.

Definition at line 1930 of file pcm.F90.

◆ pcm_pot_rs_direct()

subroutine pcm_oct_m::pcm_pot_rs_direct ( real(real64), dimension(:), intent(out)  v_pcm,
real(real64), dimension(:), intent(in)  q_pcm,
type(pcm_tessera_t), dimension(:), intent(in)  tess,
integer, intent(in)  n_tess,
type(mesh_t), intent(in)  mesh,
real(real64), intent(in)  width_factor 
)
private

Generates the potential 'v_pcm' in real-space by direct sum.

Parameters
[out]v_pcm(1:meshnp) running serially np=np_global
[in]q_pcm(1:n_tess)
[in]tess(1:n_tess)

Definition at line 1946 of file pcm.F90.

◆ pcm_matrix()

subroutine pcm_oct_m::pcm_matrix ( real(real64), intent(in)  eps,
type(pcm_tessera_t), dimension(:), intent(in)  tess,
integer, intent(in)  n_tess,
real(real64), dimension(:,:), intent(out)  pcm_mat,
logical, intent(in), optional  localf 
)
private

Generates the PCM response matrix. J. Tomassi et al. Chem. Rev. 105, 2999 (2005).

Parameters
[in]tess(1:n_tess)
[out]pcm_mat(1:n_tess, 1:n_tess)

Conforming the S_I matrix

Defining the matrix \( S_E=S_I/eps \)

Conforming the D_I matrix

Defining the matrix D_E=D_I

'local field' differ from 'standard' PCM response matrix in some sign changes

Start conforming the PCM matrix

Solving for \( X = S_I^-1*(2*Pi - D_I) \) for local field effects —> \( X = S_I^-1*(2*Pi + D_I) \)

Computing \( -S_E*S_I^-1*(2*Pi - D_I) \) for local field effects —> \( -S_E*S_I^-1*(2*Pi + D_I) \)

Solving for \( [(2*pi - D_E)*S_I + S_E*(2*Pi + D_I*)]*X = [(2*Pi - D_E) - S_E*S_I^-1*(2*Pi - D_I)] \) for local field —> \( [(2*pi - D_E)*S_I + S_E*(2*Pi + D_I*)]*X = [(2*Pi + D_E) - S_E*S_I^-1*(2*Pi + D_I)] \)

Definition at line 1998 of file pcm.F90.

◆ s_i_matrix()

subroutine pcm_oct_m::s_i_matrix ( integer, intent(in)  n_tess,
type(pcm_tessera_t), dimension(:), intent(in)  tess 
)
private

Definition at line 2111 of file pcm.F90.

◆ d_i_matrix()

subroutine pcm_oct_m::d_i_matrix ( integer, intent(in)  n_tess,
type(pcm_tessera_t), dimension(:), intent(in)  tess 
)
private

Definition at line 2130 of file pcm.F90.

◆ s_mat_elem_i()

real(real64) function pcm_oct_m::s_mat_elem_i ( type(pcm_tessera_t), intent(in)  tessi,
type(pcm_tessera_t), intent(in)  tessj 
)
private

electrostatic Green function in vacuo: \( G_I(r,r^\prime) = 1 / | r - r^\prime | \)

Definition at line 2150 of file pcm.F90.

◆ d_mat_elem_i()

real(real64) function pcm_oct_m::d_mat_elem_i ( type(pcm_tessera_t), intent(in)  tessi,
type(pcm_tessera_t), intent(in)  tessj 
)
private

Gradient of the Green function in vacuo \( GRAD[G_I(r,r^\prime)] \).

Diagonal matrix elements

off-diagonal matrix elements

Definition at line 2182 of file pcm.F90.

◆ cav_gen()

subroutine pcm_oct_m::cav_gen ( integer, intent(in)  tess_sphere,
real(real64), intent(in)  tess_min_distance,
integer, intent(in)  nesf,
type(pcm_sphere_t), dimension(:), intent(inout)  sfe,
integer, intent(out)  nts,
type(pcm_tessera_t), dimension(:), intent(out)  cts,
integer, intent(in)  unit_pcminfo 
)
private

It builds the solute cavity surface and calculates the vertices, representative points and areas of the tesserae by using the Gauss-Bonnet theorem.

Parameters
[in,out]sfe(1:pcmn_spheres)
[out]cts(1:pcmn_tesserae)

Angles corresponding to the vertices and centres of a polyhedron within a sphere of unitary radius and centered at the origin

the vector idum, contained in the matrix jvt1, indicates the vertices of the tesserae (using less than 19 continuations)

geometrical data are converted to Angstrom and back transformed to Bohr at the end of the subroutine.

Coordinates of vertices of tesserae in a sphere with unit radius. the matrix 'cv' and 'xc', 'yc', 'zc' conatin the vertices and the centers of 240 tesserae. The matrix 'jvt1(i,j)' denotes the index of the i-th vertex of the j-th big tessera. On each big tessera the 6 vertices are ordered as follows:

1

4 5

3 6 2

Controls whether the tessera is covered or need to be reshaped it

loop through the tesseare on the sphere 'nsfe'

check the total number of tessera

loop through the spheres

checks if two tesseare are too close

calculating the coordinates of the new tessera weighted by the areas

calculating the normal vector of the new tessera weighted by the areas

calculating the sphere radius of the new tessera weighted by the areas

calculating the area of the new tessera

deleting tessera ja

while loop

Calculates the cavity volume: \( vol = \sum_{its=1}^nts A_{its} s*n/3 \).

transforms results into Bohr.

Definition at line 2226 of file pcm.F90.

◆ subtessera()

subroutine pcm_oct_m::subtessera ( type(pcm_sphere_t), dimension(:), intent(in)  sfe,
integer, intent(in)  ns,
integer, intent(in)  nesf,
integer, intent(inout)  nv,
real(real64), dimension(:,:), intent(inout)  pts,
real(real64), dimension(:,:), intent(out)  ccc,
real(real64), dimension(:), intent(out)  pp,
real(real64), dimension(:), intent(out)  pp1,
real(real64), intent(out)  area 
)
private

find the uncovered region for each tessera and computes the area, the representative point (pp) and the unitary normal vector (pp1)

Parameters
[in]sfe(1:nesf)
[in,out]pts(1:PCM_DIM_SPACE, 1:DIM_TEN)
[out]ccc(1:PCM_DIM_SPACE, 1:DIM_TEN)
[out]pp(1:PCM_DIM_SPACE)
[out]pp1(1:PCM_DIM_SPACE)

Definition at line 2603 of file pcm.F90.

◆ inter()

subroutine pcm_oct_m::inter ( type(pcm_sphere_t), dimension(:), intent(in)  sfe,
real(real64), dimension(1:pcm_dim_space), intent(in)  p1,
real(real64), dimension(1:pcm_dim_space), intent(in)  p2,
real(real64), dimension(1:pcm_dim_space), intent(in)  p3,
real(real64), dimension(1:pcm_dim_space), intent(out)  p4,
integer, intent(in)  ns,
integer, intent(in)  ia 
)
private

Finds the point 'p4', on the arc 'p1'-'p2' developed from 'p3', which is on the surface of sphere 'ns'. p4 is a linear combination of p1 and p2 with the 'alpha' parameter optimized iteratively.

Parameters
[in]sfe(1:nesf)
[in]p1(1:PCM_DIM_SPACE)
[in]p2(1:PCM_DIM_SPACE)
[in]p3(1:PCM_DIM_SPACE)
[out]p4(1:PCM_DIM_SPACE)

Definition at line 2847 of file pcm.F90.

◆ gaubon()

subroutine pcm_oct_m::gaubon ( type(pcm_sphere_t), dimension(:), intent(in)  sfe,
integer, intent(in)  nv,
integer, intent(in)  ns,
real(real64), dimension(:,:), intent(in)  pts,
real(real64), dimension(:,:), intent(in)  ccc,
real(real64), dimension(:), intent(inout)  pp,
real(real64), dimension(:), intent(inout)  pp1,
real(real64), intent(out)  area,
integer, dimension(:), intent(in)  intsph 
)
private

Use the Gauss-Bonnet theorem to calculate the area of the tessera with vertices 'pts(3,nv)'. Area = \( R^2 [ 2pi + S(Phi(N)cosT(N)) - S(Beta(N)) ] \) Phi(n): length of the arc in radians of the side 'n'. T(n): azimuthal angle for the side 'n' Beta(n): external angle respect to vertex 'n'.

Parameters
[in]sfe(1:nesf)
[in]pts(1:PCM_DIM_SPACE,1:DIM_TEN)
[in]ccc(1:PCM_DIM_SPACE,1:DIM_TEN)
[in,out]pp(1:PCM_DIM_SPACE)
[in,out]pp1(1:PCM_DIM_SPACE)
[in]intsph(1:DIM_TEN)

Loop over the vertices

computes the area of the tessera

computes the representative point

finds the internal normal at the representative point

If the area of the tessera is negative (0^-), due to numerical errors, is discarded

Definition at line 2924 of file pcm.F90.

◆ vecp()

subroutine pcm_oct_m::vecp ( real(real64), dimension(:), intent(in)  p1,
real(real64), dimension(:), intent(in)  p2,
real(real64), dimension(:), intent(out)  p3,
real(real64), intent(out)  dnorm 
)
private

calculates the vectorial product p3 = p1 x p2

Parameters
[in]p1(1:PCM_DIM_SPACE)
[in]p2(1:PCM_DIM_SPACE)
[out]p3(1:PCM_DIM_SPACE)

Definition at line 3055 of file pcm.F90.

◆ pcm_end()

subroutine, public pcm_oct_m::pcm_end ( type(pcm_t), intent(inout)  pcm)

Definition at line 3070 of file pcm.F90.

◆ pcm_update()

logical function, public pcm_oct_m::pcm_update ( type(pcm_t), intent(inout)  this)

Update pcm potential.

Definition at line 3168 of file pcm.F90.

◆ pcm_get_vdw_radius()

real(real64) function, public pcm_oct_m::pcm_get_vdw_radius ( class(species_t), intent(in)  species,
integer, intent(in)  pcm_vdw_type,
type(namespace_t), intent(in)  namespace 
)

get the vdw radius

Definition at line 3178 of file pcm.F90.

◆ pcm_dipole()

subroutine, public pcm_oct_m::pcm_dipole ( real(real64), dimension(:), intent(out)  mu_pcm,
real(real64), dimension(:), intent(in)  q_pcm,
type(pcm_tessera_t), dimension(:), intent(in)  tess,
integer, intent(in)  n_tess 
)

Computes the dipole moment mu_pcm due to a distribution of charges q_pcm.

Parameters
[out]mu_pcm(1:PCM_DIM_SPACE)
[in]q_pcm(1:n_tess)
[in]tess(1:n_tess)

Definition at line 3239 of file pcm.F90.

◆ pcm_field()

subroutine, public pcm_oct_m::pcm_field ( real(real64), dimension(:), intent(out)  e_pcm,
real(real64), dimension(:), intent(in)  q_pcm,
real(real64), dimension(1:3), intent(in)  ref_point,
type(pcm_tessera_t), dimension(:), intent(in)  tess,
integer, intent(in)  n_tess 
)

Computes the field e_pcm at the reference point ref_point due to a distribution of charges q_pcm.

Parameters
[out]e_pcm(1:PCM_DIM_SPACE)
[in]q_pcm(1:n_tess)
[in]tess(1:n_tess)

Definition at line 3259 of file pcm.F90.

◆ pcm_eps()

subroutine, public pcm_oct_m::pcm_eps ( type(pcm_min_t), intent(in)  pcm,
complex(real64), intent(out)  eps,
real(real64), intent(in)  omega 
)

Definition at line 3285 of file pcm.F90.

◆ pcm_min_input_parsing_for_spectrum()

subroutine, public pcm_oct_m::pcm_min_input_parsing_for_spectrum ( type(pcm_min_t), intent(out)  pcm,
type(namespace_t), intent(in)  namespace 
)

Definition at line 3309 of file pcm.F90.

◆ pcm_eps_deb()

subroutine pcm_oct_m::pcm_eps_deb ( complex(real64), intent(out)  eps,
type(debye_param_t), intent(in)  deb,
real(real64), intent(in)  omega 
)
private

Definition at line 3362 of file pcm.F90.

◆ pcm_eps_drl()

subroutine pcm_oct_m::pcm_eps_drl ( complex(real64), intent(out)  eps,
type(drude_param_t), intent(in)  drl,
real(real64), intent(in)  omega 
)
private

Definition at line 3377 of file pcm.F90.

Variable Documentation

◆ pcm_dim_space

integer, parameter pcm_oct_m::pcm_dim_space = 3
private

The resulting cavity is discretized by a set of tesserae defined in 3d.

Definition at line 184 of file pcm.F90.

◆ s_mat_act

real(real64), dimension(:,:), allocatable pcm_oct_m::s_mat_act
private

S_I matrix.

Definition at line 265 of file pcm.F90.

◆ d_mat_act

real(real64), dimension(:,:), allocatable pcm_oct_m::d_mat_act
private

D_I matrix.

Definition at line 266 of file pcm.F90.

◆ sigma

real(real64), dimension(:,:), allocatable pcm_oct_m::sigma
private

S_E matrix.

Definition at line 267 of file pcm.F90.

◆ delta

real(real64), dimension(:,:), allocatable pcm_oct_m::delta
private

D_E matrix in JCP 139, 024105 (2013).

Definition at line 268 of file pcm.F90.

◆ gamess_benchmark

logical pcm_oct_m::gamess_benchmark
private

Decide to output pcm_matrix in a GAMESS format.

Definition at line 270 of file pcm.F90.

◆ mat_gamess

real(real64), dimension(:,:), allocatable pcm_oct_m::mat_gamess
private

PCM matrix formatted to be inputed to GAMESS.

Definition at line 271 of file pcm.F90.

◆ pcm_td_eq

integer, parameter, public pcm_oct_m::pcm_td_eq = 0

Definition at line 273 of file pcm.F90.

◆ pcm_td_neq

integer, parameter, public pcm_oct_m::pcm_td_neq = 1

Definition at line 273 of file pcm.F90.

◆ pcm_td_eom

integer, parameter, public pcm_oct_m::pcm_td_eom = 2

Definition at line 273 of file pcm.F90.

◆ pcm_calc_direct

integer, parameter, public pcm_oct_m::pcm_calc_direct = 1

Definition at line 278 of file pcm.F90.

◆ pcm_calc_poisson

integer, parameter, public pcm_oct_m::pcm_calc_poisson = 2

Definition at line 278 of file pcm.F90.

◆ pcm_vdw_optimized

integer, parameter pcm_oct_m::pcm_vdw_optimized = 1
private

Definition at line 282 of file pcm.F90.

◆ pcm_vdw_species

integer, parameter pcm_oct_m::pcm_vdw_species = 2
private

Definition at line 282 of file pcm.F90.

◆ n_tess_sphere

integer, parameter pcm_oct_m::n_tess_sphere = 60
private

minimum number of tesserae per sphere

Definition at line 286 of file pcm.F90.