99#include "./base/base_uses.f90"
104 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
124 cpassert(.NOT.
ASSOCIATED(section))
126 description=
"Parameter needed by LCAO DFT programs", &
127 n_keywords=3, n_subsections=4, repeats=.false.)
130 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
131 description=
"Name of the basis set file, may include a path", &
132 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
133 type_of_var=
lchar_t, repeats=.true., &
134 default_lc_val=
"BASIS_SET", n_var=1)
138 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
139 description=
"Name of the pseudo potential file, may include a path", &
140 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
141 default_lc_val=
"POTENTIAL")
145 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
146 variants=(/
"RESTART_FILE_NAME"/), &
147 description=
"Name of the wavefunction restart file, may include a path."// &
148 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
149 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
156 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
159 description=
"Requests a spin-polarized calculation using alpha "// &
160 "and beta orbitals, i.e. no spin restriction is applied", &
162 default_l_val=.false., &
163 lone_keyword_l_val=.true.)
168 variants=(/
"RESTRICTED_OPEN_KOHN_SHAM"/), &
169 description=
"Requests a restricted open Kohn-Sham calculation", &
171 default_l_val=.false., &
172 lone_keyword_l_val=.true.)
176 name=
"MULTIPLICITY", &
177 variants=(/
"MULTIP"/), &
178 description=
"Two times the total spin plus one. "// &
179 "Specify 3 for a triplet, 4 for a quartet, "// &
180 "and so on. Default is 1 (singlet) for an "// &
181 "even number and 2 (doublet) for an odd number "// &
183 usage=
"MULTIPLICITY 3", &
188 description=
"The total charge of the system", &
195 name=
"PLUS_U_METHOD", &
196 description=
"Method employed for the calculation of the DFT+U contribution", &
198 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES"), &
200 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
201 "(computationally expensive, since the diagonalization of the "// &
202 "overlap matrix is required, but possibly more robust than Mulliken)", &
203 "Method based on Mulliken population analysis using the net AO and "// &
204 "overlap populations (computationally cheap method)", &
205 "Method based on Mulliken gross orbital populations (GOP)"), &
208 usage=
"PLUS_U_METHOD Lowdin")
213 name=
"RELAX_MULTIPLICITY", &
214 variants=(/
"RELAX_MULTIP"/), &
215 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
216 "of alpha and beta MOs due to the initially "// &
217 "defined multiplicity, but rather follow the Aufbau principle. "// &
218 "A value greater than zero activates this option. "// &
219 "Larger tolerance values increase the probability for a spin flip. "// &
220 "This option is only valid for unrestricted (i.e. spin polarised) "// &
221 "Kohn-Sham (UKS) calculations.", &
222 usage=
"RELAX_MULTIPLICITY 0.00001", &
224 default_r_val=0.0_dp)
229 description=
"Read the grid size for subcell generation in the construction of "// &
230 "neighbor lists.", usage=
"SUBCELLS 1.5", &
231 n_var=1, default_r_val=2.0_dp)
236 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
237 "Options={small,medium,large,huge}", &
238 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
239 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=(/
"X",
"X"/))
244 name=
"SURFACE_DIPOLE_CORRECTION", &
245 variants=
s2a(
"SURFACE_DIPOLE", &
247 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
248 "the electrostatic potential with "// &
249 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
250 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
252 default_l_val=.false., &
253 lone_keyword_l_val=.true., &
259 name=
"SURF_DIP_DIR", &
260 description=
"Cartesian axis parallel to surface normal.", &
261 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
262 enum_i_vals=(/1, 2, 3/), &
263 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
266 usage=
"SURF_DIP_DIR Z")
271 name=
"SURF_DIP_POS", &
272 description=
"This keyword assigns an user defined position in Angstroms "// &
273 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
274 "The default value is -1.0_dp which appplies the correction at a position "// &
275 "that has minimum electron density on the grid.", &
276 usage=
"SURF_DIP_POS -1.0_dp", &
277 default_r_val=-1.0_dp)
282 name=
"SURF_DIP_SWITCH", &
283 description=
"WARNING: Experimental feature under development that will help the "// &
284 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
285 "surface dipole correction is switched off if the calculation does not converge in "// &
286 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
287 "The default value is .FALSE.", &
288 usage=
"SURF_DIP_SWITCH .TRUE.", &
289 default_l_val=.false., &
290 lone_keyword_l_val=.true.)
295 name=
"CORE_CORR_DIP", &
296 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
297 "correction is switched on, presence of this keyword will adjust electron "// &
298 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
299 "The default value is .FALSE.", &
300 usage=
"CORE_CORR_DIP .TRUE.", &
301 default_l_val=.false., &
302 lone_keyword_l_val=.true.)
308 description=
"Sort basis sets according to a certain criterion. ", &
309 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
311 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
313 usage=
"SORT_BASIS EXP")
330 CALL create_kg_section(subsection)
346 CALL create_admm_section(subsection)
362 CALL create_relativistic_section(subsection)
366 CALL create_sic_section(subsection)
370 CALL create_low_spin_roks_section(subsection)
407 CALL create_implicit_solv_section(subsection)
411 CALL create_density_fitting_section(subsection)
427 CALL create_rtp_section(subsection)
435 CALL create_sccs_section(subsection)
454 SUBROUTINE create_implicit_solv_section(section)
460 NULLIFY (keyword, subsection, print_key)
461 cpassert(.NOT.
ASSOCIATED(section))
463 description=
"Adds an implicit solvation model to the DFT calculation."// &
464 " Know also as Self Consistent Reaction Field.", &
465 n_keywords=0, n_subsections=0, repeats=.false.)
468 description=
"Value of the dielectric constant outside the sphere", &
469 usage=
"EPS_OUT <REAL>", &
470 default_r_val=1.0_dp)
475 description=
"Maximum value of L used in the multipole expansion", &
476 usage=
"LMAX <INTEGER>", &
481 CALL create_sphere_section(subsection)
486 description=
"Controls the printing basic info about the method", &
491 END SUBROUTINE create_implicit_solv_section
498 SUBROUTINE create_sphere_section(section)
504 NULLIFY (keyword, subsection)
505 cpassert(.NOT.
ASSOCIATED(section))
507 description=
"Treats the implicit solvent environment like a sphere", &
508 n_keywords=0, n_subsections=0, repeats=.false.)
511 description=
"Value of the spherical cavity in the dielectric medium", &
512 usage=
"RADIUS <REAL>", &
513 unit_str=
"angstrom", &
518 CALL create_center_section(subsection)
522 END SUBROUTINE create_sphere_section
529 SUBROUTINE create_center_section(section)
535 cpassert(.NOT.
ASSOCIATED(section))
537 description=
"Defines the center of the sphere.", &
538 n_keywords=0, n_subsections=0, repeats=.false.)
540 description=
"Coordinates of the center of the sphere", &
541 usage=
"XYZ <REAL> <REAL> <REAL>", &
542 unit_str=
"angstrom", &
543 type_of_var=
real_t, n_var=3)
548 description=
"Defines a list of atoms to define the center of the sphere", &
549 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
555 description=
"Defines the weight used to define the center of the sphere"// &
556 " (if ATOM_LIST is provided)", &
557 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
558 enum_c_vals=(/
"UNIT",
"MASS"/), &
565 description=
"Specify if the center of the sphere should be fixed or"// &
566 " allowed to move", &
567 usage=
"FIXED <LOGICAL>", &
568 default_l_val=.true.)
572 END SUBROUTINE create_center_section
578 SUBROUTINE create_admm_section(section)
584 cpassert(.NOT.
ASSOCIATED(section))
585 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
586 description=
"Parameters needed for the ADMM method.", &
587 n_keywords=1, n_subsections=1, repeats=.false., &
591 keyword, __location__, &
593 description=
"Type of ADMM (sort name) as refered in literature. "// &
594 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
595 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
596 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
597 "ADMM1 method from Guidon2010", &
598 "ADMM2 method from Guidon2010", &
599 "ADMMS method from Merlot2014", &
600 "ADMMP method from Merlot2014", &
601 "ADMMQ method from Merlot2014"), &
609 keyword, __location__, &
610 name=
"ADMM_PURIFICATION_METHOD", &
611 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
612 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
616 enum_desc=
s2a(
"Do not apply any purification", &
617 "Perform purification via general Cauchy representation", &
618 "Perform purification via Cauchy representation in occupied subspace", &
619 "Calculate MO derivatives via Cauchy representation by diagonalization", &
620 "Calculate MO derivatives via Cauchy representation by inversion", &
621 "Perform original McWeeny purification via matrix multiplications", &
622 "Do not apply any purification, works directly with density matrix"), &
628 keyword, __location__, &
630 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
631 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
632 "CHARGE_CONSTRAINED_PROJECTION"), &
635 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
636 "Construct auxiliary density from a blocked Fock matrix,"// &
637 " but use the original matrix for purification.", &
638 "Construct auxiliary density from a blocked Fock matrix.", &
639 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
645 keyword, __location__, &
646 name=
"EXCH_SCALING_MODEL", &
647 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
648 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
650 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
651 "Exchange scaling according to Merlot (2014)"), &
657 keyword, __location__, &
658 name=
"EXCH_CORRECTION_FUNC", &
659 description=
"Exchange functional which is used for the ADMM correction. "// &
660 "LibXC implementations require linking with LibXC", &
661 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
662 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
668 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
669 "Use PBEX functional for exchange correction.", &
670 "No correction: X(D)-x(d)-> 0.", &
671 "Use OPTX functional for exchange correction.", &
672 "Use Becke88X functional for exchange correction.", &
673 "Use PBEX functional (LibXC implementation) for exchange correction.", &
674 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
675 "Use OPTX functional (LibXC implementation) for exchange correction.", &
676 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
677 "Use Slater X functional (LibXC where possible) for exchange correction."), &
683 description=
"OPTX a1 coefficient", &
684 default_r_val=1.05151_dp)
688 description=
"OPTX a2 coefficient", &
689 default_r_val=1.43169_dp)
693 description=
"OPTX gamma coefficient", &
694 default_r_val=0.006_dp)
699 description=
"Specifies a list of atoms.", &
700 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
701 n_var=-1, type_of_var=
integer_t, repeats=.true.)
706 description=
"Define accuracy of DBCSR operations", &
707 usage=
"EPS_FILTER", default_r_val=0.0_dp)
711 END SUBROUTINE create_admm_section
717 SUBROUTINE create_density_fitting_section(section)
723 NULLIFY (keyword, print_key)
724 cpassert(.NOT.
ASSOCIATED(section))
725 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
726 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
727 "atomic point charges (DDAPC) charges)", &
728 n_keywords=7, n_subsections=0, repeats=.false., &
732 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
733 usage=
"NUM_GAUSS {integer}", &
734 n_var=1, type_of_var=
integer_t, default_i_val=3)
739 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
740 usage=
"PFACTOR {real}", &
741 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
746 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
747 " obtained with the progression factor.", &
748 usage=
"MIN_RADIUS {real}", &
749 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
754 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
755 " of this keyword disables all other keywords of this section.", &
756 usage=
"RADII {real} {real} .. {real}", &
757 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
762 description=
"Cutoff for charge fit in G-space.", &
763 usage=
"GCUT {real}", &
764 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
769 description=
"Controls the printing of basic information during the run", &
772 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
773 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
774 usage=
"CONDITION_NUMBER <LOGICAL>", &
775 default_l_val=.false., lone_keyword_l_val=.true.)
782 END SUBROUTINE create_density_fitting_section
789 SUBROUTINE create_relativistic_section(section)
794 cpassert(.NOT.
ASSOCIATED(section))
796 description=
"parameters needed and setup for relativistic calculations", &
797 n_keywords=5, n_subsections=0, repeats=.false.)
802 description=
"type of relativistic correction used", &
803 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
804 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
806 enum_desc=
s2a(
"Use no relativistic correction", &
807 "Use Douglas-Kroll-Hess method", &
813 description=
"The order of the DKH transformation ", &
814 usage=
"DKH_order 2", default_i_val=2)
819 description=
"Type of ZORA method to be used", &
821 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
822 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
823 "ZORA with atomic model potential", &
824 "Scaled ZORA with atomic model potential"), &
829 CALL keyword_create(keyword, __location__, name=
"transformation", &
830 description=
"Type of DKH transformation", &
831 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
832 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
834 enum_desc=
s2a(
"Use full matrix transformation", &
835 "Use transformation blocked by molecule", &
836 "Use atomic blocks"))
841 description=
"The minimal atomic number considered for atom transformation", &
842 usage=
"z_cutoff 50", default_i_val=1)
847 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
848 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
849 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
854 END SUBROUTINE create_relativistic_section
861 SUBROUTINE create_kg_section(section)
867 cpassert(.NOT.
ASSOCIATED(section))
869 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
870 " into molecular subunits", &
871 n_keywords=0, n_subsections=1, repeats=.false., &
874 NULLIFY (keyword, subsection, print_key)
886 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
887 description=
"Which algorithm to use for coloring.", &
888 usage=
"COLORING_METHOD GREEDY", &
890 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
891 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
892 "Greedy, fast coloring, less accurate"), &
898 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
899 usage=
"TNADD_METHOD ATOMIC", &
901 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
902 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
903 "Use full embedding potential with RI density fitting", &
904 "Use sum of atomic model potentials", &
905 "Do not use kinetic energy embedding"), &
910 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
911 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
912 usage=
"INTEGRATION_GRID MEDIUM", &
913 default_c_val=
"MEDIUM")
918 description=
"Print section", &
919 n_keywords=0, n_subsections=1, repeats=.false.)
922 description=
"Controls the printing of the neighbor lists.", &
923 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
926 name=
"SAB_ORB_FULL", &
927 description=
"Activates the printing of the full orbital "// &
928 "orbital neighbor lists.", &
929 default_l_val=.false., &
930 lone_keyword_l_val=.true.)
935 name=
"SAB_ORB_MOLECULAR", &
936 description=
"Activates the printing of the orbital "// &
937 "orbital neighbor lists for molecular subsets.", &
938 default_l_val=.false., &
939 lone_keyword_l_val=.true.)
945 description=
"Activates the printing of the orbital "// &
946 "atomic potential neighbor list.", &
947 default_l_val=.false., &
948 lone_keyword_l_val=.true.)
958 END SUBROUTINE create_kg_section
971 cpassert(.NOT.
ASSOCIATED(section))
973 description=
"This section is used to set up the BSSE calculation. "// &
974 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
975 "with the GHOST keyword specified, in addition to the other required fields.", &
976 n_keywords=3, n_subsections=1, repeats=.false.)
978 NULLIFY (keyword, subsection)
981 description=
"Specify the atom number belonging to this fragment.", &
982 n_keywords=2, n_subsections=0, repeats=.true.)
985 description=
"Specifies a list of atoms.", &
986 usage=
"LIST {integer} {integer} .. {integer}", &
987 repeats=.true., n_var=-1, type_of_var=
integer_t)
995 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
996 description=
"Specify additional parameters for the combinatorial configurations. "// &
997 "Use this section to manually specify charge and multiplicity of the fragments "// &
998 "and their combinations.", &
999 n_keywords=2, n_subsections=0, repeats=.true.)
1002 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1003 "1 specifies the respective fragment as used, 0 as unused.", &
1004 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1010 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1011 "1 specifies the respective fragment as real, 0 as ghost.", &
1012 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1018 name=
"MULTIPLICITY", &
1019 variants=(/
"MULTIP"/), &
1020 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1021 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1022 "even number and 2 (doublet) for an odd number of electrons.", &
1023 usage=
"MULTIPLICITY 3", &
1029 description=
"The total charge for each fragment.", &
1030 usage=
"CHARGE -1", &
1037 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1038 description=
"This section contains the energies of the fragments already"// &
1039 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1040 n_keywords=2, n_subsections=0, repeats=.true.)
1041 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1042 description=
"The energy computed for each fragment", repeats=.true., &
1043 usage=
"{REAL}", type_of_var=
real_t)
1049 CALL create_print_bsse_section(subsection)
1060 SUBROUTINE create_print_bsse_section(section)
1065 cpassert(.NOT.
ASSOCIATED(section))
1067 description=
"Section of possible print options in BSSE code.", &
1068 n_keywords=0, n_subsections=1, repeats=.false.)
1072 description=
"Controls the printing of information regarding the run.", &
1078 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1079 "By default the restart is updated after each configuration calculation is "// &
1086 END SUBROUTINE create_print_bsse_section
1093 SUBROUTINE create_rigpw_section(section)
1096 cpassert(.NOT.
ASSOCIATED(section))
1098 description=
"This section specifies optional parameters for RIGPW.", &
1099 n_keywords=1, n_subsections=0, repeats=.false.)
1126 END SUBROUTINE create_rigpw_section
1137 LOGICAL,
INTENT(in) :: create_subsections
1142 cpassert(.NOT.
ASSOCIATED(section))
1144 description=
"multigrid information", &
1145 n_keywords=5, n_subsections=1, repeats=.false.)
1148 description=
"The number of multigrids to use", &
1149 usage=
"ngrids 1", default_i_val=4)
1154 description=
"The cutoff of the finest grid level. Default value for "// &
1155 "SE or DFTB calculation is 1.0 [Ry].", &
1157 unit_str=
"Ry"), n_var=1, unit_str=
"Ry")
1161 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1162 description=
"Factor used to find the cutoff of the multigrids that"// &
1163 " where not given explicitly", &
1164 usage=
"progression_factor <integer>", default_r_val=3._dp)
1168 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1169 description=
"If the grids should be commensurate. If true overrides "// &
1170 "the progression factor and the cutoffs of the sub grids", &
1171 usage=
"commensurate", default_l_val=.false., &
1172 lone_keyword_l_val=.true.)
1177 description=
"If both rho and rho_gspace are needed ", &
1178 usage=
"realspace", default_l_val=.false., &
1179 lone_keyword_l_val=.true.)
1184 variants=(/
"RELATIVE_CUTOFF"/), &
1185 description=
"Determines the grid at which a Gaussian is mapped,"// &
1186 " giving the cutoff used for a gaussian with alpha=1."// &
1187 " A value 50+-10Ry might be required for highly accurate results,"// &
1188 " Or for simulations with a variable cell."// &
1189 " Versions prior to 2.3 used a default of 30Ry.", &
1190 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1195 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1196 description=
"Activate a manual setting of the multigrids", &
1197 usage=
"MULTIGRID_SET", default_l_val=.false.)
1202 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1203 description=
"Skips load balancing on distributed multigrids. "// &
1204 "Memory usage is O(p) so may be used "// &
1205 "for all but the very largest runs.", &
1206 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1207 default_l_val=.false., &
1208 lone_keyword_l_val=.true.)
1217 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1218 variants=(/
"CUTOFF_LIST"/), &
1219 description=
"List of cutoff values to set up multigrids manually", &
1220 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1227 IF (create_subsections)
THEN
1228 NULLIFY (subsection)
1233 NULLIFY (subsection)
1251 cpassert(.NOT.
ASSOCIATED(section))
1252 CALL section_create(section, __location__, name=
"interpolator", &
1253 description=
"kind of interpolation used between the multigrids", &
1254 n_keywords=5, n_subsections=0, repeats=.false.)
1256 NULLIFY (keyword, print_key)
1259 description=
"the interpolator to use", &
1260 usage=
"kind spline3", &
1262 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1268 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1269 description=
"if a non unrolled calculation is to be performed in parallel", &
1270 usage=
"safe_computation OFF", &
1271 default_l_val=.false., &
1272 lone_keyword_l_val=.true.)
1276 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1277 description=
"the approximate inverse to use to get the starting point"// &
1278 " for the linear solver of the spline3 methods", &
1279 usage=
"aint_precond copy", &
1281 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1282 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1289 description=
"The preconditioner used"// &
1290 " for the linear solver of the spline3 methods", &
1291 usage=
"PRECOND copy", &
1293 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1294 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1301 description=
"accuracy on the solution for spline3 the interpolators", &
1302 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1307 description=
"accuracy on the residual for spline3 the interpolators", &
1308 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1313 variants=(/
'maxiter'/), &
1314 description=
"the maximum number of iterations", &
1315 usage=
"max_iter 200", default_i_val=100)
1321 description=
"if convergence information about the linear solver"// &
1322 " of the spline methods should be printed", &
1324 each_iter_values=(/10/), filename=
"__STD_OUT__", &
1336 SUBROUTINE create_sic_section(section)
1341 cpassert(.NOT.
ASSOCIATED(section))
1343 description=
"parameters for the self interaction correction", &
1344 n_keywords=6, n_subsections=0, repeats=.false., &
1349 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1350 description=
"Scaling of the coulomb term in sic [experimental]", &
1351 usage=
"SIC_SCALING_A 0.5", &
1353 default_r_val=1.0_dp)
1357 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1358 description=
"Scaling of the xc term in sic [experimental]", &
1359 usage=
"SIC_SCALING_B 0.5", &
1361 default_r_val=1.0_dp)
1366 description=
"Method used to remove the self interaction", &
1367 usage=
"SIC_METHOD MAURI_US", &
1369 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1371 enum_desc=
s2a(
"Do not apply a sic correction", &
1372 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1373 " on the spin density / doublet unpaired orbital", &
1374 "Employ a (scaled) Perdew-Zunger expression"// &
1375 " on the spin density / doublet unpaired orbital", &
1376 "The average density correction", &
1377 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1383 description=
"Type of orbitals treated with the SIC", &
1384 usage=
"ORBITAL_SET ALL", &
1386 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1387 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1388 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1393 END SUBROUTINE create_sic_section
1400 SUBROUTINE create_low_spin_roks_section(section)
1405 cpassert(.NOT.
ASSOCIATED(section))
1406 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1407 description=
"Specify the details of the low spin ROKS method. "// &
1408 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1409 " with a energy scaling factor, and a prescription of the spin state.", &
1410 n_keywords=6, n_subsections=0, repeats=.false.)
1413 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1414 description=
"The scaling factors for each term added to the total energy. "// &
1415 "This list should contain one number for each term added to the total energy.", &
1416 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1417 n_var=-1, type_of_var=
real_t, repeats=.false.)
1421 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1422 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1423 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1424 usage=
"SPIN_CONFIGURATION 1 2", &
1425 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1429 END SUBROUTINE create_low_spin_roks_section
1435 SUBROUTINE create_rtp_section(section)
1439 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1442 cpassert(.NOT.
ASSOCIATED(section))
1443 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1444 description=
"Parameters needed to set up the real time propagation"// &
1445 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1446 n_keywords=4, n_subsections=4, repeats=.false., &
1450 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1451 usage=
"MAX_ITER 10", &
1457 description=
"Convergence criterion for the self consistent propagator loop.", &
1458 usage=
"EPS_ITER 1.0E-5", &
1459 default_r_val=1.0e-7_dp)
1464 description=
"Speciefies how many steps will be used for extrapolation. "// &
1465 "One will be always used which is means X(t+dt)=X(t)", &
1466 usage=
"ASPC_ORDER 3", &
1472 description=
"Which method should be used to calculate the exponential"// &
1473 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1474 "and ARNOLDI otherwise.", &
1475 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1476 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1478 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1479 " with a taylor expansion of the exponential.", &
1480 "uses scaling and squaring together with the pade approximation", &
1481 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1482 "combination with Crank Nicholson or density propagation", &
1483 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1484 " only works for density propagation", &
1485 "Uses diagonalisation of the exponent matrices to determine the "// &
1486 "matrix exponential exactly. Only implemented for GWBSE."))
1490 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1491 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1492 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1493 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1494 usage=
"DENSITY_PROPAGATION .TRUE.", &
1495 default_l_val=.false., lone_keyword_l_val=.true.)
1499 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1500 description=
"Speciefies how many iteration steps will be done without "// &
1501 "a check for self consistency. Can save some time in big calculations.", &
1502 usage=
"SC_CHECK_START 3", &
1507 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1508 description=
"Accuracy for the taylor and pade approximation. "// &
1509 "This is only an upper bound bound since the norm used for the guess "// &
1510 "is an upper bound for the needed one.", &
1511 usage=
"EXP_ACCURACY 1.0E-6", &
1512 default_r_val=1.0e-9_dp)
1517 description=
"Which propagator should be used for the orbitals", &
1518 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1519 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1521 enum_desc=
s2a(
"enforced time reversible symmetry", &
1522 "Crank Nicholson propagator", &
1523 "Exponential midpoint propagator"))
1528 description=
"Controls the initial WFN used for propagation. "// &
1529 "Note that some energy contributions may not be "// &
1530 "initialized in the restart cases, for instance "// &
1531 "electronic entropy energy in the case of smearing.", &
1532 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1533 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1535 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1536 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1537 " if electronic constraints or restraints are used in the previous calculation, "// &
1538 "since these do not work in the rtp scheme.", &
1539 "use the wavefunction of a real time propagation/ehrenfest run"))
1543 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1544 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1545 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1546 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1547 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1548 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1549 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1550 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1551 default_l_val=.false., lone_keyword_l_val=.true.)
1555 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1556 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1557 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1558 usage=
"APPLY_DELTA_PULSE", &
1559 default_l_val=.false., lone_keyword_l_val=.true.)
1563 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1564 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1565 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1566 usage=
"APPLY_DELTA_PULSE_MAG", &
1567 default_l_val=.false., lone_keyword_l_val=.true.)
1571 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1572 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1573 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1574 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1575 usage=
"VELOCITY_GAUGE T", &
1576 default_l_val=.false., lone_keyword_l_val=.true.)
1581 description=
"Define gauge origin for magnetic perturbation", &
1582 usage=
"GAUGE_ORIG COM", &
1583 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1584 enum_desc=
s2a(
"Use Center of Mass", &
1585 "Use Center of Atomic Charges", &
1586 "Use User Defined Point (Keyword:REF_POINT)", &
1587 "Use Origin of Coordinate System"), &
1596 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1597 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1598 usage=
"GAUGE_ORIG_MANUAL x y z", &
1600 n_var=3, default_r_vals=(/0._dp, 0._dp, 0._dp/), &
1607 description=
"apply gauge transformed non-local potential term"// &
1608 " only affects VELOCITY_GAUGE=.TRUE.", &
1609 usage=
"VG_COM_NL T", &
1610 default_l_val=.true., lone_keyword_l_val=.true.)
1615 description=
"Include non-local commutator for periodic delta pulse."// &
1616 " only affects PERIODIC=.TRUE.", &
1618 default_l_val=.true., lone_keyword_l_val=.true.)
1623 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1624 " This corresponds to a 1st order perturbation in the length gauge."// &
1625 " Note that this is NOT compatible with a periodic calculation!"// &
1626 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1627 usage=
"LEN_REP T", &
1628 default_l_val=.false., lone_keyword_l_val=.true.)
1633 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1634 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1635 " the initial wfn with the velocity operator as perturbation."// &
1636 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1637 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1638 " and not for restarts (RT_RESTART).", &
1640 default_l_val=.true., lone_keyword_l_val=.true.)
1644 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1645 description=
"Direction of the applied electric field. The k vector is given as"// &
1646 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1647 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1648 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1649 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=(/1, 0, 0/), &
1654 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1655 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1656 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1657 " applied electric field in atomic units.", &
1658 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1662 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1663 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1664 " of the integrals, balanced with respect to the in core steps.", &
1665 usage=
"HFX_BALANCE_IN_CORE", &
1666 default_l_val=.false., lone_keyword_l_val=.true.)
1670 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1671 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1672 " step in density propagation", &
1673 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1678 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1679 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1680 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1681 " reduced for these calculations.", &
1682 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1687 description=
"Threshold after which McWeeny is terminated", &
1688 usage=
"MCWEENY_EPS 0.00001", &
1689 default_r_val=0.0_dp)
1693 NULLIFY (print_section)
1695 description=
"Section of possible print options for an RTP runs", &
1700 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1706 description=
"Controls the dumping of the MO restart file during rtp. "// &
1707 "By default keeps a short history of three restarts. "// &
1708 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1709 "density matrix.", &
1711 each_iter_names=
s2a(
"MD"), each_iter_values=(/20/), &
1713 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1714 description=
"Specifies the maximum number of backup copies.", &
1715 usage=
"BACKUP_COPIES {int}", &
1723 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1724 "In density propagation it dumps the density matrix instead", &
1726 each_iter_names=
s2a(
"MD"), &
1727 each_iter_values=(/500/), &
1729 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1730 description=
"Specifies the maximum number of backup copies.", &
1731 usage=
"BACKUP_COPIES {int}", &
1739 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1742 each_iter_names=
s2a(
"MD"), &
1743 each_iter_values=(/1/), &
1744 filename=
"applied_field")
1753 description=
"Print the current during an EMD simulation to cube files.", &
1755 each_iter_names=
s2a(
"MD"), &
1756 each_iter_values=(/20/), &
1758 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1759 description=
"Specifies the maximum number of backup copies.", &
1760 usage=
"BACKUP_COPIES {int}", &
1765 description=
"The stride (X,Y,Z) used to write the cube file "// &
1766 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1767 " 1 number valid for all components.", &
1768 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=
integer_t)
1777 description=
"Prints the density matrix at iterations in clear text to a file", &
1779 each_iter_names=
s2a(
"MD"), &
1780 each_iter_values=(/1/), &
1786 description=
"Prints the time-dependent electronic moments at "// &
1787 "iterations in clear text to a file.", &
1789 each_iter_names=
s2a(
"MD"), &
1790 each_iter_values=(/1/), &
1791 filename=
"__STD_OUT__")
1796 description=
"Prints the calculated Fourier transform of "// &
1797 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1798 "can be supplied with starting time.", &
1800 each_iter_names=
s2a(
"MD"), &
1801 each_iter_values=(/1/), &
1802 filename=
"MOMENTS_FT")
1807 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1808 "to a specified file. The tensor is calculated as ratio of "// &
1809 "Fourier transform of the dipole "// &
1810 "moment trace and Fourier transform of the applied field "// &
1811 "(for delta kick, constant real field is applied.", &
1813 each_iter_names=
s2a(
"MD"), &
1814 each_iter_values=(/1/), &
1815 filename=
"POLARIZABILITY")
1817 description=
"Specifies the element of polarizability which is to be printed out "// &
1818 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1819 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1820 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1821 type_of_var=
integer_t, default_i_vals=(/1, 1/), n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1828 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1829 "the Total Energy", &
1831 each_iter_names=
s2a(
"MD"), &
1832 each_iter_values=(/1/), &
1840 NULLIFY (subsection)
1841 CALL create_rtbse_section(subsection)
1845 END SUBROUTINE create_rtp_section
1851 SUBROUTINE create_rtbse_section(section)
1857 cpassert(.NOT.
ASSOCIATED(section))
1860 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1861 "Note that running RTBSE requires previous low-scaling "// &
1862 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1863 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1864 "deallocation errors.", &
1868 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1869 description=
"Which method is used for the time propagation of electronic structure. "// &
1870 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
1871 "Green's function instead of density matrix/molecular orbitals.", &
1872 usage=
"&RTBSE TDDFT", &
1875 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
1877 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
1878 "Use RT-BSE for Green's function propagation"))
1883 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
1884 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
1885 " in the Green's propagator.", &
1886 usage=
"RTBSE_HAMILTONIAN G0W0", &
1888 enum_c_vals=
s2a(
"KS",
"G0W0"), &
1890 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
1891 "Use G0W0 Hamiltonian for Green's function propagation"))
1896 description=
"Numerical Fourier transform (required for calculation of "// &
1897 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
1898 "when the final values are far away from zero. "// &
1899 "This keyword controls the exponential damping in the Fourier transform "// &
1900 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
1901 "For negative values (the default), calculates the damping at the run time so that the last point "// &
1902 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
1903 "the moments trace is reduced by factor of e^(-1).", &
1910 description=
"The starting time from which damping is applied and from which on the trace is "// &
1911 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
1912 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
1913 "one can specify the center of the pulse as the starting point.", &
1916 default_r_val=0.0_dp)
1920 END SUBROUTINE create_rtbse_section
1930 SUBROUTINE create_sccs_section(section)
1937 cpassert(.NOT.
ASSOCIATED(section))
1941 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
1950 name=
"_SECTION_PARAMETERS_", &
1951 description=
"Controls the activation of the SCCS section", &
1953 default_l_val=.false., &
1954 lone_keyword_l_val=.true.)
1960 description=
"Solvent specific tunable parameter for the calculation of "// &
1961 "the repulsion term $G^\text{rep} = \alpha S$ "// &
1962 "where $S$ is the (quantum) surface of the cavity", &
1966 default_r_val=0.0_dp, &
1973 description=
"Solvent specific tunable parameter for the calculation of "// &
1974 "the dispersion term $G^\text{dis} = \beta V$ "// &
1975 "where $V$ is the (quantum) volume of the cavity", &
1979 default_r_val=0.0_dp, &
1986 description=
"Numerical increment for the calculation of the (quantum) "// &
1987 "surface of the solute cavity", &
1991 default_r_val=2.0e-5_dp)
1996 name=
"DERIVATIVE_METHOD", &
1997 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
1998 usage=
"DERIVATIVE_METHOD cd5", &
2002 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2007 enum_desc=
s2a(
"Fast Fourier transformation", &
2008 "3-point stencil central differences", &
2009 "5-point stencil central differences", &
2010 "7-point stencil central differences"))
2015 name=
"RELATIVE_PERMITTIVITY", &
2016 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2017 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2021 default_r_val=80.0_dp, &
2022 usage=
"RELATIVE_PERMITTIVITY 78.36")
2028 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2029 description=
"Tolerance for the convergence of the polarisation density, "// &
2030 "i.e. requested accuracy for the SCCS iteration cycle", &
2034 default_r_val=1.0e-6_dp, &
2035 usage=
"EPS_ITER 1.0E-7")
2041 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2042 "is converged to this threshold value", &
2046 default_r_val=0.5_dp, &
2047 usage=
"EPS_SCF 1.0E-2")
2053 variants=
s2a(
"SURFACE_TENSION"), &
2054 description=
"Surface tension of the solvent used for the calculation of "// &
2055 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2056 "where $S$ is the (quantum) surface of the cavity", &
2060 default_r_val=0.0_dp, &
2067 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2068 "within the given tolerance", &
2072 default_i_val=100, &
2073 usage=
"MAX_ITER 50")
2079 description=
"Method used for the smoothing of the dielectric function", &
2080 usage=
"METHOD Fattebert-Gygi", &
2082 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2084 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2085 "Smoothing function proposed by Fattebert and Gygi"))
2091 variants=(/
"ETA"/), &
2092 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2096 default_r_val=0.6_dp, &
2101 NULLIFY (subsection)
2105 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2106 "Andreussi et al.", &
2114 description=
"Maximum density value used for the smoothing of the dielectric function", &
2118 default_r_val=0.0035_dp, &
2119 usage=
"RHO_MAX 0.01")
2125 description=
"Minimum density value used for the smoothing of the dielectric function", &
2129 default_r_val=0.0001_dp, &
2130 usage=
"RHO_MIN 0.0003")
2138 name=
"FATTEBERT-GYGI", &
2139 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2140 "Fattebert and Gygi", &
2148 description=
"Parameter β changes the width of the interface solute-solvent", &
2152 default_r_val=1.7_dp, &
2159 variants=(/
"RHO0"/), &
2160 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2161 "of the interface solute-solvent", &
2165 default_r_val=0.0006_dp, &
2166 usage=
"RHO_ZERO 0.0004")
2173 END SUBROUTINE create_sccs_section
integer, parameter, public basis_sort_zet
integer, parameter, public basis_sort_default
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public vandevondele2005b
integer, save, public blochl1995
integer, save, public guidon2010
integer, save, public bengtsson1999
integer, save, public kunert2003
integer, save, public yin2017
integer, save, public avezac2005
integer, save, public andreussi2012
integer, save, public iannuzzi2006
integer, save, public fattebert2002
integer, save, public andermatt2016
integer, save, public merlot2014
integer, save, public perdew1981
integer, save, public brelaz1979
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public low_print_level
integer, parameter, public medium_print_level
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
integer, parameter, public silent_print_level
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
utils to manipulate splines on the regular grid of a pw
integer, parameter, public pw_interp
integer, parameter, public spline3_nopbc_interp
integer, parameter, public spline3_pbc_interp
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Defines the basic variable types.
integer, parameter, public dp
Definition of physical constants:
real(kind=dp), parameter, public femtoseconds
different utils that are useful to manipulate splines on the regular grid of a pw
integer, parameter, public precond_spl3_3
integer, parameter, public precond_spl3_aint
integer, parameter, public no_precond
integer, parameter, public precond_spl3_2
integer, parameter, public precond_spl3_aint2
integer, parameter, public precond_spl3_1
Utilities for string manipulations.