102#include "./base/base_uses.f90"
107 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
127 cpassert(.NOT.
ASSOCIATED(section))
129 description=
"Controls electronic-structure settings for Quickstep and related "// &
130 "Gaussian-basis DFT methods.", &
131 n_keywords=3, n_subsections=4, repeats=.false.)
134 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
135 description=
"Name of a basis-set library file, optionally including a path. "// &
136 "This keyword can be repeated to search several basis-set files.", &
137 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
138 type_of_var=
lchar_t, repeats=.true., &
139 default_lc_val=
"BASIS_SET", n_var=1)
143 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
144 description=
"Name of the pseudopotential library file, optionally including a path. "// &
145 "The potential selected for each kind is set with KIND%POTENTIAL.", &
146 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
147 default_lc_val=
"POTENTIAL")
151 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
152 variants=[
"RESTART_FILE_NAME"], &
153 description=
"Name of the wavefunction restart file, may include a path."// &
154 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
155 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
162 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
165 description=
"Requests a spin-polarized calculation using alpha "// &
166 "and beta orbitals, i.e. no spin restriction is applied", &
168 default_l_val=.false., &
169 lone_keyword_l_val=.true.)
174 variants=[
"RESTRICTED_OPEN_KOHN_SHAM"], &
175 description=
"Requests a restricted open Kohn-Sham calculation", &
177 default_l_val=.false., &
178 lone_keyword_l_val=.true.)
182 name=
"MULTIPLICITY", &
183 variants=[
"MULTIP"], &
184 description=
"Two times the total spin plus one. "// &
185 "Specify 3 for a triplet, 4 for a quartet, "// &
186 "and so on. Default is 1 (singlet) for an "// &
187 "even number and 2 (doublet) for an odd number "// &
189 usage=
"MULTIPLICITY 3", &
194 description=
"The total charge of the system", &
201 name=
"PLUS_U_METHOD", &
202 description=
"Method employed for the calculation of the DFT+U contribution", &
204 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES"), &
206 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
207 "(computationally expensive, since the diagonalization of the "// &
208 "overlap matrix is required, but possibly more robust than Mulliken)", &
209 "Method based on Mulliken population analysis using the net AO and "// &
210 "overlap populations (computationally cheap method)", &
211 "Method based on Mulliken gross orbital populations (GOP)"), &
214 usage=
"PLUS_U_METHOD Lowdin")
219 name=
"RELAX_MULTIPLICITY", &
220 variants=[
"RELAX_MULTIP"], &
221 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
222 "of alpha and beta MOs due to the initially "// &
223 "defined multiplicity, but rather follow the Aufbau principle. "// &
224 "A value greater than zero activates this option. "// &
225 "If alpha/beta MOs differ in energy less than this tolerance, "// &
226 "then alpha-MO occupation is preferred even if it is higher "// &
227 "in energy (within the tolerance). "// &
228 "Such spin-symmetry broken (spin-polarized) occupation is used "// &
229 "as SCF input, which (is assumed to) bias the SCF "// &
230 "towards a spin-polarized solution. "// &
231 "Thus, larger tolerance increases chances of ending up "// &
232 "with spin-polarization. "// &
233 "This option is only valid for unrestricted (i.e. spin polarised) "// &
234 "Kohn-Sham (UKS) calculations. It also needs non-zero "// &
235 "[ADDED_MOS](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.ADDED_MOS) to actually affect the calculations, "// &
236 "which is why it is not expected to work with [OT](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.OT) "// &
237 "and may raise errors when used with OT. "// &
238 "For more details see [this discussion](https://github.com/cp2k/cp2k/issues/4389).", &
239 usage=
"RELAX_MULTIPLICITY 0.00001", &
241 default_r_val=0.0_dp)
246 description=
"Read the grid size for subcell generation in the construction of "// &
247 "neighbor lists.", usage=
"SUBCELLS 1.5", &
248 n_var=1, default_r_val=2.0_dp)
253 description=
"Specify size of automatically generated auxiliary (RI) basis sets: "// &
254 "Options={small,medium,large,huge}", &
255 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
256 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
261 name=
"SURFACE_DIPOLE_CORRECTION", &
262 variants=
s2a(
"SURFACE_DIPOLE", &
264 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
265 "the electrostatic potential with "// &
266 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
267 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
269 default_l_val=.false., &
270 lone_keyword_l_val=.true., &
276 name=
"SURF_DIP_DIR", &
277 description=
"Cartesian axis parallel to surface normal.", &
278 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
279 enum_i_vals=[1, 2, 3], &
280 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
283 usage=
"SURF_DIP_DIR Z")
288 name=
"SURF_DIP_POS", &
289 description=
"This keyword assigns an user defined position in Angstroms "// &
290 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
291 "The default value is -1.0_dp which appplies the correction at a position "// &
292 "that has minimum electron density on the grid.", &
293 usage=
"SURF_DIP_POS -1.0_dp", &
294 default_r_val=-1.0_dp)
299 name=
"SURF_DIP_SWITCH", &
300 description=
"WARNING: Experimental feature under development that will help the "// &
301 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
302 "surface dipole correction is switched off if the calculation does not converge in "// &
303 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
304 "The default value is .FALSE.", &
305 usage=
"SURF_DIP_SWITCH .TRUE.", &
306 default_l_val=.false., &
307 lone_keyword_l_val=.true.)
312 name=
"CORE_CORR_DIP", &
313 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
314 "correction is switched on, presence of this keyword will adjust electron "// &
315 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
316 "The default value is .FALSE.", &
317 usage=
"CORE_CORR_DIP .TRUE.", &
318 default_l_val=.false., &
319 lone_keyword_l_val=.true.)
325 description=
"Sorts basis functions according to a selected criterion. "// &
326 "Sorting by exponent can improve data locality for selected exact-exchange and RI workflows.", &
327 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
329 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
331 usage=
"SORT_BASIS EXP")
348 CALL create_kg_section(subsection)
364 CALL create_admm_section(subsection)
380 CALL create_relativistic_section(subsection)
384 CALL create_sic_section(subsection)
388 CALL create_low_spin_roks_section(subsection)
429 CALL create_implicit_solv_section(subsection)
433 CALL create_density_fitting_section(subsection)
449 CALL create_rtp_section(subsection)
457 CALL create_sccs_section(subsection)
469 CALL create_hairy_probes_section(subsection)
481 SUBROUTINE create_hairy_probes_section(section)
487 cpassert(.NOT.
ASSOCIATED(section))
489 name=
"HAIRY_PROBES", &
490 description=
"Sets up a Hairy Probe calculation. ", &
491 n_keywords=0, n_subsections=0, repeats=.true.)
494 name=
"_SECTION_PARAMETERS_", &
495 description=
"Controls the activation of hairy probe", &
496 usage=
"&HAIRY_PROBES ON", &
497 default_l_val=.false., &
498 lone_keyword_l_val=.true.)
503 description=
"Indexes of the atoms to which the probes are attached.", &
504 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
510 description=
"Electronic temperature [K]", &
518 description=
"Chemical potential of the electrons in the probes [eV] ", &
526 description=
"Parameter for solution probes ", &
527 usage=
"ALPHA <REAL>", &
528 default_r_val=1.0_dp)
533 description=
" Tolerance for accuracy checks on occupation numbers "// &
534 "calculated using hair-probes. ", &
535 usage=
"EPS_HP <REAL>", &
536 default_r_val=1.0e-5_dp)
539 END SUBROUTINE create_hairy_probes_section
547 SUBROUTINE create_implicit_solv_section(section)
553 NULLIFY (keyword, subsection, print_key)
554 cpassert(.NOT.
ASSOCIATED(section))
556 description=
"Adds an implicit solvation model to the DFT calculation."// &
557 " Know also as Self Consistent Reaction Field.", &
558 n_keywords=0, n_subsections=0, repeats=.false.)
561 description=
"Value of the dielectric constant outside the sphere", &
562 usage=
"EPS_OUT <REAL>", &
563 default_r_val=1.0_dp)
568 description=
"Maximum value of L used in the multipole expansion", &
569 usage=
"LMAX <INTEGER>", &
574 CALL create_sphere_section(subsection)
579 description=
"Controls the printing basic info about the method", &
584 END SUBROUTINE create_implicit_solv_section
591 SUBROUTINE create_sphere_section(section)
597 NULLIFY (keyword, subsection)
598 cpassert(.NOT.
ASSOCIATED(section))
600 description=
"Treats the implicit solvent environment like a sphere", &
601 n_keywords=0, n_subsections=0, repeats=.false.)
604 description=
"Value of the spherical cavity in the dielectric medium", &
605 usage=
"RADIUS <REAL>", &
606 unit_str=
"angstrom", &
611 CALL create_center_section(subsection)
615 END SUBROUTINE create_sphere_section
622 SUBROUTINE create_center_section(section)
628 cpassert(.NOT.
ASSOCIATED(section))
630 description=
"Defines the center of the sphere.", &
631 n_keywords=0, n_subsections=0, repeats=.false.)
633 description=
"Coordinates of the center of the sphere", &
634 usage=
"XYZ <REAL> <REAL> <REAL>", &
635 unit_str=
"angstrom", &
636 type_of_var=
real_t, n_var=3)
641 description=
"Defines a list of atoms to define the center of the sphere", &
642 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
648 description=
"Defines the weight used to define the center of the sphere"// &
649 " (if ATOM_LIST is provided)", &
650 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
651 enum_c_vals=[
"UNIT",
"MASS"], &
658 description=
"Specify if the center of the sphere should be fixed or"// &
659 " allowed to move", &
660 usage=
"FIXED <LOGICAL>", &
661 default_l_val=.true.)
665 END SUBROUTINE create_center_section
671 SUBROUTINE create_admm_section(section)
677 cpassert(.NOT.
ASSOCIATED(section))
678 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
679 description=
"Controls the auxiliary density matrix method (ADMM), which evaluates "// &
680 "Hartree-Fock exchange on a smaller auxiliary basis and adds an exchange correction.", &
681 n_keywords=1, n_subsections=1, repeats=.false., &
685 keyword, __location__, &
687 description=
"Named ADMM variant from the literature. This shortcut sets METHOD, "// &
688 "ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL consistently for the selected variant.", &
689 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
690 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
691 "ADMM1 method from Guidon2010", &
692 "ADMM2 method from Guidon2010", &
693 "ADMMS method from Merlot2014", &
694 "ADMMP method from Merlot2014", &
695 "ADMMQ method from Merlot2014"), &
703 keyword, __location__, &
704 name=
"ADMM_PURIFICATION_METHOD", &
705 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
706 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
710 enum_desc=
s2a(
"Do not apply any purification", &
711 "Perform purification via general Cauchy representation", &
712 "Perform purification via Cauchy representation in occupied subspace", &
713 "Calculate MO derivatives via Cauchy representation by diagonalization", &
714 "Calculate MO derivatives via Cauchy representation by inversion", &
715 "Perform original McWeeny purification via matrix multiplications", &
716 "Do not apply any purification, works directly with density matrix"), &
722 keyword, __location__, &
724 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
725 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
726 "CHARGE_CONSTRAINED_PROJECTION"), &
729 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
730 "Construct auxiliary density from a blocked Fock matrix,"// &
731 " but use the original matrix for purification.", &
732 "Construct auxiliary density from a blocked Fock matrix.", &
733 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
739 keyword, __location__, &
740 name=
"EXCH_SCALING_MODEL", &
741 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
742 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
744 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
745 "Exchange scaling according to Merlot (2014)"), &
751 keyword, __location__, &
752 name=
"EXCH_CORRECTION_FUNC", &
753 description=
"Exchange functional used for the ADMM correction. It should be chosen consistently "// &
754 "with the exchange functional in the main XC setup. LibXC implementations require linking with LibXC.", &
755 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
756 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
762 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
763 "Use PBEX functional for exchange correction.", &
764 "No correction: X(D)-x(d)-> 0.", &
765 "Use OPTX functional for exchange correction.", &
766 "Use Becke88X functional for exchange correction.", &
767 "Use PBEX functional (LibXC implementation) for exchange correction.", &
768 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
769 "Use OPTX functional (LibXC implementation) for exchange correction.", &
770 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
771 "Use Slater X functional (LibXC where possible) for exchange correction."), &
777 description=
"OPTX a1 coefficient", &
778 default_r_val=1.05151_dp)
782 description=
"OPTX a2 coefficient", &
783 default_r_val=1.43169_dp)
787 description=
"OPTX gamma coefficient", &
788 default_r_val=0.006_dp)
793 description=
"Specifies a list of atoms.", &
794 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
795 n_var=-1, type_of_var=
integer_t, repeats=.true.)
800 description=
"Define accuracy of DBCSR operations", &
801 usage=
"EPS_FILTER", default_r_val=0.0_dp)
805 END SUBROUTINE create_admm_section
811 SUBROUTINE create_density_fitting_section(section)
817 NULLIFY (keyword, print_key)
818 cpassert(.NOT.
ASSOCIATED(section))
819 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
820 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
821 "atomic point charges (DDAPC) charges)", &
822 n_keywords=7, n_subsections=0, repeats=.false., &
826 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
827 usage=
"NUM_GAUSS {integer}", &
828 n_var=1, type_of_var=
integer_t, default_i_val=3)
833 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
834 usage=
"PFACTOR {real}", &
835 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
840 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
841 " obtained with the progression factor.", &
842 usage=
"MIN_RADIUS {real}", &
843 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
848 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
849 " of this keyword disables all other keywords of this section.", &
850 usage=
"RADII {real} {real} .. {real}", &
851 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
856 description=
"Cutoff for charge fit in G-space.", &
857 usage=
"GCUT {real}", &
858 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
863 description=
"Controls the printing of basic information during the run", &
866 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
867 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
868 usage=
"CONDITION_NUMBER <LOGICAL>", &
869 default_l_val=.false., lone_keyword_l_val=.true.)
876 END SUBROUTINE create_density_fitting_section
883 SUBROUTINE create_relativistic_section(section)
888 cpassert(.NOT.
ASSOCIATED(section))
890 description=
"parameters needed and setup for relativistic calculations", &
891 n_keywords=5, n_subsections=0, repeats=.false.)
896 description=
"type of relativistic correction used", &
897 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
898 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
900 enum_desc=
s2a(
"Use no relativistic correction", &
901 "Use Douglas-Kroll-Hess method", &
907 description=
"The order of the DKH transformation ", &
908 usage=
"DKH_order 2", default_i_val=2)
913 description=
"Type of ZORA method to be used", &
915 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
916 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
917 "ZORA with atomic model potential", &
918 "Scaled ZORA with atomic model potential"), &
923 CALL keyword_create(keyword, __location__, name=
"transformation", &
924 description=
"Type of DKH transformation", &
925 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
926 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
928 enum_desc=
s2a(
"Use full matrix transformation", &
929 "Use transformation blocked by molecule", &
930 "Use atomic blocks"))
935 description=
"The minimal atomic number considered for atom transformation", &
936 usage=
"z_cutoff 50", default_i_val=1)
941 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
942 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
943 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
948 END SUBROUTINE create_relativistic_section
955 SUBROUTINE create_kg_section(section)
961 cpassert(.NOT.
ASSOCIATED(section))
963 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
964 " into molecular subunits", &
965 n_keywords=0, n_subsections=1, repeats=.false., &
968 NULLIFY (keyword, subsection, print_key)
980 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
981 description=
"Which algorithm to use for coloring.", &
982 usage=
"COLORING_METHOD GREEDY", &
984 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
985 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
986 "Greedy, fast coloring, less accurate"), &
992 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
993 usage=
"TNADD_METHOD ATOMIC", &
995 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
996 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
997 "Use full embedding potential with RI density fitting", &
998 "Use sum of atomic model potentials", &
999 "Do not use kinetic energy embedding"), &
1004 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
1005 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
1006 usage=
"INTEGRATION_GRID MEDIUM", &
1007 default_c_val=
"MEDIUM")
1012 description=
"Print section", &
1013 n_keywords=0, n_subsections=1, repeats=.false.)
1016 description=
"Controls the printing of the neighbor lists.", &
1017 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
1020 name=
"SAB_ORB_FULL", &
1021 description=
"Activates the printing of the full orbital "// &
1022 "orbital neighbor lists.", &
1023 default_l_val=.false., &
1024 lone_keyword_l_val=.true.)
1029 name=
"SAB_ORB_MOLECULAR", &
1030 description=
"Activates the printing of the orbital "// &
1031 "orbital neighbor lists for molecular subsets.", &
1032 default_l_val=.false., &
1033 lone_keyword_l_val=.true.)
1039 description=
"Activates the printing of the orbital "// &
1040 "atomic potential neighbor list.", &
1041 default_l_val=.false., &
1042 lone_keyword_l_val=.true.)
1052 END SUBROUTINE create_kg_section
1065 cpassert(.NOT.
ASSOCIATED(section))
1067 description=
"This section is used to set up the BSSE calculation. "// &
1068 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1069 "with the GHOST keyword specified, in addition to the other required fields.", &
1070 n_keywords=3, n_subsections=1, repeats=.false.)
1072 NULLIFY (keyword, subsection)
1075 description=
"Specify the atom number belonging to this fragment.", &
1076 n_keywords=2, n_subsections=0, repeats=.true.)
1079 description=
"Specifies a list of atoms.", &
1080 usage=
"LIST {integer} {integer} .. {integer}", &
1081 repeats=.true., n_var=-1, type_of_var=
integer_t)
1089 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1090 description=
"Specify additional parameters for the combinatorial configurations. "// &
1091 "Use this section to manually specify charge and multiplicity of the fragments "// &
1092 "and their combinations.", &
1093 n_keywords=2, n_subsections=0, repeats=.true.)
1096 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1097 "1 specifies the respective fragment as used, 0 as unused.", &
1098 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1104 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1105 "1 specifies the respective fragment as real, 0 as ghost.", &
1106 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1112 name=
"MULTIPLICITY", &
1113 variants=[
"MULTIP"], &
1114 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1115 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1116 "even number and 2 (doublet) for an odd number of electrons.", &
1117 usage=
"MULTIPLICITY 3", &
1123 description=
"The total charge for each fragment.", &
1124 usage=
"CHARGE -1", &
1131 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1132 description=
"This section contains the energies of the fragments already"// &
1133 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1134 n_keywords=2, n_subsections=0, repeats=.true.)
1135 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1136 description=
"The energy computed for each fragment", repeats=.true., &
1137 usage=
"{REAL}", type_of_var=
real_t)
1143 CALL create_print_bsse_section(subsection)
1154 SUBROUTINE create_print_bsse_section(section)
1159 cpassert(.NOT.
ASSOCIATED(section))
1161 description=
"Section of possible print options in BSSE code.", &
1162 n_keywords=0, n_subsections=1, repeats=.false.)
1166 description=
"Controls the printing of information regarding the run.", &
1172 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1173 "By default the restart is updated after each configuration calculation is "// &
1180 END SUBROUTINE create_print_bsse_section
1187 SUBROUTINE create_rigpw_section(section)
1190 cpassert(.NOT.
ASSOCIATED(section))
1192 description=
"This section specifies optional parameters for RIGPW.", &
1193 n_keywords=1, n_subsections=0, repeats=.false.)
1220 END SUBROUTINE create_rigpw_section
1231 LOGICAL,
INTENT(in) :: create_subsections
1236 cpassert(.NOT.
ASSOCIATED(section))
1238 description=
"Controls the multigrid used by GPW/GAPW to represent densities, "// &
1239 "potentials, and Gaussian products on real-space grids.", &
1240 n_keywords=5, n_subsections=1, repeats=.false.)
1243 description=
"Number of multigrid levels. Smooth Gaussian products can be mapped to "// &
1244 "coarser levels, while sharper products require finer levels.", &
1245 usage=
"ngrids 1", default_i_val=4)
1251 "Plane-wave cutoff of the finest real-space grid level. "// &
1252 "Increasing this value improves the grid representation, but it is "// &
1253 "not a substitute for converging the Gaussian basis set. "// &
1254 "Default value for SE or DFTB calculation is 1.0 [Ry].", &
1255 usage=
"cutoff 300", &
1257 n_var=1, unit_str=
"Ry")
1261 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1262 description=
"Factor used to derive the cutoff of coarser multigrid levels when "// &
1263 "they are not given explicitly.", &
1264 usage=
"progression_factor <integer>", default_r_val=3._dp)
1268 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1269 description=
"If the grids should be commensurate. If true overrides "// &
1270 "the progression factor and the cutoffs of the sub grids", &
1271 usage=
"commensurate", default_l_val=.false., &
1272 lone_keyword_l_val=.true.)
1277 description=
"If both rho and rho_gspace are needed ", &
1278 usage=
"realspace", default_l_val=.false., &
1279 lone_keyword_l_val=.true.)
1284 variants=[
"RELATIVE_CUTOFF"], &
1285 description=
"Controls to which multigrid level a Gaussian product is mapped. "// &
1286 "It is the reference cutoff for a Gaussian with exponent alpha=1. Larger values "// &
1287 "keep more Gaussian products on finer grids and can be important for accurate "// &
1288 "energies, forces, stress tensors, and variable-cell simulations.", &
1289 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1294 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1295 description=
"Activate a manual setting of the multigrids", &
1296 usage=
"MULTIGRID_SET", default_l_val=.false.)
1301 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1302 description=
"Skips load balancing on distributed multigrids. "// &
1303 "Memory usage is O(p) so may be used "// &
1304 "for all but the very largest runs.", &
1305 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1306 default_l_val=.false., &
1307 lone_keyword_l_val=.true.)
1316 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1317 variants=[
"CUTOFF_LIST"], &
1318 description=
"List of cutoff values to set up multigrids manually", &
1319 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1326 IF (create_subsections)
THEN
1327 NULLIFY (subsection)
1332 NULLIFY (subsection)
1350 cpassert(.NOT.
ASSOCIATED(section))
1351 CALL section_create(section, __location__, name=
"interpolator", &
1352 description=
"kind of interpolation used between the multigrids", &
1353 n_keywords=5, n_subsections=0, repeats=.false.)
1355 NULLIFY (keyword, print_key)
1358 description=
"the interpolator to use", &
1359 usage=
"kind spline3", &
1361 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1367 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1368 description=
"if a non unrolled calculation is to be performed in parallel", &
1369 usage=
"safe_computation OFF", &
1370 default_l_val=.false., &
1371 lone_keyword_l_val=.true.)
1375 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1376 description=
"the approximate inverse to use to get the starting point"// &
1377 " for the linear solver of the spline3 methods", &
1378 usage=
"aint_precond copy", &
1380 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1381 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1388 description=
"The preconditioner used"// &
1389 " for the linear solver of the spline3 methods", &
1390 usage=
"PRECOND copy", &
1392 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1393 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1400 description=
"accuracy on the solution for spline3 the interpolators", &
1401 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1406 description=
"accuracy on the residual for spline3 the interpolators", &
1407 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1412 variants=[
'maxiter'], &
1413 description=
"the maximum number of iterations", &
1414 usage=
"max_iter 200", default_i_val=100)
1420 description=
"if convergence information about the linear solver"// &
1421 " of the spline methods should be printed", &
1423 each_iter_values=[10], filename=
"__STD_OUT__", &
1435 SUBROUTINE create_sic_section(section)
1440 cpassert(.NOT.
ASSOCIATED(section))
1442 description=
"parameters for the self interaction correction", &
1443 n_keywords=6, n_subsections=0, repeats=.false., &
1448 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1449 description=
"Scaling of the coulomb term in sic [experimental]", &
1450 usage=
"SIC_SCALING_A 0.5", &
1452 default_r_val=1.0_dp)
1456 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1457 description=
"Scaling of the xc term in sic [experimental]", &
1458 usage=
"SIC_SCALING_B 0.5", &
1460 default_r_val=1.0_dp)
1465 description=
"Method used to remove the self interaction", &
1466 usage=
"SIC_METHOD MAURI_US", &
1468 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1470 enum_desc=
s2a(
"Do not apply a sic correction", &
1471 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1472 " on the spin density / doublet unpaired orbital", &
1473 "Employ a (scaled) Perdew-Zunger expression"// &
1474 " on the spin density / doublet unpaired orbital", &
1475 "The average density correction", &
1476 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1482 description=
"Type of orbitals treated with the SIC", &
1483 usage=
"ORBITAL_SET ALL", &
1485 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1486 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1487 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1492 END SUBROUTINE create_sic_section
1499 SUBROUTINE create_low_spin_roks_section(section)
1504 cpassert(.NOT.
ASSOCIATED(section))
1505 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1506 description=
"Specify the details of the low spin ROKS method. "// &
1507 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1508 " with a energy scaling factor, and a prescription of the spin state.", &
1509 n_keywords=6, n_subsections=0, repeats=.false.)
1512 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1513 description=
"The scaling factors for each term added to the total energy. "// &
1514 "This list should contain one number for each term added to the total energy.", &
1515 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1516 n_var=-1, type_of_var=
real_t, repeats=.false.)
1520 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1521 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1522 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1523 usage=
"SPIN_CONFIGURATION 1 2", &
1524 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1528 END SUBROUTINE create_low_spin_roks_section
1534 SUBROUTINE create_rtp_section(section)
1538 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1541 cpassert(.NOT.
ASSOCIATED(section))
1542 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1543 description=
"Parameters needed to set up the real time propagation"// &
1544 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1545 n_keywords=4, n_subsections=4, repeats=.false., &
1549 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1550 usage=
"MAX_ITER 10", &
1556 description=
"Convergence criterion for the self consistent propagator loop.", &
1557 usage=
"EPS_ITER 1.0E-5", &
1558 default_r_val=1.0e-7_dp)
1563 description=
"Speciefies how many steps will be used for extrapolation. "// &
1564 "One will be always used which is means X(t+dt)=X(t)", &
1565 usage=
"ASPC_ORDER 3", &
1571 description=
"Which method should be used to calculate the exponential"// &
1572 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1573 "and ARNOLDI otherwise.", &
1574 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1575 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1577 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1578 " with a taylor expansion of the exponential.", &
1579 "uses scaling and squaring together with the pade approximation", &
1580 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1581 "combination with Crank Nicholson or density propagation", &
1582 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1583 " only works for density propagation", &
1584 "Uses diagonalisation of the exponent matrices to determine the "// &
1585 "matrix exponential exactly. Only implemented for GWBSE."))
1589 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1590 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1591 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1592 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1593 usage=
"DENSITY_PROPAGATION .TRUE.", &
1594 default_l_val=.false., lone_keyword_l_val=.true.)
1598 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1599 description=
"Speciefies how many iteration steps will be done without "// &
1600 "a check for self consistency. Can save some time in big calculations.", &
1601 usage=
"SC_CHECK_START 3", &
1606 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1607 description=
"Accuracy for the taylor and pade approximation. "// &
1608 "This is only an upper bound bound since the norm used for the guess "// &
1609 "is an upper bound for the needed one.", &
1610 usage=
"EXP_ACCURACY 1.0E-6", &
1611 default_r_val=1.0e-9_dp)
1616 description=
"Which propagator should be used for the orbitals", &
1617 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1618 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1620 enum_desc=
s2a(
"enforced time reversible symmetry", &
1621 "Crank Nicholson propagator", &
1622 "Exponential midpoint propagator"))
1627 description=
"Controls the initial WFN used for propagation. "// &
1628 "Note that some energy contributions may not be "// &
1629 "initialized in the restart cases, for instance "// &
1630 "electronic entropy energy in the case of smearing.", &
1631 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1632 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1634 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1635 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1636 " if electronic constraints or restraints are used in the previous calculation, "// &
1637 "since these do not work in the rtp scheme.", &
1638 "use the wavefunction of a real time propagation/ehrenfest run"))
1642 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1643 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1644 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1645 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1646 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1647 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1648 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1649 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1650 default_l_val=.false., lone_keyword_l_val=.true.)
1654 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1655 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1656 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1657 usage=
"APPLY_DELTA_PULSE", &
1658 default_l_val=.false., lone_keyword_l_val=.true.)
1662 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1663 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1664 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1665 usage=
"APPLY_DELTA_PULSE_MAG", &
1666 default_l_val=.false., lone_keyword_l_val=.true.)
1670 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1671 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1672 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1673 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1674 usage=
"VELOCITY_GAUGE T", &
1675 default_l_val=.false., lone_keyword_l_val=.true.)
1680 description=
"Define gauge origin for magnetic perturbation", &
1681 usage=
"GAUGE_ORIG COM", &
1682 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1683 enum_desc=
s2a(
"Use Center of Mass", &
1684 "Use Center of Atomic Charges", &
1685 "Use User Defined Point (Keyword:REF_POINT)", &
1686 "Use Origin of Coordinate System"), &
1695 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1696 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1697 usage=
"GAUGE_ORIG_MANUAL x y z", &
1699 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1706 description=
"apply gauge transformed non-local potential term"// &
1707 " only affects VELOCITY_GAUGE=.TRUE.", &
1708 usage=
"VG_COM_NL T", &
1709 default_l_val=.true., lone_keyword_l_val=.true.)
1714 description=
"Include non-local commutator for periodic delta pulse."// &
1715 " only affects PERIODIC=.TRUE.", &
1717 default_l_val=.true., lone_keyword_l_val=.true.)
1722 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1723 " This corresponds to a 1st order perturbation in the length gauge."// &
1724 " Note that this is NOT compatible with a periodic calculation!"// &
1725 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1726 usage=
"LEN_REP T", &
1727 default_l_val=.false., lone_keyword_l_val=.true.)
1732 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1733 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1734 " the initial wfn with the velocity operator as perturbation."// &
1735 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1736 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1737 " and not for restarts (RT_RESTART).", &
1739 default_l_val=.true., lone_keyword_l_val=.true.)
1743 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1744 description=
"Direction of the applied electric field. The k vector is given as"// &
1745 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1746 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1747 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1748 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=[1, 0, 0], &
1753 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1754 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1755 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1756 " applied electric field in atomic units.", &
1757 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1761 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1762 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1763 " of the integrals, balanced with respect to the in core steps.", &
1764 usage=
"HFX_BALANCE_IN_CORE", &
1765 default_l_val=.false., lone_keyword_l_val=.true.)
1769 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1770 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1771 " step in density propagation", &
1772 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1777 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1778 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1779 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1780 " reduced for these calculations.", &
1781 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1786 description=
"Threshold after which McWeeny is terminated", &
1787 usage=
"MCWEENY_EPS 0.00001", &
1788 default_r_val=0.0_dp)
1792 NULLIFY (print_section)
1794 description=
"Section of possible print options for an RTP runs", &
1799 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1805 description=
"Controls the dumping of the MO restart file during rtp. "// &
1806 "By default keeps a short history of three restarts. "// &
1807 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1808 "density matrix.", &
1810 each_iter_names=
s2a(
"MD"), each_iter_values=[20], &
1812 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1813 description=
"Specifies the maximum number of backup copies.", &
1814 usage=
"BACKUP_COPIES {int}", &
1822 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1823 "In density propagation it dumps the density matrix instead", &
1825 each_iter_names=
s2a(
"MD"), &
1826 each_iter_values=[500], &
1828 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1829 description=
"Specifies the maximum number of backup copies.", &
1830 usage=
"BACKUP_COPIES {int}", &
1838 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1841 each_iter_names=
s2a(
"MD"), &
1842 each_iter_values=[1], &
1852 description=
"Print the integral of the current density (only if the"// &
1853 " imaginary part of the density is NOT zero.", &
1855 each_iter_names=
s2a(
"MD"), &
1856 each_iter_values=[1], &
1857 filename=
"rtp_j_int")
1862 description=
"Print the current during an EMD simulation to cube files.", &
1864 each_iter_names=
s2a(
"MD"), &
1865 each_iter_values=[20], &
1867 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1868 description=
"Specifies the maximum number of backup copies.", &
1869 usage=
"BACKUP_COPIES {int}", &
1874 description=
"The stride (X,Y,Z) used to write the cube file "// &
1875 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1876 " 1 number valid for all components.", &
1877 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1886 description=
"Prints the density matrix at iterations in clear text to a file", &
1888 each_iter_names=
s2a(
"MD"), &
1889 each_iter_values=[1], &
1895 description=
"Prints the time-dependent electronic moments at "// &
1896 "iterations in clear text to a file.", &
1898 each_iter_names=
s2a(
"MD"), &
1899 each_iter_values=[1], &
1900 filename=
"__STD_OUT__")
1902 variants=
s2a(
"REF"), &
1903 description=
"Define the reference point for the calculation of the electrostatic moment.", &
1904 usage=
"REFERENCE COM", &
1905 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1906 enum_desc=
s2a(
"Use Center of Mass", &
1907 "Use Center of Atomic Charges", &
1908 "Use User Defined Point (Keyword:REFERENCE_POINT)", &
1909 "Use Origin of Coordinate System"), &
1918 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1919 variants=
s2a(
"REF_POINT"), &
1920 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
1921 usage=
"REFERENCE_POINT x y z", &
1923 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1925 unit_str=
'angstrom')
1932 description=
"Prints the calculated Fourier transform of "// &
1933 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1934 "can be supplied with starting time.", &
1936 each_iter_names=
s2a(
"MD"), &
1937 each_iter_values=[1], &
1938 filename=
"MOMENTS_FT")
1943 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1944 "to a specified file. The tensor is calculated as ratio of "// &
1945 "Fourier transform of the dipole "// &
1946 "moment trace and Fourier transform of the applied field "// &
1947 "(for delta kick, constant real field is applied.", &
1949 each_iter_names=
s2a(
"MD"), &
1950 each_iter_values=[1], &
1951 filename=
"POLARIZABILITY")
1953 description=
"Specifies the element of polarizability which is to be printed out "// &
1954 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1955 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1956 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1957 type_of_var=
integer_t, default_i_vals=[1, 1], n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
1964 description=
"Print the energy constituents (relevant to RTP) which make up "// &
1965 "the Total Energy", &
1967 each_iter_names=
s2a(
"MD"), &
1968 each_iter_values=[1], &
1977 NULLIFY (subsection)
1978 CALL create_rtbse_section(subsection)
1982 CALL create_ft_section(subsection)
1986 END SUBROUTINE create_rtp_section
1992 SUBROUTINE create_rtbse_section(section)
1998 cpassert(.NOT.
ASSOCIATED(section))
2001 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
2002 "Note that running RTBSE requires previous low-scaling "// &
2003 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
2004 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
2005 "deallocation errors. More details (including description of output files) is available in "// &
2006 "the [methods](../../../../methods/properties/optical/rtbse) section of the documentation.", &
2010 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2011 description=
"Which method is used for the time propagation of electronic structure. "// &
2012 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
2013 "Green's function instead of density matrix/molecular orbitals.", &
2014 usage=
"&RTBSE TDDFT", &
2017 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
2019 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
2020 "Use RT-BSE for Green's function propagation"))
2025 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
2026 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
2027 " in the Green's propagator.", &
2028 usage=
"RTBSE_HAMILTONIAN G0W0", &
2030 enum_c_vals=
s2a(
"KS",
"G0W0"), &
2032 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
2033 "Use G0W0 Hamiltonian for Green's function propagation"))
2037 END SUBROUTINE create_rtbse_section
2044 SUBROUTINE create_ft_section(ft_section)
2050 cpassert(.NOT.
ASSOCIATED(ft_section))
2055 description=
"Define parameters for Fourier transforms used in RTP outputs.", &
2061 description=
"The starting time from which damping is applied and from which on the trace is "// &
2062 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
2063 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
2064 "one can specify the center of the pulse as the starting point.", &
2067 default_r_val=0.0_dp)
2073 description=
"Numerical Fourier transform (required for calculation of "// &
2074 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
2075 "when the final time trace values are far away from zero. "// &
2076 "This keyword controls the exponential damping added to the Fourier transform "// &
2077 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
2078 "For negative values (the default), calculates the damping at the run time so that the last point "// &
2079 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
2080 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
2081 "the damping is not applied.", &
2089 NULLIFY (subsection)
2091 description=é
"Defines the parameters for the Pad interpolation of the "// &
2092 "Fourier transforms used in the output of RTP. Only available with the GreenX library linked to CP2K.", &
2096 CALL keyword_create(keyword, __location__,
"_SECTION_PARAMETERS_", &
2097 description=é
"Turns on the Pad interpolation", &
2099 default_l_val=.false., &
2100 lone_keyword_l_val=.true.)
2106 description=é
"The minimum energy of the Pad interpolation output.", &
2109 default_r_val=0.0_dp)
2115 description=é
"The maximum energy of the Pad interpolation output.", &
2118 default_r_val=100.0_dp)
2124 description=é
"The energy resolution of the Pad interpolation output.", &
2127 default_r_val=0.02_dp/
evolt)
2133 description=
"The lower boundary in energy for the points "// &
2134 é
"used in the fitting of Pad parameters. If negative, uses "// &
2135 "value of E_MIN (default).", &
2138 default_r_val=-1.0_dp)
2144 description=
"The upper boundary in energy for the points "// &
2145 é
"used in the fitting of Pad parameters. If negative, uses "// &
2146 "the value of E_MAX (default).", &
2149 default_r_val=-1.0_dp)
2156 END SUBROUTINE create_ft_section
2166 SUBROUTINE create_sccs_section(section)
2173 cpassert(.NOT.
ASSOCIATED(section))
2177 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2186 name=
"_SECTION_PARAMETERS_", &
2187 description=
"Controls the activation of the SCCS section", &
2189 default_l_val=.false., &
2190 lone_keyword_l_val=.true.)
2196 description=
"Solvent specific tunable parameter for the calculation of "// &
2197 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2198 "where $S$ is the (quantum) surface of the cavity", &
2202 default_r_val=0.0_dp, &
2209 description=
"Solvent specific tunable parameter for the calculation of "// &
2210 "the dispersion term $G^\text{dis} = \beta V$ "// &
2211 "where $V$ is the (quantum) volume of the cavity", &
2215 default_r_val=0.0_dp, &
2222 description=
"Numerical increment for the calculation of the (quantum) "// &
2223 "surface of the solute cavity", &
2227 default_r_val=2.0e-5_dp)
2232 name=
"DERIVATIVE_METHOD", &
2233 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2234 usage=
"DERIVATIVE_METHOD cd5", &
2238 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2243 enum_desc=
s2a(
"Fast Fourier transformation", &
2244 "3-point stencil central differences", &
2245 "5-point stencil central differences", &
2246 "7-point stencil central differences"))
2251 name=
"RELATIVE_PERMITTIVITY", &
2252 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2253 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2257 default_r_val=80.0_dp, &
2258 usage=
"RELATIVE_PERMITTIVITY 78.36")
2264 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2265 description=
"Tolerance for the convergence of the polarisation density, "// &
2266 "i.e. requested accuracy for the SCCS iteration cycle", &
2270 default_r_val=1.0e-6_dp, &
2271 usage=
"EPS_ITER 1.0E-7")
2277 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2278 "is converged to this threshold value", &
2282 default_r_val=0.5_dp, &
2283 usage=
"EPS_SCF 1.0E-2")
2289 variants=
s2a(
"SURFACE_TENSION"), &
2290 description=
"Surface tension of the solvent used for the calculation of "// &
2291 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2292 "where $S$ is the (quantum) surface of the cavity", &
2296 default_r_val=0.0_dp, &
2303 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2304 "within the given tolerance", &
2308 default_i_val=100, &
2309 usage=
"MAX_ITER 50")
2315 description=
"Method used for the smoothing of the dielectric function", &
2316 usage=
"METHOD Fattebert-Gygi", &
2318 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI"), &
2320 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2321 "Smoothing function proposed by Fattebert and Gygi"))
2328 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2332 default_r_val=0.6_dp, &
2337 NULLIFY (subsection)
2341 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2342 "Andreussi et al.", &
2350 description=
"Maximum density value used for the smoothing of the dielectric function", &
2354 default_r_val=0.0035_dp, &
2355 usage=
"RHO_MAX 0.01")
2361 description=
"Minimum density value used for the smoothing of the dielectric function", &
2365 default_r_val=0.0001_dp, &
2366 usage=
"RHO_MIN 0.0003")
2374 name=
"FATTEBERT-GYGI", &
2375 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2376 "Fattebert and Gygi", &
2384 description=
"Parameter β changes the width of the interface solute-solvent", &
2388 default_r_val=1.7_dp, &
2395 variants=[
"RHO0"], &
2396 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2397 "of the interface solute-solvent", &
2401 default_r_val=0.0006_dp, &
2402 usage=
"RHO_ZERO 0.0004")
2409 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 marek2025
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.