103#include "./base/base_uses.f90"
108 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_dft'
128 cpassert(.NOT.
ASSOCIATED(section))
130 description=
"Controls electronic-structure settings for Quickstep and related "// &
131 "Gaussian-basis DFT methods.", &
132 n_keywords=3, n_subsections=4, repeats=.false.)
135 CALL keyword_create(keyword, __location__, name=
"BASIS_SET_FILE_NAME", &
136 description=
"Name of a basis-set library file, optionally including a path. "// &
137 "This keyword can be repeated to search several basis-set files.", &
138 usage=
"BASIS_SET_FILE_NAME <FILENAME>", &
139 type_of_var=
lchar_t, repeats=.true., &
140 default_lc_val=
"BASIS_SET", n_var=1)
144 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
145 description=
"Name of the pseudopotential library file, optionally including a path. "// &
146 "The potential selected for each kind is set with KIND%POTENTIAL.", &
147 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
148 default_lc_val=
"POTENTIAL")
152 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
153 variants=[
"RESTART_FILE_NAME"], &
154 description=
"Name of the wavefunction restart file, may include a path."// &
155 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
156 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
163 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
166 description=
"Requests a spin-polarized calculation using alpha "// &
167 "and beta orbitals, i.e. no spin restriction is applied", &
169 default_l_val=.false., &
170 lone_keyword_l_val=.true.)
175 variants=[
"RESTRICTED_OPEN_KOHN_SHAM"], &
176 description=
"Requests a restricted open Kohn-Sham calculation", &
178 default_l_val=.false., &
179 lone_keyword_l_val=.true.)
183 name=
"MULTIPLICITY", &
184 variants=[
"MULTIP"], &
185 description=
"Two times the total spin plus one. "// &
186 "Specify 3 for a triplet, 4 for a quartet, "// &
187 "and so on. Default is 1 (singlet) for an "// &
188 "even number and 2 (doublet) for an odd number "// &
190 usage=
"MULTIPLICITY 3", &
195 description=
"The total charge of the system", &
202 name=
"PLUS_U_METHOD", &
203 description=
"Method employed for the calculation of the DFT+U contribution", &
205 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES",
"TENSORIAL"), &
208 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
209 "(computationally expensive, since the diagonalization of the "// &
210 "overlap matrix is required, but possibly more robust than Mulliken)", &
211 "Method based on Mulliken population analysis using the net AO and "// &
212 "overlap populations (computationally cheap method)", &
213 "Method based on Mulliken gross orbital populations (GOP)", &
214 "Method based on Tensorial population analysis approach"), &
217 usage=
"PLUS_U_METHOD Lowdin")
222 name=
"EPS_U_J_LOOP", &
223 description=
"Convergence threshold for the self-consistent update of U and J parameters "// &
224 "in the minimum tracking linear response calculation.", &
227 unit_str=
"hartree", &
228 default_r_val=1.0e-2_dp, &
229 usage=
"EPS_U_J_LOOP [eV] 0.01")
234 name=
"MAX_MTLR_LOOP", &
235 description=
"Max number of iterations for calculated self-consistent linear response U and J.", &
238 usage=
"MAX_MTLR_LOOP 10")
243 name=
"RELAX_MULTIPLICITY", &
244 variants=[
"RELAX_MULTIP"], &
245 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
246 "of alpha and beta MOs due to the initially "// &
247 "defined multiplicity, but rather follow the Aufbau principle. "// &
248 "A value greater than zero activates this option. "// &
249 "If alpha/beta MOs differ in energy less than this tolerance, "// &
250 "then alpha-MO occupation is preferred even if it is higher "// &
251 "in energy (within the tolerance). "// &
252 "Such spin-symmetry broken (spin-polarized) occupation is used "// &
253 "as SCF input, which (is assumed to) bias the SCF "// &
254 "towards a spin-polarized solution. "// &
255 "Thus, larger tolerance increases chances of ending up "// &
256 "with spin-polarization. "// &
257 "This option is only valid for unrestricted (i.e. spin polarised) "// &
258 "Kohn-Sham (UKS) calculations. It also needs non-zero "// &
259 "[ADDED_MOS](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.ADDED_MOS) to actually affect the calculations, "// &
260 "which is why it is not expected to work with [OT](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.OT) "// &
261 "and may raise errors when used with OT. "// &
262 "For more details see [this discussion](https://github.com/cp2k/cp2k/issues/4389).", &
263 usage=
"RELAX_MULTIPLICITY 0.00001", &
265 default_r_val=0.0_dp)
270 description=
"Read the grid size for subcell generation in the construction of "// &
271 "neighbor lists.", usage=
"SUBCELLS 1.5", &
272 n_var=1, default_r_val=2.0_dp)
277 description=
"Specify type and size of automatically generated auxiliary "// &
278 "(RI) basis sets. Exactly two arguments are required for this option. "// &
279 "The first argument of basis type should be one of the following: "// &
280 "`RI_AUX`, `AUX_FIT`, `LRI_AUX`, `P_LRI_AUX`, `RI_HXC`, `RI_XAS`, or "// &
281 "`RI_HFX`. The second argument of basis size should be one of the "// &
282 "following: `SMALL`, `MEDIUM`, `LARGE`, or `HUGE`. The default is not "// &
283 "using any of these basis sets, requested by `AUTO_BASIS X X` (exactly "// &
284 "as written here).", &
285 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
286 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
291 name=
"SURFACE_DIPOLE_CORRECTION", &
292 variants=
s2a(
"SURFACE_DIPOLE", &
294 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
295 "the electrostatic potential with "// &
296 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
297 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
299 default_l_val=.false., &
300 lone_keyword_l_val=.true., &
306 name=
"SURF_DIP_DIR", &
307 description=
"Cartesian axis parallel to surface normal.", &
308 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
309 enum_i_vals=[1, 2, 3], &
310 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
313 usage=
"SURF_DIP_DIR Z")
318 name=
"SURF_DIP_POS", &
319 description=
"This keyword assigns an user defined position in Angstroms "// &
320 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
321 "The default value is -1.0_dp which appplies the correction at a position "// &
322 "that has minimum electron density on the grid.", &
323 usage=
"SURF_DIP_POS -1.0_dp", &
324 default_r_val=-1.0_dp)
329 name=
"SURF_DIP_SWITCH", &
330 description=
"WARNING: Experimental feature under development that will help the "// &
331 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
332 "surface dipole correction is switched off if the calculation does not converge in "// &
333 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
334 "The default value is .FALSE.", &
335 usage=
"SURF_DIP_SWITCH .TRUE.", &
336 default_l_val=.false., &
337 lone_keyword_l_val=.true.)
342 name=
"CORE_CORR_DIP", &
343 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
344 "correction is switched on, presence of this keyword will adjust electron "// &
345 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
346 "The default value is .FALSE.", &
347 usage=
"CORE_CORR_DIP .TRUE.", &
348 default_l_val=.false., &
349 lone_keyword_l_val=.true.)
355 description=
"Sorts basis functions according to a selected criterion. "// &
356 "Sorting by exponent can improve data locality for selected exact-exchange and RI workflows.", &
357 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
359 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
361 usage=
"SORT_BASIS EXP")
378 CALL create_kg_section(subsection)
394 CALL create_admm_section(subsection)
410 CALL create_relativistic_section(subsection)
414 CALL create_sic_section(subsection)
418 CALL create_low_spin_roks_section(subsection)
459 CALL create_implicit_solv_section(subsection)
463 CALL create_density_fitting_section(subsection)
479 CALL create_rtp_section(subsection)
487 CALL create_sccs_section(subsection)
499 CALL create_hairy_probes_section(subsection)
503 CALL create_pcc_section(subsection)
507 CALL create_paep_section(subsection)
519 SUBROUTINE create_hairy_probes_section(section)
525 cpassert(.NOT.
ASSOCIATED(section))
527 name=
"HAIRY_PROBES", &
528 description=
"Sets up a Hairy Probe calculation. ", &
529 n_keywords=0, n_subsections=0, repeats=.true.)
532 name=
"_SECTION_PARAMETERS_", &
533 description=
"Controls the activation of hairy probe", &
534 usage=
"&HAIRY_PROBES ON", &
535 default_l_val=.false., &
536 lone_keyword_l_val=.true.)
541 description=
"Indexes of the atoms to which the probes are attached.", &
542 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
548 description=
"Electronic temperature [K]", &
556 description=
"Chemical potential of the electrons in the probes [eV] ", &
564 description=
"Parameter for solution probes ", &
565 usage=
"ALPHA <REAL>", &
566 default_r_val=1.0_dp)
571 description=
" Tolerance for accuracy checks on occupation numbers "// &
572 "calculated using hair-probes. ", &
573 usage=
"EPS_HP <REAL>", &
574 default_r_val=1.0e-5_dp)
577 END SUBROUTINE create_hairy_probes_section
585 SUBROUTINE create_implicit_solv_section(section)
591 NULLIFY (keyword, subsection, print_key)
592 cpassert(.NOT.
ASSOCIATED(section))
594 description=
"Adds an implicit solvation model to the DFT calculation."// &
595 " Know also as Self Consistent Reaction Field.", &
596 n_keywords=0, n_subsections=0, repeats=.false.)
599 description=
"Value of the dielectric constant outside the sphere", &
600 usage=
"EPS_OUT <REAL>", &
601 default_r_val=1.0_dp)
606 description=
"Maximum value of L used in the multipole expansion", &
607 usage=
"LMAX <INTEGER>", &
612 CALL create_sphere_section(subsection)
617 description=
"Controls the printing basic info about the method", &
622 END SUBROUTINE create_implicit_solv_section
629 SUBROUTINE create_sphere_section(section)
635 NULLIFY (keyword, subsection)
636 cpassert(.NOT.
ASSOCIATED(section))
638 description=
"Treats the implicit solvent environment like a sphere", &
639 n_keywords=0, n_subsections=0, repeats=.false.)
642 description=
"Value of the spherical cavity in the dielectric medium", &
643 usage=
"RADIUS <REAL>", &
644 unit_str=
"angstrom", &
649 CALL create_center_section(subsection)
653 END SUBROUTINE create_sphere_section
660 SUBROUTINE create_center_section(section)
666 cpassert(.NOT.
ASSOCIATED(section))
668 description=
"Defines the center of the sphere.", &
669 n_keywords=0, n_subsections=0, repeats=.false.)
671 description=
"Coordinates of the center of the sphere", &
672 usage=
"XYZ <REAL> <REAL> <REAL>", &
673 unit_str=
"angstrom", &
674 type_of_var=
real_t, n_var=3)
679 description=
"Defines a list of atoms to define the center of the sphere", &
680 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
686 description=
"Defines the weight used to define the center of the sphere"// &
687 " (if ATOM_LIST is provided)", &
688 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
689 enum_c_vals=[
"UNIT",
"MASS"], &
696 description=
"Specify if the center of the sphere should be fixed or"// &
697 " allowed to move", &
698 usage=
"FIXED <LOGICAL>", &
699 default_l_val=.true.)
703 END SUBROUTINE create_center_section
709 SUBROUTINE create_admm_section(section)
715 cpassert(.NOT.
ASSOCIATED(section))
716 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
717 description=
"Controls the auxiliary density matrix method (ADMM), which evaluates "// &
718 "Hartree-Fock exchange on a smaller auxiliary basis and adds an exchange correction.", &
719 n_keywords=1, n_subsections=1, repeats=.false., &
723 keyword, __location__, &
725 description=
"Named ADMM variant from the literature. This shortcut sets METHOD, "// &
726 "ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL consistently for the selected variant.", &
727 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
728 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
729 "ADMM1 method from Guidon2010", &
730 "ADMM2 method from Guidon2010", &
731 "ADMMS method from Merlot2014", &
732 "ADMMP method from Merlot2014", &
733 "ADMMQ method from Merlot2014"), &
741 keyword, __location__, &
742 name=
"ADMM_PURIFICATION_METHOD", &
743 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
744 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
748 enum_desc=
s2a(
"Do not apply any purification", &
749 "Perform purification via general Cauchy representation", &
750 "Perform purification via Cauchy representation in occupied subspace", &
751 "Calculate MO derivatives via Cauchy representation by diagonalization", &
752 "Calculate MO derivatives via Cauchy representation by inversion", &
753 "Perform original McWeeny purification via matrix multiplications", &
754 "Do not apply any purification, works directly with density matrix"), &
760 keyword, __location__, &
762 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
763 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
764 "CHARGE_CONSTRAINED_PROJECTION"), &
767 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
768 "Construct auxiliary density from a blocked Fock matrix,"// &
769 " but use the original matrix for purification.", &
770 "Construct auxiliary density from a blocked Fock matrix.", &
771 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
777 keyword, __location__, &
778 name=
"EXCH_SCALING_MODEL", &
779 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
780 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
782 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
783 "Exchange scaling according to Merlot (2014)"), &
789 keyword, __location__, &
790 name=
"EXCH_CORRECTION_FUNC", &
791 description=
"Exchange functional used for the ADMM correction. It should be chosen consistently "// &
792 "with the exchange functional in the main XC setup. LibXC implementations require linking with LibXC.", &
793 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
794 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
800 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
801 "Use PBEX functional for exchange correction.", &
802 "No correction: X(D)-x(d)-> 0.", &
803 "Use OPTX functional for exchange correction.", &
804 "Use Becke88X functional for exchange correction.", &
805 "Use PBEX functional (LibXC implementation) for exchange correction.", &
806 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
807 "Use OPTX functional (LibXC implementation) for exchange correction.", &
808 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
809 "Use Slater X functional (LibXC where possible) for exchange correction."), &
815 description=
"OPTX a1 coefficient", &
816 default_r_val=1.05151_dp)
820 description=
"OPTX a2 coefficient", &
821 default_r_val=1.43169_dp)
825 description=
"OPTX gamma coefficient", &
826 default_r_val=0.006_dp)
831 description=
"Specifies a list of atoms.", &
832 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
833 n_var=-1, type_of_var=
integer_t, repeats=.true.)
838 description=
"Define accuracy of DBCSR operations", &
839 usage=
"EPS_FILTER", default_r_val=0.0_dp)
843 END SUBROUTINE create_admm_section
849 SUBROUTINE create_density_fitting_section(section)
855 NULLIFY (keyword, print_key)
856 cpassert(.NOT.
ASSOCIATED(section))
857 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
858 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
859 "atomic point charges (DDAPC) charges)", &
860 n_keywords=7, n_subsections=0, repeats=.false., &
864 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
865 usage=
"NUM_GAUSS {integer}", &
866 n_var=1, type_of_var=
integer_t, default_i_val=3)
871 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
872 usage=
"PFACTOR {real}", &
873 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
878 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
879 " obtained with the progression factor.", &
880 usage=
"MIN_RADIUS {real}", &
881 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
886 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
887 " of this keyword disables all other keywords of this section.", &
888 usage=
"RADII {real} {real} .. {real}", &
889 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
894 description=
"Cutoff for charge fit in G-space.", &
895 usage=
"GCUT {real}", &
896 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
901 description=
"Controls the printing of basic information during the run", &
904 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
905 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
906 usage=
"CONDITION_NUMBER <LOGICAL>", &
907 default_l_val=.false., lone_keyword_l_val=.true.)
914 END SUBROUTINE create_density_fitting_section
921 SUBROUTINE create_relativistic_section(section)
926 cpassert(.NOT.
ASSOCIATED(section))
928 description=
"parameters needed and setup for relativistic calculations", &
929 n_keywords=5, n_subsections=0, repeats=.false.)
934 description=
"type of relativistic correction used", &
935 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
936 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
938 enum_desc=
s2a(
"Use no relativistic correction", &
939 "Use Douglas-Kroll-Hess method", &
945 description=
"The order of the DKH transformation ", &
946 usage=
"DKH_order 2", default_i_val=2)
951 description=
"Type of ZORA method to be used", &
953 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
954 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
955 "ZORA with atomic model potential", &
956 "Scaled ZORA with atomic model potential"), &
961 CALL keyword_create(keyword, __location__, name=
"transformation", &
962 description=
"Type of DKH transformation", &
963 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
964 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
966 enum_desc=
s2a(
"Use full matrix transformation", &
967 "Use transformation blocked by molecule", &
968 "Use atomic blocks"))
973 description=
"The minimal atomic number considered for atom transformation", &
974 usage=
"z_cutoff 50", default_i_val=1)
979 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
980 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
981 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
986 END SUBROUTINE create_relativistic_section
993 SUBROUTINE create_kg_section(section)
999 cpassert(.NOT.
ASSOCIATED(section))
1001 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
1002 " into molecular subunits", &
1003 n_keywords=0, n_subsections=1, repeats=.false., &
1006 NULLIFY (keyword, subsection, print_key)
1018 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
1019 description=
"Which algorithm to use for coloring.", &
1020 usage=
"COLORING_METHOD GREEDY", &
1022 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
1023 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
1024 "Greedy, fast coloring, less accurate"), &
1029 CALL keyword_create(keyword, __location__, name=
"TNADD_METHOD", &
1030 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
1031 usage=
"TNADD_METHOD ATOMIC", &
1033 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
1034 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
1035 "Use full embedding potential with RI density fitting", &
1036 "Use sum of atomic model potentials", &
1037 "Do not use kinetic energy embedding"), &
1042 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
1043 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
1044 usage=
"INTEGRATION_GRID MEDIUM", &
1045 default_c_val=
"MEDIUM")
1050 description=
"Print section", &
1051 n_keywords=0, n_subsections=1, repeats=.false.)
1054 description=
"Controls the printing of the neighbor lists.", &
1055 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
1058 name=
"SAB_ORB_FULL", &
1059 description=
"Activates the printing of the full orbital "// &
1060 "orbital neighbor lists.", &
1061 default_l_val=.false., &
1062 lone_keyword_l_val=.true.)
1067 name=
"SAB_ORB_MOLECULAR", &
1068 description=
"Activates the printing of the orbital "// &
1069 "orbital neighbor lists for molecular subsets.", &
1070 default_l_val=.false., &
1071 lone_keyword_l_val=.true.)
1077 description=
"Activates the printing of the orbital "// &
1078 "atomic potential neighbor list.", &
1079 default_l_val=.false., &
1080 lone_keyword_l_val=.true.)
1090 END SUBROUTINE create_kg_section
1103 cpassert(.NOT.
ASSOCIATED(section))
1105 description=
"This section is used to set up the BSSE calculation. "// &
1106 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1107 "with the GHOST keyword specified, in addition to the other required fields.", &
1108 n_keywords=3, n_subsections=1, repeats=.false.)
1110 NULLIFY (keyword, subsection)
1113 description=
"Specify the atom number belonging to this fragment.", &
1114 n_keywords=2, n_subsections=0, repeats=.true.)
1117 description=
"Specifies a list of atoms.", &
1118 usage=
"LIST {integer} {integer} .. {integer}", &
1119 repeats=.true., n_var=-1, type_of_var=
integer_t)
1127 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1128 description=
"Specify additional parameters for the combinatorial configurations. "// &
1129 "Use this section to manually specify charge and multiplicity of the fragments "// &
1130 "and their combinations.", &
1131 n_keywords=2, n_subsections=0, repeats=.true.)
1134 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1135 "1 specifies the respective fragment as used, 0 as unused.", &
1136 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1142 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1143 "1 specifies the respective fragment as real, 0 as ghost.", &
1144 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1150 name=
"MULTIPLICITY", &
1151 variants=[
"MULTIP"], &
1152 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1153 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1154 "even number and 2 (doublet) for an odd number of electrons.", &
1155 usage=
"MULTIPLICITY 3", &
1161 description=
"The total charge for each fragment.", &
1162 usage=
"CHARGE -1", &
1169 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1170 description=
"This section contains the energies of the fragments already"// &
1171 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1172 n_keywords=2, n_subsections=0, repeats=.true.)
1173 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1174 description=
"The energy computed for each fragment", repeats=.true., &
1175 usage=
"{REAL}", type_of_var=
real_t)
1181 CALL create_print_bsse_section(subsection)
1192 SUBROUTINE create_print_bsse_section(section)
1197 cpassert(.NOT.
ASSOCIATED(section))
1199 description=
"Section of possible print options in BSSE code.", &
1200 n_keywords=0, n_subsections=1, repeats=.false.)
1204 description=
"Controls the printing of information regarding the run.", &
1210 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1211 "By default the restart is updated after each configuration calculation is "// &
1218 END SUBROUTINE create_print_bsse_section
1225 SUBROUTINE create_rigpw_section(section)
1228 cpassert(.NOT.
ASSOCIATED(section))
1230 description=
"This section specifies optional parameters for RIGPW.", &
1231 n_keywords=1, n_subsections=0, repeats=.false.)
1258 END SUBROUTINE create_rigpw_section
1269 LOGICAL,
INTENT(in) :: create_subsections
1274 cpassert(.NOT.
ASSOCIATED(section))
1276 description=
"Controls the multigrid used by GPW/GAPW to represent densities, "// &
1277 "potentials, and Gaussian products on real-space grids.", &
1278 n_keywords=5, n_subsections=1, repeats=.false.)
1281 description=
"Number of multigrid levels. Smooth Gaussian products can be mapped to "// &
1282 "coarser levels, while sharper products require finer levels.", &
1283 usage=
"ngrids 1", default_i_val=4)
1289 "Plane-wave cutoff of the finest real-space grid level. "// &
1290 "Increasing this value improves the grid representation, but it is "// &
1291 "not a substitute for converging the Gaussian basis set. "// &
1292 "Default value for SE or DFTB calculation is 1.0 [Ry].", &
1293 usage=
"cutoff 300", &
1295 n_var=1, unit_str=
"Ry")
1299 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1300 description=
"Factor used to derive the cutoff of coarser multigrid levels when "// &
1301 "they are not given explicitly.", &
1302 usage=
"progression_factor <integer>", default_r_val=3._dp)
1306 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1307 description=
"If the grids should be commensurate. If true overrides "// &
1308 "the progression factor and the cutoffs of the sub grids", &
1309 usage=
"commensurate", default_l_val=.false., &
1310 lone_keyword_l_val=.true.)
1315 description=
"If both rho and rho_gspace are needed ", &
1316 usage=
"realspace", default_l_val=.false., &
1317 lone_keyword_l_val=.true.)
1322 variants=[
"RELATIVE_CUTOFF"], &
1323 description=
"Controls to which multigrid level a Gaussian product is mapped. "// &
1324 "It is the reference cutoff for a Gaussian with exponent alpha=1. Larger values "// &
1325 "keep more Gaussian products on finer grids and can be important for accurate "// &
1326 "energies, forces, stress tensors, and variable-cell simulations.", &
1327 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1332 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1333 description=
"Activate a manual setting of the multigrids", &
1334 usage=
"MULTIGRID_SET", default_l_val=.false.)
1339 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1340 description=
"Skips load balancing on distributed multigrids. "// &
1341 "Memory usage is O(p) so may be used "// &
1342 "for all but the very largest runs.", &
1343 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1344 default_l_val=.false., &
1345 lone_keyword_l_val=.true.)
1354 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1355 variants=[
"CUTOFF_LIST"], &
1356 description=
"List of cutoff values to set up multigrids manually", &
1357 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1364 IF (create_subsections)
THEN
1365 NULLIFY (subsection)
1370 NULLIFY (subsection)
1388 cpassert(.NOT.
ASSOCIATED(section))
1389 CALL section_create(section, __location__, name=
"interpolator", &
1390 description=
"kind of interpolation used between the multigrids", &
1391 n_keywords=5, n_subsections=0, repeats=.false.)
1393 NULLIFY (keyword, print_key)
1396 description=
"the interpolator to use", &
1397 usage=
"kind spline3", &
1399 enum_c_vals=
s2a(
"pw",
"spline3_nopbc",
"spline3"), &
1405 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1406 description=
"if a non unrolled calculation is to be performed in parallel", &
1407 usage=
"safe_computation OFF", &
1408 default_l_val=.false., &
1409 lone_keyword_l_val=.true.)
1413 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1414 description=
"the approximate inverse to use to get the starting point"// &
1415 " for the linear solver of the spline3 methods", &
1416 usage=
"aint_precond copy", &
1418 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1419 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1426 description=
"The preconditioner used"// &
1427 " for the linear solver of the spline3 methods", &
1428 usage=
"PRECOND copy", &
1430 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1431 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1438 description=
"accuracy on the solution for spline3 the interpolators", &
1439 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1444 description=
"accuracy on the residual for spline3 the interpolators", &
1445 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1450 variants=[
'maxiter'], &
1451 description=
"the maximum number of iterations", &
1452 usage=
"max_iter 200", default_i_val=100)
1458 description=
"if convergence information about the linear solver"// &
1459 " of the spline methods should be printed", &
1461 each_iter_values=[10], filename=
"__STD_OUT__", &
1473 SUBROUTINE create_sic_section(section)
1478 cpassert(.NOT.
ASSOCIATED(section))
1480 description=
"parameters for the self interaction correction", &
1481 n_keywords=6, n_subsections=0, repeats=.false., &
1486 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1487 description=
"Scaling of the coulomb term in sic [experimental]", &
1488 usage=
"SIC_SCALING_A 0.5", &
1490 default_r_val=1.0_dp)
1494 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1495 description=
"Scaling of the xc term in sic [experimental]", &
1496 usage=
"SIC_SCALING_B 0.5", &
1498 default_r_val=1.0_dp)
1503 description=
"Method used to remove the self interaction", &
1504 usage=
"SIC_METHOD MAURI_US", &
1506 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1508 enum_desc=
s2a(
"Do not apply a sic correction", &
1509 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1510 " on the spin density / doublet unpaired orbital", &
1511 "Employ a (scaled) Perdew-Zunger expression"// &
1512 " on the spin density / doublet unpaired orbital", &
1513 "The average density correction", &
1514 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1520 description=
"Type of orbitals treated with the SIC", &
1521 usage=
"ORBITAL_SET ALL", &
1523 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1524 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1525 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1530 END SUBROUTINE create_sic_section
1537 SUBROUTINE create_low_spin_roks_section(section)
1542 cpassert(.NOT.
ASSOCIATED(section))
1543 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1544 description=
"Specify the details of the low spin ROKS method. "// &
1545 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1546 " with a energy scaling factor, and a prescription of the spin state.", &
1547 n_keywords=6, n_subsections=0, repeats=.false.)
1550 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1551 description=
"The scaling factors for each term added to the total energy. "// &
1552 "This list should contain one number for each term added to the total energy.", &
1553 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1554 n_var=-1, type_of_var=
real_t, repeats=.false.)
1558 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1559 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1560 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1561 usage=
"SPIN_CONFIGURATION 1 2", &
1562 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1566 END SUBROUTINE create_low_spin_roks_section
1572 SUBROUTINE create_rtp_section(section)
1576 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1579 cpassert(.NOT.
ASSOCIATED(section))
1580 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1581 description=
"Parameters needed to set up the real time propagation"// &
1582 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1583 n_keywords=4, n_subsections=4, repeats=.false., &
1587 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1588 usage=
"MAX_ITER 10", &
1594 description=
"Convergence criterion for the self consistent propagator loop.", &
1595 usage=
"EPS_ITER 1.0E-5", &
1596 default_r_val=1.0e-7_dp)
1601 description=
"Speciefies how many steps will be used for extrapolation. "// &
1602 "One will be always used which is means X(t+dt)=X(t)", &
1603 usage=
"ASPC_ORDER 3", &
1609 description=
"Which method should be used to calculate the exponential"// &
1610 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1611 "and ARNOLDI otherwise.", &
1612 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1613 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1615 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1616 " with a taylor expansion of the exponential.", &
1617 "uses scaling and squaring together with the pade approximation", &
1618 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1619 "combination with Crank Nicholson or density propagation", &
1620 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1621 " only works for density propagation", &
1622 "Uses diagonalisation of the exponent matrices to determine the "// &
1623 "matrix exponential exactly. Only implemented for GWBSE."))
1627 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1628 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1629 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1630 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1631 usage=
"DENSITY_PROPAGATION .TRUE.", &
1632 default_l_val=.false., lone_keyword_l_val=.true.)
1636 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1637 description=
"Speciefies how many iteration steps will be done without "// &
1638 "a check for self consistency. Can save some time in big calculations.", &
1639 usage=
"SC_CHECK_START 3", &
1644 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1645 description=
"Accuracy for the taylor and pade approximation. "// &
1646 "This is only an upper bound bound since the norm used for the guess "// &
1647 "is an upper bound for the needed one.", &
1648 usage=
"EXP_ACCURACY 1.0E-6", &
1649 default_r_val=1.0e-9_dp)
1654 description=
"Which propagator should be used for the orbitals", &
1655 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1656 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1658 enum_desc=
s2a(
"enforced time reversible symmetry", &
1659 "Crank Nicholson propagator", &
1660 "Exponential midpoint propagator"))
1665 description=
"Controls the initial WFN used for propagation. "// &
1666 "Note that some energy contributions may not be "// &
1667 "initialized in the restart cases, for instance "// &
1668 "electronic entropy energy in the case of smearing.", &
1669 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1670 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1672 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1673 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1674 " if electronic constraints or restraints are used in the previous calculation, "// &
1675 "since these do not work in the rtp scheme.", &
1676 "use the wavefunction of a real time propagation/ehrenfest run"))
1680 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1681 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1682 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1683 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1684 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1685 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1686 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1687 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1688 default_l_val=.false., lone_keyword_l_val=.true.)
1692 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1693 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1694 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1695 usage=
"APPLY_DELTA_PULSE", &
1696 default_l_val=.false., lone_keyword_l_val=.true.)
1700 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1701 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1702 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1703 usage=
"APPLY_DELTA_PULSE_MAG", &
1704 default_l_val=.false., lone_keyword_l_val=.true.)
1708 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1709 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1710 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1711 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1712 usage=
"VELOCITY_GAUGE T", &
1713 default_l_val=.false., lone_keyword_l_val=.true.)
1718 description=
"Define gauge origin for magnetic perturbation", &
1719 usage=
"GAUGE_ORIG COM", &
1720 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1721 enum_desc=
s2a(
"Use Center of Mass", &
1722 "Use Center of Atomic Charges", &
1723 "Use User Defined Point (Keyword:REF_POINT)", &
1724 "Use Origin of Coordinate System"), &
1733 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1734 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1735 usage=
"GAUGE_ORIG_MANUAL x y z", &
1737 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1744 description=
"apply gauge transformed non-local potential term"// &
1745 " only affects VELOCITY_GAUGE=.TRUE.", &
1746 usage=
"VG_COM_NL T", &
1747 default_l_val=.true., lone_keyword_l_val=.true.)
1752 description=
"Include non-local commutator for periodic delta pulse."// &
1753 " only affects PERIODIC=.TRUE.", &
1755 default_l_val=.true., lone_keyword_l_val=.true.)
1760 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1761 " This corresponds to a 1st order perturbation in the length gauge."// &
1762 " Note that this is NOT compatible with a periodic calculation!"// &
1763 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1764 usage=
"LEN_REP T", &
1765 default_l_val=.false., lone_keyword_l_val=.true.)
1770 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1771 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1772 " the initial wfn with the velocity operator as perturbation."// &
1773 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1774 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1775 " and not for restarts (RT_RESTART).", &
1777 default_l_val=.true., lone_keyword_l_val=.true.)
1782 description=
"Localise the Molecular orbitals each n steps "// &
1783 "real-time propagated TDDFT, 0 means never localise", &
1784 usage=
"LOCALIZE", default_i_val=0)
1788 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1789 description=
"Direction of the applied electric field. The k vector is given as"// &
1790 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1791 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1792 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1793 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=[1, 0, 0], &
1798 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1799 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1800 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1801 " applied electric field in atomic units.", &
1802 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1806 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1807 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1808 " of the integrals, balanced with respect to the in core steps.", &
1809 usage=
"HFX_BALANCE_IN_CORE", &
1810 default_l_val=.false., lone_keyword_l_val=.true.)
1814 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1815 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1816 " step in density propagation", &
1817 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1822 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1823 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1824 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1825 " reduced for these calculations.", &
1826 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1831 description=
"Threshold after which McWeeny is terminated", &
1832 usage=
"MCWEENY_EPS 0.00001", &
1833 default_r_val=0.0_dp)
1837 NULLIFY (print_section)
1839 description=
"Section of possible print options for an RTP runs", &
1844 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1850 description=
"Controls the dumping of the MO restart file during rtp. "// &
1851 "By default keeps a short history of three restarts. "// &
1852 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1853 "density matrix.", &
1855 each_iter_names=
s2a(
"MD"), each_iter_values=[20], &
1857 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1858 description=
"Specifies the maximum number of backup copies.", &
1859 usage=
"BACKUP_COPIES {int}", &
1867 description=
"Dumps unique MO restart files during the run keeping all of them. "// &
1868 "In density propagation it dumps the density matrix instead", &
1870 each_iter_names=
s2a(
"MD"), &
1871 each_iter_values=[500], &
1873 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1874 description=
"Specifies the maximum number of backup copies.", &
1875 usage=
"BACKUP_COPIES {int}", &
1883 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1886 each_iter_names=
s2a(
"MD"), &
1887 each_iter_values=[1], &
1897 description=
"Print the integral of the current density (only if the"// &
1898 " imaginary part of the density is NOT zero.", &
1900 each_iter_names=
s2a(
"MD"), &
1901 each_iter_values=[1], &
1902 filename=
"rtp_j_int")
1907 description=
"Print the current during an EMD simulation to cube files.", &
1909 each_iter_names=
s2a(
"MD"), &
1910 each_iter_values=[20], &
1912 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
1913 description=
"Specifies the maximum number of backup copies.", &
1914 usage=
"BACKUP_COPIES {int}", &
1919 description=
"The stride (X,Y,Z) used to write the cube file "// &
1920 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1921 " 1 number valid for all components.", &
1922 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1931 description=
"Prints the density matrix at iterations in clear text to a file", &
1933 each_iter_names=
s2a(
"MD"), &
1934 each_iter_values=[1], &
1940 description=
"Prints the time-dependent electronic moments at "// &
1941 "iterations in clear text to a file.", &
1943 each_iter_names=
s2a(
"MD"), &
1944 each_iter_values=[1], &
1945 filename=
"__STD_OUT__")
1947 variants=
s2a(
"REF"), &
1948 description=
"Define the reference point for the calculation of the electrostatic moment.", &
1949 usage=
"REFERENCE COM", &
1950 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1951 enum_desc=
s2a(
"Use Center of Mass", &
1952 "Use Center of Atomic Charges", &
1953 "Use User Defined Point (Keyword:REFERENCE_POINT)", &
1954 "Use Origin of Coordinate System"), &
1963 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1964 variants=
s2a(
"REF_POINT"), &
1965 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
1966 usage=
"REFERENCE_POINT x y z", &
1968 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1970 unit_str=
'angstrom')
1977 description=
"Prints the calculated Fourier transform of "// &
1978 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1979 "can be supplied with starting time.", &
1981 each_iter_names=
s2a(
"MD"), &
1982 each_iter_values=[1], &
1983 filename=
"MOMENTS_FT")
1988 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1989 "to a specified file. The tensor is calculated as ratio of "// &
1990 "Fourier transform of the dipole "// &
1991 "moment trace and Fourier transform of the applied field "// &
1992 "(for delta kick, constant real field is applied.", &
1994 each_iter_names=
s2a(
"MD"), &
1995 each_iter_values=[1], &
1996 filename=
"POLARIZABILITY")
1998 description=
"Specifies the element of polarizability which is to be printed out "// &
1999 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
2000 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
2001 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
2002 type_of_var=
integer_t, default_i_vals=[1, 1], n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
2009 description=
"Prints the eigenvalues of the linearized RT-BSE "// &
2010 "Liouvillian on the OV subspace, computed once at job init from a "// &
2011 "matrix-free probe of the kernel (no time propagation). In TDA this "// &
2012 "equals the Casida-A eigenvalue problem and gives a broadening-free, "// &
2013 "finite-time-free correctness check against bse_full.F. "// &
2014 "Activated by RTBSE%DIAGNOSE_LIOUVILLIAN_EIG. Output lists "// &
2015 "eigenvalues in atomic units and eV.", &
2017 each_iter_names=
s2a(
"MD"), &
2018 each_iter_values=[1], &
2019 filename=
"LIOUVILLIAN_EIG")
2024 description=
"Print the energy constituents (relevant to RTP) which make up "// &
2025 "the Total Energy", &
2027 each_iter_names=
s2a(
"MD"), &
2028 each_iter_values=[1], &
2037 NULLIFY (subsection)
2038 CALL create_rtbse_section(subsection)
2042 CALL create_ft_section(subsection)
2046 END SUBROUTINE create_rtp_section
2052 SUBROUTINE create_rtbse_section(section)
2058 cpassert(.NOT.
ASSOCIATED(section))
2061 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
2062 "Note that running RTBSE requires previous low-scaling "// &
2063 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
2064 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
2065 "deallocation errors. More details (including description of output files) is available in "// &
2066 "the [methods](../../../../methods/properties/optical/rtbse) section of the documentation.", &
2070 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2071 description=
"Which method is used for the time propagation of electronic structure. "// &
2072 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
2073 "Green's function instead of density matrix/molecular orbitals.", &
2074 usage=
"&RTBSE TDDFT", &
2077 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
2079 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
2080 "Use RT-BSE for Green's function propagation"))
2085 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
2086 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
2087 " in the Green's propagator.", &
2088 usage=
"RTBSE_HAMILTONIAN G0W0", &
2090 enum_c_vals=
s2a(
"KS",
"G0W0"), &
2092 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's propagation.", &
2093 "Use G0W0 Hamiltonian for Green's function propagation"))
2098 CALL keyword_create(keyword, __location__, name=
"LINEARIZED_BSE_PROPAGATION", &
2099 variants=
s2a(
"LRRTBSE"), &
2100 description=
"Linearizes the BSE propagation", &
2101 usage=
"LINEARIZED_BSE_PROPAGATION .T.", &
2102 default_l_val=.false., &
2103 lone_keyword_l_val=.true.)
2108 CALL keyword_create(keyword, __location__, name=
"ENERGY_CUTOFF_OCC", &
2109 description=
"Energy cutoff (relative to HOMO) defining the lowest "// &
2110 "occupied molecular orbital included in the active MO window of the "// &
2111 "linearized RT-BSE propagation. Only used when "// &
2112 "LINEARIZED_BSE_PROPAGATION=.TRUE.. A non-positive value disables the "// &
2113 "occupied truncation.", &
2114 usage=
"ENERGY_CUTOFF_OCC 5.0", &
2116 default_r_val=-1.0_dp/
evolt)
2121 CALL keyword_create(keyword, __location__, name=
"ENERGY_CUTOFF_EMPTY", &
2122 description=
"Energy cutoff (relative to LUMO) defining the highest "// &
2123 "virtual molecular orbital included in the active MO window of the "// &
2124 "linearized RT-BSE propagation. Only used when "// &
2125 "LINEARIZED_BSE_PROPAGATION=.TRUE.. A non-positive value disables the "// &
2126 "virtual truncation.", &
2127 usage=
"ENERGY_CUTOFF_EMPTY 5.0", &
2129 default_r_val=-1.0_dp/
evolt)
2133 CALL keyword_create(keyword, __location__, name=
"ENFORCE_MAX_DT", &
2134 description=
"For linearized RT-BSE, recompute TIMESTEP and STEPS so the same total "// &
2135 "propagation time is covered with the largest timestep that does not exceed the "// &
2136 "estimated RK4 stability limit.", &
2137 usage=
"ENFORCE_MAX_DT", &
2138 default_l_val=.false., &
2139 lone_keyword_l_val=.true.)
2145 description=
"Apply the Tamm-Dancoff approximation to the linearized RT-BSE kernel: "// &
2146 "the Hartree and screened-exchange contributions are restricted so that the OV and VO "// &
2147 "blocks of the density response remain decoupled (i.e. only A-block coupling is kept, "// &
2148 "B-block coupling is dropped). Only effective when "// &
2149 "LINEARIZED_BSE_PROPAGATION=.TRUE..", &
2151 default_l_val=.false., &
2152 lone_keyword_l_val=.true.)
2157 CALL keyword_create(keyword, __location__, name=
"TDA_SHIFT_TO_FIRST_PEAK", &
2158 description=
"For the linearized RT-BSE TDA path, shift the active-MO single-particle "// &
2159 "diagonals by +Omega_0/2 (occupied) and -Omega_0/2 (virtual) with "// &
2160 "Omega_0 = eps_min_ai, so the lowest active OV mode oscillates at zero frequency "// &
2161 "in the rotating frame (RK4-exact for peak 1). omega_max becomes the full active "// &
2162 "OV width Delta = eps_max_ai - eps_min_ai. The rotation is undone at I/O so "// &
2163 "observables remain in the lab frame. Only effective when TDA=.TRUE.. "// &
2164 "Use with caution, additional convergence checks w.r.t. dt needed.", &
2165 usage=
"TDA_SHIFT_TO_FIRST_PEAK", &
2166 default_l_val=.false., &
2167 lone_keyword_l_val=.true.)
2171 CALL keyword_create(keyword, __location__, name=
"DEBUG_DISABLE_HARTREE", &
2172 description=
"Debug option for linearized RT-BSE: disables the Hartree kernel in both "// &
2173 "the static reference initialization and the propagation. The Coulomb RI setup is "// &
2174 "still built so the run stays internally consistent.", &
2175 usage=
"DEBUG_DISABLE_HARTREE", &
2176 default_l_val=.false., &
2177 lone_keyword_l_val=.true.)
2182 description=
"Select the RI framework used to evaluate the linearized RT-BSE "// &
2183 "Hartree and screened-exchange kernels (propagation and reference). "// &
2184 "DEFAULT infers from the GW flavor: RI-RS if the GW_RI_RS section was active, "// &
2185 "AO-RI otherwise. RS/AO force that framework regardless of how GW was run. The "// &
2186 "RI-RS grid (mat_phi_mu_l, mat_Z_lP) and the V_grid/W0_grid kernels are built on "// &
2187 "demand. RI-RS is implemented for linearized RT-BSE only; for full RT-BSE an "// &
2188 "explicit RS is overridden to AO with a warning.", &
2189 usage=
"KERNEL_RI RS", &
2190 enum_c_vals=
s2a(
"DEFAULT",
"RS",
"AO"), &
2192 enum_desc=
s2a(
"Infer from the GW flavor (GW_RI_RS active -> RS, else AO).", &
2193 "Real-space RI grid kernels (linearized RT-BSE only).", &
2194 "AO-RI kernels."), &
2199 CALL keyword_create(keyword, __location__, name=
"DEBUG_DISABLE_SEX", &
2200 description=
"Debug option for linearized RT-BSE: disables the screened-exchange kernel "// &
2201 "in both the static reference initialization and the propagation.", &
2202 usage=
"DEBUG_DISABLE_SEX", &
2203 default_l_val=.false., &
2204 lone_keyword_l_val=.true.)
2209 CALL keyword_create(keyword, __location__, name=
"DIAGNOSE_LIOUVILLIAN_EIG", &
2210 description=
"Diagnostic for linearized RT-BSE: at job initialization, build the "// &
2211 "Liouvillian on the OV subspace by probing the kernel routine with canonical OV basis "// &
2212 "vectors, then diagonalize. In TDA this equals the Casida-A eigenvalue problem, giving a "// &
2213 "broadening-free, finite-time-free correctness check against bse_full.F. "// &
2214 "In ABBA it builds and diagonalizes the full coupled (A, B) Liouvillian via the "// &
2215 "Furche reduction. "// &
2216 "Output is controlled by the LIOUVILLIAN_EIG print key in the parent "// &
2217 "&REAL_TIME_PROPAGATION%&PRINT section.", &
2218 usage=
"DIAGNOSE_LIOUVILLIAN_EIG", &
2219 default_l_val=.false., &
2220 lone_keyword_l_val=.true.)
2224 END SUBROUTINE create_rtbse_section
2231 SUBROUTINE create_ft_section(ft_section)
2237 cpassert(.NOT.
ASSOCIATED(ft_section))
2242 description=
"Define parameters for Fourier transforms used in RTP outputs.", &
2248 description=
"The starting time from which damping is applied and from which on the trace is "// &
2249 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
2250 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
2251 "one can specify the center of the pulse as the starting point.", &
2254 default_r_val=0.0_dp)
2260 description=
"Numerical Fourier transform (required for calculation of "// &
2261 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
2262 "when the final time trace values are far away from zero. "// &
2263 "This keyword controls the exponential damping added to the Fourier transform "// &
2264 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
2265 "For negative values (the default), calculates the damping at the run time so that the last point "// &
2266 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
2267 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
2268 "the damping is not applied.", &
2276 NULLIFY (subsection)
2278 description=é
"Defines the parameters for the Pad interpolation of the "// &
2279 "Fourier transforms used in the output of RTP. Only available with the GreenX library linked to CP2K.", &
2283 CALL keyword_create(keyword, __location__,
"_SECTION_PARAMETERS_", &
2284 description=é
"Turns on the Pad interpolation", &
2286 default_l_val=.false., &
2287 lone_keyword_l_val=.true.)
2293 description=é
"The minimum energy of the Pad interpolation output.", &
2296 default_r_val=0.0_dp)
2302 description=é
"The maximum energy of the Pad interpolation output.", &
2305 default_r_val=100.0_dp)
2311 description=é
"The energy resolution of the Pad interpolation output.", &
2314 default_r_val=0.02_dp/
evolt)
2320 description=
"The lower boundary in energy for the points "// &
2321 é
"used in the fitting of Pad parameters. If negative, uses "// &
2322 "value of E_MIN (default).", &
2325 default_r_val=-1.0_dp)
2331 description=
"The upper boundary in energy for the points "// &
2332 é
"used in the fitting of Pad parameters. If negative, uses "// &
2333 "the value of E_MAX (default).", &
2336 default_r_val=-1.0_dp)
2343 END SUBROUTINE create_ft_section
2353 SUBROUTINE create_sccs_section(section)
2360 cpassert(.NOT.
ASSOCIATED(section))
2364 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2373 name=
"_SECTION_PARAMETERS_", &
2374 description=
"Controls the activation of the SCCS section", &
2376 default_l_val=.false., &
2377 lone_keyword_l_val=.true.)
2383 description=
"Solvent specific tunable parameter for the calculation of "// &
2384 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2385 "where $S$ is the (quantum) surface of the cavity", &
2389 default_r_val=0.0_dp, &
2396 description=
"Solvent specific tunable parameter for the calculation of "// &
2397 "the dispersion term $G^\text{dis} = \beta V$ "// &
2398 "where $V$ is the (quantum) volume of the cavity", &
2402 default_r_val=0.0_dp, &
2409 description=
"Numerical increment for the calculation of the (quantum) "// &
2410 "surface of the solute cavity", &
2414 default_r_val=2.0e-5_dp)
2419 name=
"DERIVATIVE_METHOD", &
2420 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2421 usage=
"DERIVATIVE_METHOD cd5", &
2425 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2430 enum_desc=
s2a(
"Fast Fourier transformation", &
2431 "3-point stencil central differences", &
2432 "5-point stencil central differences", &
2433 "7-point stencil central differences"))
2438 name=
"RELATIVE_PERMITTIVITY", &
2439 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2440 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2444 default_r_val=80.0_dp, &
2445 usage=
"RELATIVE_PERMITTIVITY 78.36")
2451 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2452 description=
"Tolerance for the convergence of the polarisation density, "// &
2453 "i.e. requested accuracy for the SCCS iteration cycle", &
2457 default_r_val=1.0e-6_dp, &
2458 usage=
"EPS_ITER 1.0E-7")
2464 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2465 "is converged to this threshold value", &
2469 default_r_val=0.5_dp, &
2470 usage=
"EPS_SCF 1.0E-2")
2476 variants=
s2a(
"SURFACE_TENSION"), &
2477 description=
"Surface tension of the solvent used for the calculation of "// &
2478 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2479 "where $S$ is the (quantum) surface of the cavity", &
2483 default_r_val=0.0_dp, &
2490 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2491 "within the given tolerance", &
2495 default_i_val=100, &
2496 usage=
"MAX_ITER 50")
2502 description=
"Method used for the smoothing of the dielectric function", &
2503 usage=
"METHOD Fattebert-Gygi", &
2505 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI",
"SAA_ANDREUSSI"), &
2507 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2508 "Smoothing function proposed by Fattebert and Gygi", &
2509 "Smoothing function of the solvent aware algorithm"))
2516 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2520 default_r_val=0.6_dp, &
2525 NULLIFY (subsection)
2529 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2530 "Andreussi et al.", &
2538 description=
"Maximum density value used for the smoothing of the dielectric function", &
2542 default_r_val=0.0035_dp, &
2543 usage=
"RHO_MAX 0.01")
2549 description=
"Minimum density value used for the smoothing of the dielectric function", &
2553 default_r_val=0.0001_dp, &
2554 usage=
"RHO_MIN 0.0003")
2562 name=
"FATTEBERT-GYGI", &
2563 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2564 "Fattebert and Gygi", &
2572 description=
"Parameter β changes the width of the interface solute-solvent", &
2576 default_r_val=1.7_dp, &
2583 variants=[
"RHO0"], &
2584 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2585 "of the interface solute-solvent", &
2589 default_r_val=0.0006_dp, &
2590 usage=
"RHO_ZERO 0.0004")
2598 name=
"SAA_ANDREUSSI", &
2599 description=
"Define the parameters of the dielectric smoothing function of "// &
2600 "the solvent aware algorithm proposed by Andreussi et al.", &
2608 description=
"Maximum density value used for the smoothing of the dielectric function", &
2612 default_r_val=0.0035_dp, &
2613 usage=
"RHO_MAX 0.01")
2619 description=
"Minimum density value used for the smoothing of the dielectric function", &
2623 default_r_val=0.0001_dp, &
2624 usage=
"RHO_MIN 0.0003")
2630 description=
"The threshold of the filled fraction that controls whether a point in space "// &
2631 "needs to be removed from the continuum", &
2635 default_r_val=0.65_dp, &
2642 description=
"Controls the softness of function t(r)", &
2646 default_r_val=0.02_dp, &
2647 usage=
"DELTA_ETA 0.02")
2652 name=
"DELTA_ZETA", &
2653 description=
"Controls the softness of function u(r)", &
2658 default_r_val=0.5_dp, &
2659 usage=
"DELTA_ZETA 0.5")
2664 name=
"ALPHA_ZETA", &
2665 description=
"The scaling factor for R_SOLV", &
2669 default_r_val=2.0_dp, &
2670 usage=
"ALPHA_ZETA 2.0")
2676 description=
"The solvent radius", &
2681 default_r_val=2.6_dp, &
2689 END SUBROUTINE create_sccs_section
2697 SUBROUTINE create_pcc_section(section)
2703 cpassert(.NOT.
ASSOCIATED(section))
2706 name=
"PLANAR_COUNTER_CHARGE", &
2707 description=
"Define the parameters for the planar counter charge density", &
2716 name=
"_SECTION_PARAMETERS_", &
2717 description=
"Controls the activation of the planar counter charge section", &
2718 usage=
"&PLANAR_COUNTER_CHARGE ON", &
2719 default_l_val=.false., &
2720 lone_keyword_l_val=.true.)
2724 CALL keyword_create(keyword, __location__, name=
"PARALLEL_PLANE", &
2725 enum_c_vals=
s2a(
'XY',
'YZ',
'XZ'), &
2726 enum_i_vals=[3, 1, 2], &
2727 description=
"The coordinate plane that the surface is parallel to.", &
2728 enum_desc=
s2a(
"Parallel to XY",
"Parallel to YZ",
"Parallel to XZ"), &
2731 usage=
"PARALLEL_PLANE XY")
2737 description=
"Controls the distance between the center of the Gaussian "// &
2738 "and the cell boundary", &
2739 usage=
"DIST_EDGE 1.0", &
2740 unit_str=
"angstrom", &
2747 description=
"Controls the spread of the Gaussian distribution", &
2748 usage=
"GAU_C 0.1", &
2749 unit_str=
"angstrom", &
2754 END SUBROUTINE create_pcc_section
2763 SUBROUTINE create_paep_section(section)
2769 cpassert(.NOT.
ASSOCIATED(section))
2772 name=
"PLANAR_AVERAGED_V_HARTREE", &
2773 description=
"Define the parameters for calculating and printing the planar "// &
2774 "averaged electrostatic potential (Hartree potential) "// &
2775 "for symmetric slab systems", &
2783 name=
"_SECTION_PARAMETERS_", &
2784 description=
"Controls the activation of the planar averaged electrostatic "// &
2785 "potential (Hartree potential) section", &
2786 usage=
"&PLANAR_AVERAGED_V_HARTREE ON", &
2787 default_l_val=.false., &
2788 lone_keyword_l_val=.true.)
2792 CALL keyword_create(keyword, __location__, name=
"PARALLEL_PLANE", &
2793 enum_c_vals=
s2a(
'XY',
'YZ',
'XZ'), &
2794 enum_i_vals=[3, 1, 2], &
2795 description=
"The coordinate plane that the surface is parallel to.", &
2796 enum_desc=
s2a(
"Parallel to XY",
"Parallel to YZ",
"Parallel to XZ"), &
2799 usage=
"PARALLEL_PLANE XY")
2803 END SUBROUTINE create_paep_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 andreussi2019
integer, save, public avezac2005
integer, save, public andreussi2012
integer, save, public iannuzzi2006
integer, save, public chai2025a
integer, save, public fattebert2002
integer, save, public andermatt2016
integer, save, public merlot2014
integer, save, public perdew1981
integer, save, public marek2025
integer, save, public brelaz1979
integer, save, public chai2024a
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.