100#include "./base/base_uses.f90"
105 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
125 cpassert(.NOT.
ASSOCIATED(section))
127 description=
"Parameter needed by LCAO DFT programs", &
128 n_keywords=3, n_subsections=4, repeats=.false.)
131 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
132 description=
"Name of the basis set file, may include a path", &
133 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
134 type_of_var=
lchar_t, repeats=.true., &
135 default_lc_val=
"BASIS_SET", n_var=1)
139 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
140 description=
"Name of the pseudo potential file, may include a path", &
141 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
142 default_lc_val=
"POTENTIAL")
146 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
147 variants=(/
"RESTART_FILE_NAME"/), &
148 description=
"Name of the wavefunction restart file, may include a path."// &
149 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
150 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
157 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
160 description=
"Requests a spin-polarized calculation using alpha "// &
161 "and beta orbitals, i.e. no spin restriction is applied", &
163 default_l_val=.false., &
164 lone_keyword_l_val=.true.)
169 variants=(/
"RESTRICTED_OPEN_KOHN_SHAM"/), &
170 description=
"Requests a restricted open Kohn-Sham calculation", &
172 default_l_val=.false., &
173 lone_keyword_l_val=.true.)
177 name=
"MULTIPLICITY", &
178 variants=(/
"MULTIP"/), &
179 description=
"Two times the total spin plus one. "// &
180 "Specify 3 for a triplet, 4 for a quartet, "// &
181 "and so on. Default is 1 (singlet) for an "// &
182 "even number and 2 (doublet) for an odd number "// &
184 usage=
"MULTIPLICITY 3", &
189 description=
"The total charge of the system", &
196 name=
"PLUS_U_METHOD", &
197 description=
"Method employed for the calculation of the DFT+U contribution", &
199 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES"), &
201 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
202 "(computationally expensive, since the diagonalization of the "// &
203 "overlap matrix is required, but possibly more robust than Mulliken)", &
204 "Method based on Mulliken population analysis using the net AO and "// &
205 "overlap populations (computationally cheap method)", &
206 "Method based on Mulliken gross orbital populations (GOP)"), &
209 usage=
"PLUS_U_METHOD Lowdin")
214 name=
"RELAX_MULTIPLICITY", &
215 variants=(/
"RELAX_MULTIP"/), &
216 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
217 "of alpha and beta MOs due to the initially "// &
218 "defined multiplicity, but rather follow the Aufbau principle. "// &
219 "A value greater than zero activates this option. "// &
220 "Larger tolerance values increase the probability for a spin flip. "// &
221 "This option is only valid for unrestricted (i.e. spin polarised) "// &
222 "Kohn-Sham (UKS) calculations.", &
223 usage=
"RELAX_MULTIPLICITY 0.00001", &
225 default_r_val=0.0_dp)
230 description=
"Read the grid size for subcell generation in the construction of "// &
231 "neighbor lists.", usage=
"SUBCELLS 1.5", &
232 n_var=1, default_r_val=2.0_dp)
237 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
238 "Options={small,medium,large,huge}", &
239 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
240 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=(/
"X",
"X"/))
245 name=
"SURFACE_DIPOLE_CORRECTION", &
246 variants=
s2a(
"SURFACE_DIPOLE", &
248 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
249 "the electrostatic potential with "// &
250 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
251 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
253 default_l_val=.false., &
254 lone_keyword_l_val=.true., &
260 name=
"SURF_DIP_DIR", &
261 description=
"Cartesian axis parallel to surface normal.", &
262 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
263 enum_i_vals=(/1, 2, 3/), &
264 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
267 usage=
"SURF_DIP_DIR Z")
272 name=
"SURF_DIP_POS", &
273 description=
"This keyword assigns an user defined position in Angstroms "// &
274 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
275 "The default value is -1.0_dp which appplies the correction at a position "// &
276 "that has minimum electron density on the grid.", &
277 usage=
"SURF_DIP_POS -1.0_dp", &
278 default_r_val=-1.0_dp)
283 name=
"SURF_DIP_SWITCH", &
284 description=
"WARNING: Experimental feature under development that will help the "// &
285 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
286 "surface dipole correction is switched off if the calculation does not converge in "// &
287 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
288 "The default value is .FALSE.", &
289 usage=
"SURF_DIP_SWITCH .TRUE.", &
290 default_l_val=.false., &
291 lone_keyword_l_val=.true.)
296 name=
"CORE_CORR_DIP", &
297 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
298 "correction is switched on, presence of this keyword will adjust electron "// &
299 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
300 "The default value is .FALSE.", &
301 usage=
"CORE_CORR_DIP .TRUE.", &
302 default_l_val=.false., &
303 lone_keyword_l_val=.true.)
309 description=
"Sort basis sets according to a certain criterion. ", &
310 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
312 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
314 usage=
"SORT_BASIS EXP")
331 CALL create_kg_section(subsection)
347 CALL create_admm_section(subsection)
363 CALL create_relativistic_section(subsection)
367 CALL create_sic_section(subsection)
371 CALL create_low_spin_roks_section(subsection)
408 CALL create_implicit_solv_section(subsection)
412 CALL create_density_fitting_section(subsection)
428 CALL create_rtp_section(subsection)
436 CALL create_sccs_section(subsection)
455 SUBROUTINE create_implicit_solv_section(section)
461 NULLIFY (keyword, subsection, print_key)
462 cpassert(.NOT.
ASSOCIATED(section))
464 description=
"Adds an implicit solvation model to the DFT calculation."// &
465 " Know also as Self Consistent Reaction Field.", &
466 n_keywords=0, n_subsections=0, repeats=.false.)
469 description=
"Value of the dielectric constant outside the sphere", &
470 usage=
"EPS_OUT <REAL>", &
471 default_r_val=1.0_dp)
476 description=
"Maximum value of L used in the multipole expansion", &
477 usage=
"LMAX <INTEGER>", &
482 CALL create_sphere_section(subsection)
487 description=
"Controls the printing basic info about the method", &
492 END SUBROUTINE create_implicit_solv_section
499 SUBROUTINE create_sphere_section(section)
505 NULLIFY (keyword, subsection)
506 cpassert(.NOT.
ASSOCIATED(section))
508 description=
"Treats the implicit solvent environment like a sphere", &
509 n_keywords=0, n_subsections=0, repeats=.false.)
512 description=
"Value of the spherical cavity in the dielectric medium", &
513 usage=
"RADIUS <REAL>", &
514 unit_str=
"angstrom", &
519 CALL create_center_section(subsection)
523 END SUBROUTINE create_sphere_section
530 SUBROUTINE create_center_section(section)
536 cpassert(.NOT.
ASSOCIATED(section))
538 description=
"Defines the center of the sphere.", &
539 n_keywords=0, n_subsections=0, repeats=.false.)
541 description=
"Coordinates of the center of the sphere", &
542 usage=
"XYZ <REAL> <REAL> <REAL>", &
543 unit_str=
"angstrom", &
544 type_of_var=
real_t, n_var=3)
549 description=
"Defines a list of atoms to define the center of the sphere", &
550 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
556 description=
"Defines the weight used to define the center of the sphere"// &
557 " (if ATOM_LIST is provided)", &
558 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
559 enum_c_vals=(/
"UNIT",
"MASS"/), &
566 description=
"Specify if the center of the sphere should be fixed or"// &
567 " allowed to move", &
568 usage=
"FIXED <LOGICAL>", &
569 default_l_val=.true.)
573 END SUBROUTINE create_center_section
579 SUBROUTINE create_admm_section(section)
585 cpassert(.NOT.
ASSOCIATED(section))
586 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
587 description=
"Parameters needed for the ADMM method.", &
588 n_keywords=1, n_subsections=1, repeats=.false., &
592 keyword, __location__, &
594 description=
"Type of ADMM (sort name) as refered in literature. "// &
595 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
596 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
597 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
598 "ADMM1 method from Guidon2010", &
599 "ADMM2 method from Guidon2010", &
600 "ADMMS method from Merlot2014", &
601 "ADMMP method from Merlot2014", &
602 "ADMMQ method from Merlot2014"), &
610 keyword, __location__, &
611 name=
"ADMM_PURIFICATION_METHOD", &
612 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
613 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
617 enum_desc=
s2a(
"Do not apply any purification", &
618 "Perform purification via general Cauchy representation", &
619 "Perform purification via Cauchy representation in occupied subspace", &
620 "Calculate MO derivatives via Cauchy representation by diagonalization", &
621 "Calculate MO derivatives via Cauchy representation by inversion", &
622 "Perform original McWeeny purification via matrix multiplications", &
623 "Do not apply any purification, works directly with density matrix"), &
629 keyword, __location__, &
631 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
632 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
633 "CHARGE_CONSTRAINED_PROJECTION"), &
636 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
637 "Construct auxiliary density from a blocked Fock matrix,"// &
638 " but use the original matrix for purification.", &
639 "Construct auxiliary density from a blocked Fock matrix.", &
640 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
646 keyword, __location__, &
647 name=
"EXCH_SCALING_MODEL", &
648 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
649 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
651 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
652 "Exchange scaling according to Merlot (2014)"), &
658 keyword, __location__, &
659 name=
"EXCH_CORRECTION_FUNC", &
660 description=
"Exchange functional which is used for the ADMM correction. "// &
661 "LibXC implementations require linking with LibXC", &
662 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
663 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
669 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
670 "Use PBEX functional for exchange correction.", &
671 "No correction: X(D)-x(d)-> 0.", &
672 "Use OPTX functional for exchange correction.", &
673 "Use Becke88X functional for exchange correction.", &
674 "Use PBEX functional (LibXC implementation) for exchange correction.", &
675 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
676 "Use OPTX functional (LibXC implementation) for exchange correction.", &
677 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
678 "Use Slater X functional (LibXC where possible) for exchange correction."), &
684 description=
"OPTX a1 coefficient", &
685 default_r_val=1.05151_dp)
689 description=
"OPTX a2 coefficient", &
690 default_r_val=1.43169_dp)
694 description=
"OPTX gamma coefficient", &
695 default_r_val=0.006_dp)
700 description=
"Specifies a list of atoms.", &
701 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
702 n_var=-1, type_of_var=
integer_t, repeats=.true.)
707 description=
"Define accuracy of DBCSR operations", &
708 usage=
"EPS_FILTER", default_r_val=0.0_dp)
712 END SUBROUTINE create_admm_section
718 SUBROUTINE create_density_fitting_section(section)
724 NULLIFY (keyword, print_key)
725 cpassert(.NOT.
ASSOCIATED(section))
726 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
727 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
728 "atomic point charges (DDAPC) charges)", &
729 n_keywords=7, n_subsections=0, repeats=.false., &
733 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
734 usage=
"NUM_GAUSS {integer}", &
735 n_var=1, type_of_var=
integer_t, default_i_val=3)
740 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
741 usage=
"PFACTOR {real}", &
742 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
747 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
748 " obtained with the progression factor.", &
749 usage=
"MIN_RADIUS {real}", &
750 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
755 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
756 " of this keyword disables all other keywords of this section.", &
757 usage=
"RADII {real} {real} .. {real}", &
758 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
763 description=
"Cutoff for charge fit in G-space.", &
764 usage=
"GCUT {real}", &
765 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
770 description=
"Controls the printing of basic information during the run", &
773 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
774 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
775 usage=
"CONDITION_NUMBER <LOGICAL>", &
776 default_l_val=.false., lone_keyword_l_val=.true.)
783 END SUBROUTINE create_density_fitting_section
790 SUBROUTINE create_relativistic_section(section)
795 cpassert(.NOT.
ASSOCIATED(section))
797 description=
"parameters needed and setup for relativistic calculations", &
798 n_keywords=5, n_subsections=0, repeats=.false.)
803 description=
"type of relativistic correction used", &
804 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
805 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
807 enum_desc=
s2a(
"Use no relativistic correction", &
808 "Use Douglas-Kroll-Hess method", &
814 description=
"The order of the DKH transformation ", &
815 usage=
"DKH_order 2", default_i_val=2)
820 description=
"Type of ZORA method to be used", &
822 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
823 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
824 "ZORA with atomic model potential", &
825 "Scaled ZORA with atomic model potential"), &
830 CALL keyword_create(keyword, __location__, name=
"transformation", &
831 description=
"Type of DKH transformation", &
832 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
833 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
835 enum_desc=
s2a(
"Use full matrix transformation", &
836 "Use transformation blocked by molecule", &
837 "Use atomic blocks"))
842 description=
"The minimal atomic number considered for atom transformation", &
843 usage=
"z_cutoff 50", default_i_val=1)
848 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
849 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
850 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
855 END SUBROUTINE create_relativistic_section
862 SUBROUTINE create_kg_section(section)
868 cpassert(.NOT.
ASSOCIATED(section))
870 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
871 " into molecular subunits", &
872 n_keywords=0, n_subsections=1, repeats=.false., &
875 NULLIFY (keyword, subsection, print_key)
887 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
888 description=
"Which algorithm to use for coloring.", &
889 usage=
"COLORING_METHOD GREEDY", &
891 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
892 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
893 "Greedy, fast coloring, less accurate"), &
899 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
900 usage=
"TNADD_METHOD ATOMIC", &
902 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
903 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
904 "Use full embedding potential with RI density fitting", &
905 "Use sum of atomic model potentials", &
906 "Do not use kinetic energy embedding"), &
911 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
912 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
913 usage=
"INTEGRATION_GRID MEDIUM", &
914 default_c_val=
"MEDIUM")
919 description=
"Print section", &
920 n_keywords=0, n_subsections=1, repeats=.false.)
923 description=
"Controls the printing of the neighbor lists.", &
924 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
927 name=
"SAB_ORB_FULL", &
928 description=
"Activates the printing of the full orbital "// &
929 "orbital neighbor lists.", &
930 default_l_val=.false., &
931 lone_keyword_l_val=.true.)
936 name=
"SAB_ORB_MOLECULAR", &
937 description=
"Activates the printing of the orbital "// &
938 "orbital neighbor lists for molecular subsets.", &
939 default_l_val=.false., &
940 lone_keyword_l_val=.true.)
946 description=
"Activates the printing of the orbital "// &
947 "atomic potential neighbor list.", &
948 default_l_val=.false., &
949 lone_keyword_l_val=.true.)
959 END SUBROUTINE create_kg_section
972 cpassert(.NOT.
ASSOCIATED(section))
974 description=
"This section is used to set up the BSSE calculation. "// &
975 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
976 "with the GHOST keyword specified, in addition to the other required fields.", &
977 n_keywords=3, n_subsections=1, repeats=.false.)
979 NULLIFY (keyword, subsection)
982 description=
"Specify the atom number belonging to this fragment.", &
983 n_keywords=2, n_subsections=0, repeats=.true.)
986 description=
"Specifies a list of atoms.", &
987 usage=
"LIST {integer} {integer} .. {integer}", &
988 repeats=.true., n_var=-1, type_of_var=
integer_t)
996 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
997 description=
"Specify additional parameters for the combinatorial configurations. "// &
998 "Use this section to manually specify charge and multiplicity of the fragments "// &
999 "and their combinations.", &
1000 n_keywords=2, n_subsections=0, repeats=.true.)
1003 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1004 "1 specifies the respective fragment as used, 0 as unused.", &
1005 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1011 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1012 "1 specifies the respective fragment as real, 0 as ghost.", &
1013 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1019 name=
"MULTIPLICITY", &
1020 variants=(/
"MULTIP"/), &
1021 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1022 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1023 "even number and 2 (doublet) for an odd number of electrons.", &
1024 usage=
"MULTIPLICITY 3", &
1030 description=
"The total charge for each fragment.", &
1031 usage=
"CHARGE -1", &
1038 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1039 description=
"This section contains the energies of the fragments already"// &
1040 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1041 n_keywords=2, n_subsections=0, repeats=.true.)
1042 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1043 description=
"The energy computed for each fragment", repeats=.true., &
1044 usage=
"{REAL}", type_of_var=
real_t)
1050 CALL create_print_bsse_section(subsection)
1061 SUBROUTINE create_print_bsse_section(section)
1066 cpassert(.NOT.
ASSOCIATED(section))
1068 description=
"Section of possible print options in BSSE code.", &
1069 n_keywords=0, n_subsections=1, repeats=.false.)
1073 description=
"Controls the printing of information regarding the run.", &
1079 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1080 "By default the restart is updated after each configuration calculation is "// &
1087 END SUBROUTINE create_print_bsse_section
1094 SUBROUTINE create_rigpw_section(section)
1097 cpassert(.NOT.
ASSOCIATED(section))
1099 description=
"This section specifies optional parameters for RIGPW.", &
1100 n_keywords=1, n_subsections=0, repeats=.false.)
1127 END SUBROUTINE create_rigpw_section
1138 LOGICAL,
INTENT(in) :: create_subsections
1143 cpassert(.NOT.
ASSOCIATED(section))
1145 description=
"multigrid information", &
1146 n_keywords=5, n_subsections=1, repeats=.false.)
1149 description=
"The number of multigrids to use", &
1150 usage=
"ngrids 1", default_i_val=4)
1155 description=
"The cutoff of the finest grid level. Default value for "// &
1156 "SE or DFTB calculation is 1.0 [Ry].", &
1158 unit_str=
"Ry"), n_var=1, unit_str=
"Ry")
1162 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1163 description=
"Factor used to find the cutoff of the multigrids that"// &
1164 " where not given explicitly", &
1165 usage=
"progression_factor <integer>", default_r_val=3._dp)
1169 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1170 description=
"If the grids should be commensurate. If true overrides "// &
1171 "the progression factor and the cutoffs of the sub grids", &
1172 usage=
"commensurate", default_l_val=.false., &
1173 lone_keyword_l_val=.true.)
1178 description=
"If both rho and rho_gspace are needed ", &
1179 usage=
"realspace", default_l_val=.false., &
1180 lone_keyword_l_val=.true.)
1185 variants=(/
"RELATIVE_CUTOFF"/), &
1186 description=
"Determines the grid at which a Gaussian is mapped,"// &
1187 " giving the cutoff used for a gaussian with alpha=1."// &
1188 " A value 50+-10Ry might be required for highly accurate results,"// &
1189 " Or for simulations with a variable cell."// &
1190 " Versions prior to 2.3 used a default of 30Ry.", &
1191 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1196 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1197 description=
"Activate a manual setting of the multigrids", &
1198 usage=
"MULTIGRID_SET", default_l_val=.false.)
1203 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1204 description=
"Skips load balancing on distributed multigrids. "// &
1205 "Memory usage is O(p) so may be used "// &
1206 "for all but the very largest runs.", &
1207 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1208 default_l_val=.false., &
1209 lone_keyword_l_val=.true.)
1218 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1219 variants=(/
"CUTOFF_LIST"/), &
1220 description=
"List of cutoff values to set up multigrids manually", &
1221 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1228 IF (create_subsections)
THEN
1229 NULLIFY (subsection)
1234 NULLIFY (subsection)
1252 cpassert(.NOT.
ASSOCIATED(section))
1253 CALL section_create(section, __location__, name=
"interpolator", &
1254 description=
"kind of interpolation used between the multigrids", &
1255 n_keywords=5, n_subsections=0, repeats=.false.)
1257 NULLIFY (keyword, print_key)
1260 description=
"the interpolator to use", &
1261 usage=
"kind spline3", &
1263 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1269 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1270 description=
"if a non unrolled calculation is to be performed in parallel", &
1271 usage=
"safe_computation OFF", &
1272 default_l_val=.false., &
1273 lone_keyword_l_val=.true.)
1277 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1278 description=
"the approximate inverse to use to get the starting point"// &
1279 " for the linear solver of the spline3 methods", &
1280 usage=
"aint_precond copy", &
1282 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1283 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1290 description=
"The preconditioner used"// &
1291 " for the linear solver of the spline3 methods", &
1292 usage=
"PRECOND copy", &
1294 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1295 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1302 description=
"accuracy on the solution for spline3 the interpolators", &
1303 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1308 description=
"accuracy on the residual for spline3 the interpolators", &
1309 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1314 variants=(/
'maxiter'/), &
1315 description=
"the maximum number of iterations", &
1316 usage=
"max_iter 200", default_i_val=100)
1322 description=
"if convergence information about the linear solver"// &
1323 " of the spline methods should be printed", &
1325 each_iter_values=(/10/), filename=
"__STD_OUT__", &
1337 SUBROUTINE create_sic_section(section)
1342 cpassert(.NOT.
ASSOCIATED(section))
1344 description=
"parameters for the self interaction correction", &
1345 n_keywords=6, n_subsections=0, repeats=.false., &
1350 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1351 description=
"Scaling of the coulomb term in sic [experimental]", &
1352 usage=
"SIC_SCALING_A 0.5", &
1354 default_r_val=1.0_dp)
1358 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1359 description=
"Scaling of the xc term in sic [experimental]", &
1360 usage=
"SIC_SCALING_B 0.5", &
1362 default_r_val=1.0_dp)
1367 description=
"Method used to remove the self interaction", &
1368 usage=
"SIC_METHOD MAURI_US", &
1370 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1372 enum_desc=
s2a(
"Do not apply a sic correction", &
1373 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1374 " on the spin density / doublet unpaired orbital", &
1375 "Employ a (scaled) Perdew-Zunger expression"// &
1376 " on the spin density / doublet unpaired orbital", &
1377 "The average density correction", &
1378 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1384 description=
"Type of orbitals treated with the SIC", &
1385 usage=
"ORBITAL_SET ALL", &
1387 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1388 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1389 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1394 END SUBROUTINE create_sic_section
1401 SUBROUTINE create_low_spin_roks_section(section)
1406 cpassert(.NOT.
ASSOCIATED(section))
1407 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1408 description=
"Specify the details of the low spin ROKS method. "// &
1409 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1410 " with a energy scaling factor, and a prescription of the spin state.", &
1411 n_keywords=6, n_subsections=0, repeats=.false.)
1414 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1415 description=
"The scaling factors for each term added to the total energy. "// &
1416 "This list should contain one number for each term added to the total energy.", &
1417 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1418 n_var=-1, type_of_var=
real_t, repeats=.false.)
1422 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1423 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1424 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1425 usage=
"SPIN_CONFIGURATION 1 2", &
1426 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1430 END SUBROUTINE create_low_spin_roks_section
1436 SUBROUTINE create_rtp_section(section)
1440 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1443 cpassert(.NOT.
ASSOCIATED(section))
1444 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1445 description=
"Parameters needed to set up the real time propagation"// &
1446 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1447 n_keywords=4, n_subsections=4, repeats=.false., &
1451 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1452 usage=
"MAX_ITER 10", &
1458 description=
"Convergence criterion for the self consistent propagator loop.", &
1459 usage=
"EPS_ITER 1.0E-5", &
1460 default_r_val=1.0e-7_dp)
1465 description=
"Speciefies how many steps will be used for extrapolation. "// &
1466 "One will be always used which is means X(t+dt)=X(t)", &
1467 usage=
"ASPC_ORDER 3", &
1473 description=
"Which method should be used to calculate the exponential"// &
1474 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1475 "and ARNOLDI otherwise.", &
1476 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1477 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1479 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1480 " with a taylor expansion of the exponential.", &
1481 "uses scaling and squaring together with the pade approximation", &
1482 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1483 "combination with Crank Nicholson or density propagation", &
1484 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1485 " only works for density propagation", &
1486 "Uses diagonalisation of the exponent matrices to determine the "// &
1487 "matrix exponential exactly. Only implemented for GWBSE."))
1491 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1492 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1493 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1494 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1495 usage=
"DENSITY_PROPAGATION .TRUE.", &
1496 default_l_val=.false., lone_keyword_l_val=.true.)
1500 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1501 description=
"Speciefies how many iteration steps will be done without "// &
1502 "a check for self consistency. Can save some time in big calculations.", &
1503 usage=
"SC_CHECK_START 3", &
1508 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1509 description=
"Accuracy for the taylor and pade approximation. "// &
1510 "This is only an upper bound bound since the norm used for the guess "// &
1511 "is an upper bound for the needed one.", &
1512 usage=
"EXP_ACCURACY 1.0E-6", &
1513 default_r_val=1.0e-9_dp)
1518 description=
"Which propagator should be used for the orbitals", &
1519 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1520 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1522 enum_desc=
s2a(
"enforced time reversible symmetry", &
1523 "Crank Nicholson propagator", &
1524 "Exponential midpoint propagator"))
1529 description=
"Controls the initial WFN used for propagation. "// &
1530 "Note that some energy contributions may not be "// &
1531 "initialized in the restart cases, for instance "// &
1532 "electronic entropy energy in the case of smearing.", &
1533 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1534 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1536 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1537 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1538 " if electronic constraints or restraints are used in the previous calculation, "// &
1539 "since these do not work in the rtp scheme.", &
1540 "use the wavefunction of a real time propagation/ehrenfest run"))
1544 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1545 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1546 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1547 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1548 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1549 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1550 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1551 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1552 default_l_val=.false., lone_keyword_l_val=.true.)
1556 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1557 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1558 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1559 usage=
"APPLY_DELTA_PULSE", &
1560 default_l_val=.false., lone_keyword_l_val=.true.)
1564 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1565 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1566 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1567 usage=
"APPLY_DELTA_PULSE_MAG", &
1568 default_l_val=.false., lone_keyword_l_val=.true.)
1572 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1573 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1574 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1575 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1576 usage=
"VELOCITY_GAUGE T", &
1577 default_l_val=.false., lone_keyword_l_val=.true.)
1582 description=
"Define gauge origin for magnetic perturbation", &
1583 usage=
"GAUGE_ORIG COM", &
1584 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1585 enum_desc=
s2a(
"Use Center of Mass", &
1586 "Use Center of Atomic Charges", &
1587 "Use User Defined Point (Keyword:REF_POINT)", &
1588 "Use Origin of Coordinate System"), &
1597 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1598 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1599 usage=
"GAUGE_ORIG_MANUAL x y z", &
1601 n_var=3, default_r_vals=(/0._dp, 0._dp, 0._dp/), &
1608 description=
"apply gauge transformed non-local potential term"// &
1609 " only affects VELOCITY_GAUGE=.TRUE.", &
1610 usage=
"VG_COM_NL T", &
1611 default_l_val=.true., lone_keyword_l_val=.true.)
1616 description=
"Include non-local commutator for periodic delta pulse."// &
1617 " only affects PERIODIC=.TRUE.", &
1619 default_l_val=.true., lone_keyword_l_val=.true.)
1624 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1625 " This corresponds to a 1st order perturbation in the length gauge."// &
1626 " Note that this is NOT compatible with a periodic calculation!"// &
1627 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1628 usage=
"LEN_REP T", &
1629 default_l_val=.false., lone_keyword_l_val=.true.)
1634 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1635 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1636 " the initial wfn with the velocity operator as perturbation."// &
1637 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1638 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1639 " and not for restarts (RT_RESTART).", &
1641 default_l_val=.true., lone_keyword_l_val=.true.)
1645 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1646 description=
"Direction of the applied electric field. The k vector is given as"// &
1647 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1648 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1649 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1650 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=(/1, 0, 0/), &
1655 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1656 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1657 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1658 " applied electric field in atomic units.", &
1659 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1663 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1664 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1665 " of the integrals, balanced with respect to the in core steps.", &
1666 usage=
"HFX_BALANCE_IN_CORE", &
1667 default_l_val=.false., lone_keyword_l_val=.true.)
1671 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1672 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1673 " step in density propagation", &
1674 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1679 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1680 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1681 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1682 " reduced for these calculations.", &
1683 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1688 description=
"Threshold after which McWeeny is terminated", &
1689 usage=
"MCWEENY_EPS 0.00001", &
1690 default_r_val=0.0_dp)
1694 NULLIFY (print_section)
1696 description=
"Section of possible print options for an RTP runs", &
1701 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1707 description=
"Controls the dumping of the MO restart file during rtp. "// &
1708 "By default keeps a short history of three restarts. "// &
1709 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1710 "density matrix.", &
1712 each_iter_names=
s2a(
"MD"), each_iter_values=(/20/), &
1714 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1715 description=
"Specifies the maximum number of backup copies.", &
1716 usage=
"BACKUP_COPIES {int}", &
1724 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1725 "In density propagation it dumps the density matrix instead", &
1727 each_iter_names=
s2a(
"MD"), &
1728 each_iter_values=(/500/), &
1730 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1731 description=
"Specifies the maximum number of backup copies.", &
1732 usage=
"BACKUP_COPIES {int}", &
1740 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1743 each_iter_names=
s2a(
"MD"), &
1744 each_iter_values=(/1/), &
1745 filename=
"applied_field")
1754 description=
"Print the integral of the current density (only if the"// &
1755 " imaginary part of the density is NOT zero.", &
1757 each_iter_names=
s2a(
"MD"), &
1758 each_iter_values=(/1/), &
1759 filename=
"rtp_j_int")
1764 description=
"Print the current during an EMD simulation to cube files.", &
1766 each_iter_names=
s2a(
"MD"), &
1767 each_iter_values=(/20/), &
1769 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1770 description=
"Specifies the maximum number of backup copies.", &
1771 usage=
"BACKUP_COPIES {int}", &
1776 description=
"The stride (X,Y,Z) used to write the cube file "// &
1777 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1778 " 1 number valid for all components.", &
1779 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=
integer_t)
1788 description=
"Prints the density matrix at iterations in clear text to a file", &
1790 each_iter_names=
s2a(
"MD"), &
1791 each_iter_values=(/1/), &
1797 description=
"Prints the time-dependent electronic moments at "// &
1798 "iterations in clear text to a file.", &
1800 each_iter_names=
s2a(
"MD"), &
1801 each_iter_values=(/1/), &
1802 filename=
"__STD_OUT__")
1807 description=
"Prints the calculated Fourier transform of "// &
1808 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1809 "can be supplied with starting time.", &
1811 each_iter_names=
s2a(
"MD"), &
1812 each_iter_values=(/1/), &
1813 filename=
"MOMENTS_FT")
1818 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1819 "to a specified file. The tensor is calculated as ratio of "// &
1820 "Fourier transform of the dipole "// &
1821 "moment trace and Fourier transform of the applied field "// &
1822 "(for delta kick, constant real field is applied.", &
1824 each_iter_names=
s2a(
"MD"), &
1825 each_iter_values=(/1/), &
1826 filename=
"POLARIZABILITY")
1828 description=
"Specifies the element of polarizability which is to be printed out "// &
1829 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1830 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1831 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1832 type_of_var=
integer_t, default_i_vals=(/1, 1/), n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1839 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1840 "the Total Energy", &
1842 each_iter_names=
s2a(
"MD"), &
1843 each_iter_values=(/1/), &
1851 NULLIFY (subsection)
1852 CALL create_rtbse_section(subsection)
1856 END SUBROUTINE create_rtp_section
1862 SUBROUTINE create_rtbse_section(section)
1869 NULLIFY (subsection)
1870 cpassert(.NOT.
ASSOCIATED(section))
1873 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1874 "Note that running RTBSE requires previous low-scaling "// &
1875 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1876 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1877 "deallocation errors.", &
1881 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1882 description=
"Which method is used for the time propagation of electronic structure. "// &
1883 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
1884 "Green's function instead of density matrix/molecular orbitals.", &
1885 usage=
"&RTBSE TDDFT", &
1888 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
1890 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
1891 "Use RT-BSE for Green's function propagation"))
1896 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
1897 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
1898 " in the Green's propagator.", &
1899 usage=
"RTBSE_HAMILTONIAN G0W0", &
1901 enum_c_vals=
s2a(
"KS",
"G0W0"), &
1903 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
1904 "Use G0W0 Hamiltonian for Green's function propagation"))
1909 description=
"Numerical Fourier transform (required for calculation of "// &
1910 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
1911 "when the final values are far away from zero. "// &
1912 "This keyword controls the exponential damping in the Fourier transform "// &
1913 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
1914 "For negative values (the default), calculates the damping at the run time so that the last point "// &
1915 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
1916 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
1917 "the damping is not applied.", &
1924 description=
"The starting time from which damping is applied and from which on the trace is "// &
1925 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
1926 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
1927 "one can specify the center of the pulse as the starting point.", &
1930 default_r_val=0.0_dp)
1937 description=é
"Options for the Pad approximant refinement of the Fourier transform. Uses GreenX "// &
1938 "library to perform the analytic continuation and interpolation of the Fourier transform of "// &
1939 "dipole moments. The resulting moments are printed into the MOMENTS_FT file.", &
1943 description=
"Minimal energy of the interpolated values.", &
1946 default_r_val=0.0_dp)
1951 description=
"Maximal energy of the interpolated values.", &
1954 default_r_val=100.0_dp/
evolt)
1959 description=
"Energy resolution of the interpolated values.", &
1962 default_r_val=0.02_dp/
evolt)
1967 description=é
"Minimum energy to be used in the fitting of Pad approximants. "// &
1968 é
"Can be used to restrict the number of Pad parameters. "// &
1969 "When not present, takes the value of E_MIN.", &
1972 default_r_val=0.0_dp)
1977 description=é
"Maximum energy to be used in the fitting of Pad approximants. "// &
1978 é
"Can be used to restrict the number of Pad parameters. Negative energy is interpreted "// &
1979 "as maximum available energy from the original Fourier transform. "// &
1980 "When not present, takes the value of E_MAX.", &
1983 default_r_val=-1.0_dp/
evolt)
1990 END SUBROUTINE create_rtbse_section
2000 SUBROUTINE create_sccs_section(section)
2007 cpassert(.NOT.
ASSOCIATED(section))
2011 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2020 name=
"_SECTION_PARAMETERS_", &
2021 description=
"Controls the activation of the SCCS section", &
2023 default_l_val=.false., &
2024 lone_keyword_l_val=.true.)
2030 description=
"Solvent specific tunable parameter for the calculation of "// &
2031 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2032 "where $S$ is the (quantum) surface of the cavity", &
2036 default_r_val=0.0_dp, &
2043 description=
"Solvent specific tunable parameter for the calculation of "// &
2044 "the dispersion term $G^\text{dis} = \beta V$ "// &
2045 "where $V$ is the (quantum) volume of the cavity", &
2049 default_r_val=0.0_dp, &
2056 description=
"Numerical increment for the calculation of the (quantum) "// &
2057 "surface of the solute cavity", &
2061 default_r_val=2.0e-5_dp)
2066 name=
"DERIVATIVE_METHOD", &
2067 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2068 usage=
"DERIVATIVE_METHOD cd5", &
2072 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2077 enum_desc=
s2a(
"Fast Fourier transformation", &
2078 "3-point stencil central differences", &
2079 "5-point stencil central differences", &
2080 "7-point stencil central differences"))
2085 name=
"RELATIVE_PERMITTIVITY", &
2086 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2087 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2091 default_r_val=80.0_dp, &
2092 usage=
"RELATIVE_PERMITTIVITY 78.36")
2098 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2099 description=
"Tolerance for the convergence of the polarisation density, "// &
2100 "i.e. requested accuracy for the SCCS iteration cycle", &
2104 default_r_val=1.0e-6_dp, &
2105 usage=
"EPS_ITER 1.0E-7")
2111 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2112 "is converged to this threshold value", &
2116 default_r_val=0.5_dp, &
2117 usage=
"EPS_SCF 1.0E-2")
2123 variants=
s2a(
"SURFACE_TENSION"), &
2124 description=
"Surface tension of the solvent used for the calculation of "// &
2125 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2126 "where $S$ is the (quantum) surface of the cavity", &
2130 default_r_val=0.0_dp, &
2137 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2138 "within the given tolerance", &
2142 default_i_val=100, &
2143 usage=
"MAX_ITER 50")
2149 description=
"Method used for the smoothing of the dielectric function", &
2150 usage=
"METHOD Fattebert-Gygi", &
2152 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2154 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2155 "Smoothing function proposed by Fattebert and Gygi"))
2161 variants=(/
"ETA"/), &
2162 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2166 default_r_val=0.6_dp, &
2171 NULLIFY (subsection)
2175 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2176 "Andreussi et al.", &
2184 description=
"Maximum density value used for the smoothing of the dielectric function", &
2188 default_r_val=0.0035_dp, &
2189 usage=
"RHO_MAX 0.01")
2195 description=
"Minimum density value used for the smoothing of the dielectric function", &
2199 default_r_val=0.0001_dp, &
2200 usage=
"RHO_MIN 0.0003")
2208 name=
"FATTEBERT-GYGI", &
2209 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2210 "Fattebert and Gygi", &
2218 description=
"Parameter β changes the width of the interface solute-solvent", &
2222 default_r_val=1.7_dp, &
2229 variants=(/
"RHO0"/), &
2230 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2231 "of the interface solute-solvent", &
2235 default_r_val=0.0006_dp, &
2236 usage=
"RHO_ZERO 0.0004")
2243 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
real(kind=dp), parameter, public evolt
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.