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 "This keyword can be repeated to search several pseudopotential files. "// &
147 "Files are searched in input order and the first matching potential is used. "// &
148 "The potential selected for each kind is set with KIND%POTENTIAL.", &
149 usage=
"POTENTIAL_FILE_NAME <FILENAME>", &
150 type_of_var=
lchar_t, repeats=.true., &
151 default_lc_val=
"POTENTIAL", n_var=1)
155 CALL keyword_create(keyword, __location__, name=
"WFN_RESTART_FILE_NAME", &
156 variants=[
"RESTART_FILE_NAME"], &
157 description=
"Name of the wavefunction restart file, may include a path."// &
158 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
159 usage=
"WFN_RESTART_FILE_NAME <FILENAME>", &
166 variants=
s2a(
"UNRESTRICTED_KOHN_SHAM", &
169 description=
"Requests a spin-polarized calculation using alpha "// &
170 "and beta orbitals, i.e. no spin restriction is applied", &
172 default_l_val=.false., &
173 lone_keyword_l_val=.true.)
178 variants=[
"RESTRICTED_OPEN_KOHN_SHAM"], &
179 description=
"Requests a restricted open Kohn-Sham calculation", &
181 default_l_val=.false., &
182 lone_keyword_l_val=.true.)
186 name=
"MULTIPLICITY", &
187 variants=[
"MULTIP"], &
188 description=
"Two times the total spin plus one. "// &
189 "Specify 3 for a triplet, 4 for a quartet, "// &
190 "and so on. Default is 1 (singlet) for an "// &
191 "even number and 2 (doublet) for an odd number "// &
193 usage=
"MULTIPLICITY 3", &
198 description=
"The total charge of the system", &
205 name=
"PLUS_U_METHOD", &
206 description=
"Method employed for the calculation of the DFT+U contribution", &
208 enum_c_vals=
s2a(
"LOWDIN",
"MULLIKEN",
"MULLIKEN_CHARGES",
"TENSORIAL"), &
211 enum_desc=
s2a(
"Method based on Lowdin population analysis "// &
212 "(computationally expensive, since the diagonalization of the "// &
213 "overlap matrix is required, but possibly more robust than Mulliken)", &
214 "Method based on Mulliken population analysis using the net AO and "// &
215 "overlap populations (computationally cheap method)", &
216 "Method based on Mulliken gross orbital populations (GOP)", &
217 "Method based on Tensorial population analysis approach"), &
220 usage=
"PLUS_U_METHOD Lowdin")
225 name=
"EPS_U_J_LOOP", &
226 description=
"Convergence threshold for the self-consistent update of U and J parameters "// &
227 "in the minimum tracking linear response calculation.", &
230 unit_str=
"hartree", &
231 default_r_val=1.0e-2_dp, &
232 usage=
"EPS_U_J_LOOP [eV] 0.01")
237 name=
"MTLR_REFERENCE_SCF", &
238 description=
"Controls the unperturbed reference SCF for minimum tracking linear "// &
239 "response. With SCF_GUESS ATOMIC, the default is OFF. If enabled, an unperturbed "// &
240 "reference SCF is first converged and its orbitals initialize every perturbation. "// &
241 "With SCF_GUESS RESTART, a reference SCF is required and uses the standard "// &
242 "restart initial guess.", &
245 lone_keyword_l_val=.true., &
246 usage=
"MTLR_REFERENCE_SCF ON")
251 name=
"MAX_MTLR_LOOP", &
252 description=
"Max number of iterations for calculated self-consistent linear response U and J.", &
255 usage=
"MAX_MTLR_LOOP 10")
260 name=
"RELAX_MULTIPLICITY", &
261 variants=[
"RELAX_MULTIP"], &
262 description=
"Tolerance in Hartrees. Do not enforce the occupation "// &
263 "of alpha and beta MOs due to the initially "// &
264 "defined multiplicity, but rather follow the Aufbau principle. "// &
265 "A value greater than zero activates this option. "// &
266 "If alpha/beta MOs differ in energy less than this tolerance, "// &
267 "then alpha-MO occupation is preferred even if it is higher "// &
268 "in energy (within the tolerance). "// &
269 "Such spin-symmetry broken (spin-polarized) occupation is used "// &
270 "as SCF input, which (is assumed to) bias the SCF "// &
271 "towards a spin-polarized solution. "// &
272 "Thus, larger tolerance increases chances of ending up "// &
273 "with spin-polarization. "// &
274 "This option is only valid for unrestricted (i.e. spin polarised) "// &
275 "Kohn-Sham (UKS) calculations. It also needs non-zero "// &
276 "[ADDED_MOS](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.ADDED_MOS) to actually affect the calculations, "// &
277 "which is why it is not expected to work with [OT](#CP2K_INPUT.FORCE_EVAL.DFT.SCF.OT) "// &
278 "and may raise errors when used with OT. "// &
279 "For more details see [this discussion](https://github.com/cp2k/cp2k/issues/4389).", &
280 usage=
"RELAX_MULTIPLICITY 0.00001", &
282 default_r_val=0.0_dp)
287 description=
"Read the grid size for subcell generation in the construction of "// &
288 "neighbor lists.", usage=
"SUBCELLS 1.5", &
289 n_var=1, default_r_val=2.0_dp)
294 description=
"Specify type and size of automatically generated auxiliary "// &
295 "(RI) basis sets. Exactly two arguments are required for this option. "// &
296 "The first argument of basis type should be one of the following: "// &
297 "`RI_AUX`, `AUX_FIT`, `LRI_AUX`, `P_LRI_AUX`, `RI_HXC`, `RI_XAS`, or "// &
298 "`RI_HFX`. The second argument of basis size should be one of the "// &
299 "following: `SMALL`, `MEDIUM`, `LARGE`, or `HUGE`. The default is not "// &
300 "using any of these basis sets, requested by `AUTO_BASIS X X` (exactly "// &
301 "as written here).", &
302 usage=
"AUTO_BASIS {basis_type} {basis_size}", &
303 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"X",
"X"])
308 name=
"SURFACE_DIPOLE_CORRECTION", &
309 variants=
s2a(
"SURFACE_DIPOLE", &
311 description=
"For slab calculations with asymmetric geometries, activate the correction of "// &
312 "the electrostatic potential with "// &
313 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
314 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
316 default_l_val=.false., &
317 lone_keyword_l_val=.true., &
323 name=
"SURF_DIP_DIR", &
324 description=
"Cartesian axis parallel to surface normal.", &
325 enum_c_vals=
s2a(
"X",
"Y",
"Z"), &
326 enum_i_vals=[1, 2, 3], &
327 enum_desc=
s2a(
"Along x",
"Along y",
"Along z"), &
330 usage=
"SURF_DIP_DIR Z")
335 name=
"SURF_DIP_POS", &
336 description=
"This keyword assigns an user defined position in Angstroms "// &
337 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
338 "The default value is -1.0_dp which appplies the correction at a position "// &
339 "that has minimum electron density on the grid.", &
340 usage=
"SURF_DIP_POS -1.0_dp", &
341 default_r_val=-1.0_dp)
346 name=
"SURF_DIP_SWITCH", &
347 description=
"WARNING: Experimental feature under development that will help the "// &
348 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
349 "surface dipole correction is switched off if the calculation does not converge in "// &
350 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
351 "The default value is .FALSE.", &
352 usage=
"SURF_DIP_SWITCH .TRUE.", &
353 default_l_val=.false., &
354 lone_keyword_l_val=.true.)
359 name=
"CORE_CORR_DIP", &
360 description=
"If the total CORE_CORRECTION is non-zero and surface dipole "// &
361 "correction is switched on, presence of this keyword will adjust electron "// &
362 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
363 "The default value is .FALSE.", &
364 usage=
"CORE_CORR_DIP .TRUE.", &
365 default_l_val=.false., &
366 lone_keyword_l_val=.true.)
372 description=
"Sorts basis functions according to a selected criterion. "// &
373 "Sorting by exponent can improve data locality for selected exact-exchange and RI workflows.", &
374 enum_c_vals=
s2a(
"DEFAULT",
"EXP"), &
376 enum_desc=
s2a(
"don't sort",
"sort w.r.t. exponent"), &
378 usage=
"SORT_BASIS EXP")
395 CALL create_kg_section(subsection)
415 CALL create_admm_section(subsection)
431 CALL create_relativistic_section(subsection)
435 CALL create_sic_section(subsection)
439 CALL create_low_spin_roks_section(subsection)
480 CALL create_implicit_solv_section(subsection)
484 CALL create_density_fitting_section(subsection)
500 CALL create_rtp_section(subsection)
508 CALL create_sccs_section(subsection)
520 CALL create_hairy_probes_section(subsection)
524 CALL create_pcc_section(subsection)
528 CALL create_paep_section(subsection)
540 SUBROUTINE create_hairy_probes_section(section)
546 cpassert(.NOT.
ASSOCIATED(section))
548 name=
"HAIRY_PROBES", &
549 description=
"Sets up a Hairy Probe calculation. ", &
550 n_keywords=0, n_subsections=0, repeats=.true.)
553 name=
"_SECTION_PARAMETERS_", &
554 description=
"Controls the activation of hairy probe", &
555 usage=
"&HAIRY_PROBES ON", &
556 default_l_val=.false., &
557 lone_keyword_l_val=.true.)
562 description=
"Indexes of the atoms to which the probes are attached.", &
563 usage=
"ATOM_IDS <INTEGER> .. <INTEGER>", &
569 description=
"Electronic temperature [K]", &
577 description=
"Chemical potential of the electrons in the probes [eV] ", &
585 description=
"Parameter for solution probes ", &
586 usage=
"ALPHA <REAL>", &
587 default_r_val=1.0_dp)
592 description=
" Tolerance for accuracy checks on occupation numbers "// &
593 "calculated using hair-probes. ", &
594 usage=
"EPS_HP <REAL>", &
595 default_r_val=1.0e-5_dp)
598 END SUBROUTINE create_hairy_probes_section
606 SUBROUTINE create_implicit_solv_section(section)
612 NULLIFY (keyword, subsection, print_key)
613 cpassert(.NOT.
ASSOCIATED(section))
615 description=
"Adds an implicit solvation model to the DFT calculation."// &
616 " Know also as Self Consistent Reaction Field.", &
617 n_keywords=0, n_subsections=0, repeats=.false.)
620 description=
"Value of the dielectric constant outside the sphere", &
621 usage=
"EPS_OUT <REAL>", &
622 default_r_val=1.0_dp)
627 description=
"Maximum value of L used in the multipole expansion", &
628 usage=
"LMAX <INTEGER>", &
633 CALL create_sphere_section(subsection)
638 description=
"Controls the printing basic info about the method", &
643 END SUBROUTINE create_implicit_solv_section
650 SUBROUTINE create_sphere_section(section)
656 NULLIFY (keyword, subsection)
657 cpassert(.NOT.
ASSOCIATED(section))
659 description=
"Treats the implicit solvent environment like a sphere", &
660 n_keywords=0, n_subsections=0, repeats=.false.)
663 description=
"Value of the spherical cavity in the dielectric medium", &
664 usage=
"RADIUS <REAL>", &
665 unit_str=
"angstrom", &
670 CALL create_center_section(subsection)
674 END SUBROUTINE create_sphere_section
681 SUBROUTINE create_center_section(section)
687 cpassert(.NOT.
ASSOCIATED(section))
689 description=
"Defines the center of the sphere.", &
690 n_keywords=0, n_subsections=0, repeats=.false.)
692 description=
"Coordinates of the center of the sphere", &
693 usage=
"XYZ <REAL> <REAL> <REAL>", &
694 unit_str=
"angstrom", &
695 type_of_var=
real_t, n_var=3)
700 description=
"Defines a list of atoms to define the center of the sphere", &
701 usage=
"ATOM_LIST <INTEGER> .. <INTEGER>", &
707 description=
"Defines the weight used to define the center of the sphere"// &
708 " (if ATOM_LIST is provided)", &
709 usage=
"WEIGHT_TYPE (UNIT|MASS)", &
710 enum_c_vals=[
"UNIT",
"MASS"], &
717 description=
"Specify if the center of the sphere should be fixed or"// &
718 " allowed to move", &
719 usage=
"FIXED <LOGICAL>", &
720 default_l_val=.true.)
724 END SUBROUTINE create_center_section
730 SUBROUTINE create_admm_section(section)
736 cpassert(.NOT.
ASSOCIATED(section))
737 CALL section_create(section, __location__, name=
"AUXILIARY_DENSITY_MATRIX_METHOD", &
738 description=
"Controls the auxiliary density matrix method (ADMM), which evaluates "// &
739 "Hartree-Fock exchange on a smaller auxiliary basis and adds an exchange correction.", &
740 n_keywords=1, n_subsections=1, repeats=.false., &
744 keyword, __location__, &
746 description=
"Named ADMM variant from the literature. This shortcut sets METHOD, "// &
747 "ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL consistently for the selected variant.", &
748 enum_c_vals=
s2a(
"NONE",
"ADMM1",
"ADMM2",
"ADMMS",
"ADMMP",
"ADMMQ"), &
749 enum_desc=
s2a(
"No short name is used, use specific definitions (default)", &
750 "ADMM1 method from Guidon2010", &
751 "ADMM2 method from Guidon2010", &
752 "ADMMS method from Merlot2014", &
753 "ADMMP method from Merlot2014", &
754 "ADMMQ method from Merlot2014"), &
762 keyword, __location__, &
763 name=
"ADMM_PURIFICATION_METHOD", &
764 description=
"Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
765 enum_c_vals=
s2a(
"NONE",
"CAUCHY",
"CAUCHY_SUBSPACE",
"MO_DIAG",
"MO_NO_DIAG",
"MCWEENY",
"NONE_DM"), &
769 enum_desc=
s2a(
"Do not apply any purification", &
770 "Perform purification via general Cauchy representation", &
771 "Perform purification via Cauchy representation in occupied subspace", &
772 "Calculate MO derivatives via Cauchy representation by diagonalization", &
773 "Calculate MO derivatives via Cauchy representation by inversion", &
774 "Perform original McWeeny purification via matrix multiplications", &
775 "Do not apply any purification, works directly with density matrix"), &
781 keyword, __location__, &
783 description=
"Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
784 enum_c_vals=
s2a(
"BASIS_PROJECTION",
"BLOCKED_PROJECTION_PURIFY_FULL",
"BLOCKED_PROJECTION", &
785 "CHARGE_CONSTRAINED_PROJECTION"), &
788 enum_desc=
s2a(
"Construct auxiliary density matrix from auxiliary basis.", &
789 "Construct auxiliary density from a blocked Fock matrix,"// &
790 " but use the original matrix for purification.", &
791 "Construct auxiliary density from a blocked Fock matrix.", &
792 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
798 keyword, __location__, &
799 name=
"EXCH_SCALING_MODEL", &
800 description=
"Scaling of the exchange correction calculated by the auxiliary density matrix.", &
801 enum_c_vals=
s2a(
"NONE",
"MERLOT"), &
803 enum_desc=
s2a(
"No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
804 "Exchange scaling according to Merlot (2014)"), &
810 keyword, __location__, &
811 name=
"EXCH_CORRECTION_FUNC", &
812 description=
"Exchange functional used for the ADMM correction. It should be chosen consistently "// &
813 "with the exchange functional in the main XC setup. LibXC implementations require linking with LibXC.", &
814 enum_c_vals=
s2a(
"DEFAULT",
"PBEX",
"NONE",
"OPTX",
"BECKE88X", &
815 "PBEX_LIBXC",
"BECKE88X_LIBXC",
"OPTX_LIBXC",
"DEFAULT_LIBXC",
"LDA_X_LIBXC"), &
821 enum_desc=
s2a(
"Use PBE-based corrections according to the chosen interaction operator.", &
822 "Use PBEX functional for exchange correction.", &
823 "No correction: X(D)-x(d)-> 0.", &
824 "Use OPTX functional for exchange correction.", &
825 "Use Becke88X functional for exchange correction.", &
826 "Use PBEX functional (LibXC implementation) for exchange correction.", &
827 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
828 "Use OPTX functional (LibXC implementation) for exchange correction.", &
829 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
830 "Use Slater X functional (LibXC where possible) for exchange correction."), &
836 description=
"OPTX a1 coefficient", &
837 default_r_val=1.05151_dp)
841 description=
"OPTX a2 coefficient", &
842 default_r_val=1.43169_dp)
846 description=
"OPTX gamma coefficient", &
847 default_r_val=0.006_dp)
852 description=
"Specifies a list of atoms.", &
853 usage=
"BLOCK_LIST {integer} {integer} .. {integer}", &
854 n_var=-1, type_of_var=
integer_t, repeats=.true.)
859 description=
"Define accuracy of DBCSR operations", &
860 usage=
"EPS_FILTER", default_r_val=0.0_dp)
864 END SUBROUTINE create_admm_section
870 SUBROUTINE create_density_fitting_section(section)
876 NULLIFY (keyword, print_key)
877 cpassert(.NOT.
ASSOCIATED(section))
878 CALL section_create(section, __location__, name=
"DENSITY_FITTING", &
879 description=
"Setup parameters for density fitting (Bloechl charges or density derived "// &
880 "atomic point charges (DDAPC) charges)", &
881 n_keywords=7, n_subsections=0, repeats=.false., &
885 description=
"Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
886 usage=
"NUM_GAUSS {integer}", &
887 n_var=1, type_of_var=
integer_t, default_i_val=3)
892 description=
"Specifies the progression factor for the gaussian exponent for each atomic site.", &
893 usage=
"PFACTOR {real}", &
894 n_var=1, type_of_var=
real_t, default_r_val=1.5_dp)
899 description=
"Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
900 " obtained with the progression factor.", &
901 usage=
"MIN_RADIUS {real}", &
902 unit_str=
"angstrom", n_var=1, type_of_var=
real_t, default_r_val=0.5_dp)
907 description=
"Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
908 " of this keyword disables all other keywords of this section.", &
909 usage=
"RADII {real} {real} .. {real}", &
910 unit_str=
"angstrom", n_var=-1, type_of_var=
real_t)
915 description=
"Cutoff for charge fit in G-space.", &
916 usage=
"GCUT {real}", &
917 n_var=1, type_of_var=
real_t, default_r_val=sqrt(6.0_dp))
922 description=
"Controls the printing of basic information during the run", &
925 CALL keyword_create(keyword, __location__, name=
"CONDITION_NUMBER", &
926 description=
"Prints information regarding the condition numbers of the A matrix (to be inverted)", &
927 usage=
"CONDITION_NUMBER <LOGICAL>", &
928 default_l_val=.false., lone_keyword_l_val=.true.)
935 END SUBROUTINE create_density_fitting_section
942 SUBROUTINE create_relativistic_section(section)
947 cpassert(.NOT.
ASSOCIATED(section))
949 description=
"parameters needed and setup for relativistic calculations", &
950 n_keywords=5, n_subsections=0, repeats=.false.)
955 description=
"type of relativistic correction used", &
956 usage=
"method (NONE|DKH|ZORA)", default_i_val=
rel_none, &
957 enum_c_vals=
s2a(
"NONE",
"DKH",
"ZORA"), &
959 enum_desc=
s2a(
"Use no relativistic correction", &
960 "Use Douglas-Kroll-Hess method", &
966 description=
"The order of the DKH transformation ", &
967 usage=
"DKH_order 2", default_i_val=2)
972 description=
"Type of ZORA method to be used", &
974 enum_c_vals=
s2a(
"FULL",
"MP",
"scMP"), &
975 enum_desc=
s2a(
"Full ZORA method (not implemented)", &
976 "ZORA with atomic model potential", &
977 "Scaled ZORA with atomic model potential"), &
982 CALL keyword_create(keyword, __location__, name=
"transformation", &
983 description=
"Type of DKH transformation", &
984 usage=
"transformation (FULL|MOLECULE|ATOM)", default_i_val=
rel_trans_atom, &
985 enum_c_vals=
s2a(
"FULL",
"MOLECULE",
"ATOM"), &
987 enum_desc=
s2a(
"Use full matrix transformation", &
988 "Use transformation blocked by molecule", &
989 "Use atomic blocks"))
994 description=
"The minimal atomic number considered for atom transformation", &
995 usage=
"z_cutoff 50", default_i_val=1)
1000 description=
"External potential used in DKH transformation, full 1/r or erfc(r)/r", &
1001 usage=
"POTENTIAL {FULL,ERFC}", default_i_val=
rel_pot_erfc, &
1002 enum_c_vals=
s2a(
"FULL",
"ERFC"), &
1007 END SUBROUTINE create_relativistic_section
1014 SUBROUTINE create_kg_section(section)
1020 cpassert(.NOT.
ASSOCIATED(section))
1022 description=
"Specifies the parameters for a Kim-Gordon-like partitioning"// &
1023 " into molecular subunits", &
1024 n_keywords=0, n_subsections=1, repeats=.false., &
1027 NULLIFY (keyword, subsection, print_key)
1039 CALL keyword_create(keyword, __location__, name=
"COLORING_METHOD", &
1040 description=
"Which algorithm to use for coloring.", &
1041 usage=
"COLORING_METHOD GREEDY", &
1043 enum_c_vals=
s2a(
"DSATUR",
"GREEDY"), &
1044 enum_desc=
s2a(
"Maximum degree of saturation, relatively accurate", &
1045 "Greedy, fast coloring, less accurate"), &
1050 CALL keyword_create(keyword, __location__, name=
"TNADD_METHOD", &
1051 description=
"Algorithm to use for the calculation of the nonadditive kinetic energy.", &
1052 usage=
"TNADD_METHOD ATOMIC", &
1054 enum_c_vals=
s2a(
"EMBEDDING",
"RI_EMBEDDING",
"ATOMIC",
"NONE"), &
1055 enum_desc=
s2a(
"Use full embedding potential (see Iannuzzi et al)", &
1056 "Use full embedding potential with RI density fitting", &
1057 "Use sum of atomic model potentials", &
1058 "Do not use kinetic energy embedding"), &
1063 CALL keyword_create(keyword, __location__, name=
"INTEGRATION_GRID", &
1064 description=
"Grid [small,medium,large,huge]to be used for the TNADD integration.", &
1065 usage=
"INTEGRATION_GRID MEDIUM", &
1066 default_c_val=
"MEDIUM")
1071 description=
"Print section", &
1072 n_keywords=0, n_subsections=1, repeats=.false.)
1075 description=
"Controls the printing of the neighbor lists.", &
1076 print_level=
low_print_level, filename=
"__STD_OUT__", unit_str=
"angstrom")
1079 name=
"SAB_ORB_FULL", &
1080 description=
"Activates the printing of the full orbital "// &
1081 "orbital neighbor lists.", &
1082 default_l_val=.false., &
1083 lone_keyword_l_val=.true.)
1088 name=
"SAB_ORB_MOLECULAR", &
1089 description=
"Activates the printing of the orbital "// &
1090 "orbital neighbor lists for molecular subsets.", &
1091 default_l_val=.false., &
1092 lone_keyword_l_val=.true.)
1098 description=
"Activates the printing of the orbital "// &
1099 "atomic potential neighbor list.", &
1100 default_l_val=.false., &
1101 lone_keyword_l_val=.true.)
1111 END SUBROUTINE create_kg_section
1124 cpassert(.NOT.
ASSOCIATED(section))
1126 description=
"This section is used to set up the BSSE calculation. "// &
1127 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1128 "with the GHOST keyword specified, in addition to the other required fields.", &
1129 n_keywords=3, n_subsections=1, repeats=.false.)
1131 NULLIFY (keyword, subsection)
1134 description=
"Specify the atom number belonging to this fragment.", &
1135 n_keywords=2, n_subsections=0, repeats=.true.)
1138 description=
"Specifies a list of atoms.", &
1139 usage=
"LIST {integer} {integer} .. {integer}", &
1140 repeats=.true., n_var=-1, type_of_var=
integer_t)
1148 CALL section_create(subsection, __location__, name=
"CONFIGURATION", &
1149 description=
"Specify additional parameters for the combinatorial configurations. "// &
1150 "Use this section to manually specify charge and multiplicity of the fragments "// &
1151 "and their combinations.", &
1152 n_keywords=2, n_subsections=0, repeats=.true.)
1155 description=
"Specifies the global configuration using 1 or 0 for each fragment. "// &
1156 "1 specifies the respective fragment as used, 0 as unused.", &
1157 usage=
"GLB_CONF {integer} {integer} .. {integer}", &
1163 description=
"Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1164 "1 specifies the respective fragment as real, 0 as ghost.", &
1165 usage=
"SUB_CONF {integer} {integer} .. {integer}", &
1171 name=
"MULTIPLICITY", &
1172 variants=[
"MULTIP"], &
1173 description=
"Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1174 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1175 "even number and 2 (doublet) for an odd number of electrons.", &
1176 usage=
"MULTIPLICITY 3", &
1182 description=
"The total charge for each fragment.", &
1183 usage=
"CHARGE -1", &
1190 CALL section_create(subsection, __location__, name=
"FRAGMENT_ENERGIES", &
1191 description=
"This section contains the energies of the fragments already"// &
1192 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1193 n_keywords=2, n_subsections=0, repeats=.true.)
1194 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1195 description=
"The energy computed for each fragment", repeats=.true., &
1196 usage=
"{REAL}", type_of_var=
real_t)
1202 CALL create_print_bsse_section(subsection)
1213 SUBROUTINE create_print_bsse_section(section)
1218 cpassert(.NOT.
ASSOCIATED(section))
1220 description=
"Section of possible print options in BSSE code.", &
1221 n_keywords=0, n_subsections=1, repeats=.false.)
1225 description=
"Controls the printing of information regarding the run.", &
1231 description=
"Controls the dumping of the restart file during BSSE runs. "// &
1232 "By default the restart is updated after each configuration calculation is "// &
1239 END SUBROUTINE create_print_bsse_section
1246 SUBROUTINE create_rigpw_section(section)
1249 cpassert(.NOT.
ASSOCIATED(section))
1251 description=
"This section specifies optional parameters for RIGPW.", &
1252 n_keywords=1, n_subsections=0, repeats=.false.)
1279 END SUBROUTINE create_rigpw_section
1290 LOGICAL,
INTENT(in) :: create_subsections
1295 cpassert(.NOT.
ASSOCIATED(section))
1297 description=
"Controls the multigrid used by GPW/GAPW to represent densities, "// &
1298 "potentials, and Gaussian products on real-space grids.", &
1299 n_keywords=5, n_subsections=1, repeats=.false.)
1302 description=
"Number of multigrid levels. Smooth Gaussian products can be mapped to "// &
1303 "coarser levels, while sharper products require finer levels.", &
1304 usage=
"ngrids 1", default_i_val=4)
1310 "Plane-wave cutoff of the finest real-space grid level. "// &
1311 "Increasing this value improves the grid representation, but it is "// &
1312 "not a substitute for converging the Gaussian basis set. "// &
1313 "Default value for SE or DFTB calculation is 1.0 [Ry].", &
1314 usage=
"cutoff 300", &
1316 n_var=1, unit_str=
"Ry")
1320 CALL keyword_create(keyword, __location__, name=
"progression_factor", &
1321 description=
"Factor used to derive the cutoff of coarser multigrid levels when "// &
1322 "they are not given explicitly.", &
1323 usage=
"progression_factor <integer>", default_r_val=3._dp)
1327 CALL keyword_create(keyword, __location__, name=
"commensurate", &
1328 description=
"If the grids should be commensurate. If true overrides "// &
1329 "the progression factor and the cutoffs of the sub grids", &
1330 usage=
"commensurate", default_l_val=.false., &
1331 lone_keyword_l_val=.true.)
1336 description=
"If both rho and rho_gspace are needed ", &
1337 usage=
"realspace", default_l_val=.false., &
1338 lone_keyword_l_val=.true.)
1343 variants=[
"RELATIVE_CUTOFF"], &
1344 description=
"Controls to which multigrid level a Gaussian product is mapped. "// &
1345 "It is the reference cutoff for a Gaussian with exponent alpha=1. Larger values "// &
1346 "keep more Gaussian products on finer grids and can be important for accurate "// &
1347 "energies, forces, stress tensors, and variable-cell simulations.", &
1348 usage=
"RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1353 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_SET", &
1354 description=
"Activate a manual setting of the multigrids", &
1355 usage=
"MULTIGRID_SET", default_l_val=.false.)
1360 name=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1361 description=
"Skips load balancing on distributed multigrids. "// &
1362 "Memory usage is O(p) so may be used "// &
1363 "for all but the very largest runs.", &
1364 usage=
"SKIP_LOAD_BALANCE_DISTRIBUTED", &
1365 default_l_val=.false., &
1366 lone_keyword_l_val=.true.)
1375 CALL keyword_create(keyword, __location__, name=
"MULTIGRID_CUTOFF", &
1376 variants=[
"CUTOFF_LIST"], &
1377 description=
"List of cutoff values to set up multigrids manually", &
1378 usage=
"MULTIGRID_CUTOFF 200.0 100.0 ", &
1385 IF (create_subsections)
THEN
1386 NULLIFY (subsection)
1391 NULLIFY (subsection)
1409 cpassert(.NOT.
ASSOCIATED(section))
1410 CALL section_create(section, __location__, name=
"interpolator", &
1411 description=
"kind of interpolation used between the multigrids", &
1412 n_keywords=5, n_subsections=0, repeats=.false.)
1414 NULLIFY (keyword, print_key)
1417 description=
"The interpolator to use. SPLINE3 automatically enables commensurate grids.", &
1418 usage=
"kind spline3", &
1420 enum_c_vals=
s2a(
"pw",
"spline3"), &
1425 CALL keyword_create(keyword, __location__, name=
"safe_computation", &
1426 description=
"if a non unrolled calculation is to be performed in parallel", &
1427 usage=
"safe_computation OFF", &
1428 default_l_val=.false., &
1429 lone_keyword_l_val=.true.)
1433 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
1434 description=
"the approximate inverse to use to get the starting point"// &
1435 " for the linear solver of the spline3 methods", &
1436 usage=
"aint_precond copy", &
1438 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1439 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1446 description=
"The preconditioner used"// &
1447 " for the linear solver of the spline3 methods", &
1448 usage=
"PRECOND copy", &
1450 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_aint2", &
1451 "spl3_nopbc_precond1",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
1458 description=
"accuracy on the solution for spline3 the interpolators", &
1459 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
1464 description=
"accuracy on the residual for spline3 the interpolators", &
1465 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
1470 variants=[
'maxiter'], &
1471 description=
"the maximum number of iterations", &
1472 usage=
"max_iter 200", default_i_val=100)
1478 description=
"if convergence information about the linear solver"// &
1479 " of the spline methods should be printed", &
1481 each_iter_values=[10], filename=
"__STD_OUT__", &
1493 SUBROUTINE create_sic_section(section)
1498 cpassert(.NOT.
ASSOCIATED(section))
1500 description=
"parameters for the self interaction correction", &
1501 n_keywords=6, n_subsections=0, repeats=.false., &
1506 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_A", &
1507 description=
"Scaling of the coulomb term in sic [experimental]", &
1508 usage=
"SIC_SCALING_A 0.5", &
1510 default_r_val=1.0_dp)
1514 CALL keyword_create(keyword, __location__, name=
"SIC_SCALING_B", &
1515 description=
"Scaling of the xc term in sic [experimental]", &
1516 usage=
"SIC_SCALING_B 0.5", &
1518 default_r_val=1.0_dp)
1523 description=
"Method used to remove the self interaction", &
1524 usage=
"SIC_METHOD MAURI_US", &
1526 enum_c_vals=
s2a(
"NONE",
"MAURI_US",
"MAURI_SPZ",
"AD",
"EXPLICIT_ORBITALS"), &
1528 enum_desc=
s2a(
"Do not apply a sic correction", &
1529 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1530 " on the spin density / doublet unpaired orbital", &
1531 "Employ a (scaled) Perdew-Zunger expression"// &
1532 " on the spin density / doublet unpaired orbital", &
1533 "The average density correction", &
1534 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1540 description=
"Type of orbitals treated with the SIC", &
1541 usage=
"ORBITAL_SET ALL", &
1543 enum_c_vals=
s2a(
"UNPAIRED",
"ALL"), &
1544 enum_desc=
s2a(
"correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1545 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1550 END SUBROUTINE create_sic_section
1557 SUBROUTINE create_low_spin_roks_section(section)
1562 cpassert(.NOT.
ASSOCIATED(section))
1563 CALL section_create(section, __location__, name=
"LOW_SPIN_ROKS", &
1564 description=
"Specify the details of the low spin ROKS method. "// &
1565 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1566 " with an energy scaling factor, and a prescription of the spin state. "// &
1567 "With METHOD GAPW, energies and orbital derivatives are supported for LDA/GGA, "// &
1568 "hybrids (without ADMM), tau-dependent meta-GGAs, and molecular GauXC/Skala. "// &
1569 "Nuclear forces, analytical stress, and native-grid Skala are not supported with GAPW. "// &
1570 "The GauXC path requires isolated all-electron calculations with HOST execution.", &
1571 n_keywords=6, n_subsections=0, repeats=.false.)
1574 CALL keyword_create(keyword, __location__, name=
"ENERGY_SCALING", &
1575 description=
"The scaling factors for each term added to the total energy. "// &
1576 "This list should contain one number for each term added to the total energy.", &
1577 usage=
"ENERGY_SCALING 1.0 -1.0 ", &
1578 n_var=-1, type_of_var=
real_t, repeats=.false.)
1582 keyword, __location__, name=
"SPIN_CONFIGURATION", &
1583 description=
"For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1584 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1585 usage=
"SPIN_CONFIGURATION 1 2", &
1586 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1590 END SUBROUTINE create_low_spin_roks_section
1596 SUBROUTINE create_rtp_section(section)
1600 TYPE(
section_type),
POINTER :: print_key, print_section, subsection
1603 cpassert(.NOT.
ASSOCIATED(section))
1604 CALL section_create(section, __location__, name=
"REAL_TIME_PROPAGATION", &
1605 description=
"Parameters needed to set up the real time propagation"// &
1606 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1607 n_keywords=4, n_subsections=4, repeats=.false., &
1611 description=
"Maximal number of iterations for the self consistent propagator loop.", &
1612 usage=
"MAX_ITER 10", &
1618 description=
"Convergence criterion for the self consistent propagator loop.", &
1619 usage=
"EPS_ITER 1.0E-5", &
1620 default_r_val=1.0e-7_dp)
1625 description=
"Speciefies how many steps will be used for extrapolation. "// &
1626 "One will be always used which is means X(t+dt)=X(t)", &
1627 usage=
"ASPC_ORDER 3", &
1633 description=
"Which method should be used to calculate the exponential"// &
1634 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1635 "and ARNOLDI otherwise.", &
1636 usage=
"MAT_EXP TAYLOR", default_i_val=
do_arnoldi, &
1637 enum_c_vals=
s2a(
"TAYLOR",
"PADE",
"ARNOLDI",
"BCH",
"EXACT"), &
1639 enum_desc=
s2a(
"exponential is evaluated using scaling and squaring in combination"// &
1640 " with a taylor expansion of the exponential.", &
1641 "uses scaling and squaring together with the pade approximation", &
1642 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1643 "combination with Crank Nicholson or density propagation", &
1644 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1645 " only works for density propagation", &
1646 "Uses diagonalisation of the exponent matrices to determine the "// &
1647 "matrix exponential exactly. Only implemented for GWBSE."))
1651 CALL keyword_create(keyword, __location__, name=
"DENSITY_PROPAGATION", &
1652 description=
"The density matrix is propagated instead of the molecular orbitals. "// &
1653 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1654 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1655 usage=
"DENSITY_PROPAGATION .TRUE.", &
1656 default_l_val=.false., lone_keyword_l_val=.true.)
1660 CALL keyword_create(keyword, __location__, name=
"SC_CHECK_START", &
1661 description=
"Speciefies how many iteration steps will be done without "// &
1662 "a check for self consistency. Can save some time in big calculations.", &
1663 usage=
"SC_CHECK_START 3", &
1668 CALL keyword_create(keyword, __location__, name=
"EXP_ACCURACY", &
1669 description=
"Accuracy for the taylor and pade approximation. "// &
1670 "This is only an upper bound bound since the norm used for the guess "// &
1671 "is an upper bound for the needed one.", &
1672 usage=
"EXP_ACCURACY 1.0E-6", &
1673 default_r_val=1.0e-9_dp)
1678 description=
"Which propagator should be used for the orbitals", &
1679 usage=
"PROPAGATOR ETRS", default_i_val=
do_etrs, &
1680 enum_c_vals=
s2a(
"ETRS",
"CN",
"EM"), &
1682 enum_desc=
s2a(
"enforced time reversible symmetry", &
1683 "Crank Nicholson propagator", &
1684 "Exponential midpoint propagator"))
1689 description=
"Controls the initial WFN used for propagation. "// &
1690 "Note that some energy contributions may not be "// &
1691 "initialized in the restart cases, for instance "// &
1692 "electronic entropy energy in the case of smearing.", &
1693 usage=
"INITIAL_WFN SCF_WFN", default_i_val=
use_scf_wfn, &
1694 enum_c_vals=
s2a(
"SCF_WFN",
"RESTART_WFN",
"RT_RESTART"), &
1696 enum_desc=
s2a(
"An SCF run is performed to get the initial state.", &
1697 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1698 " if electronic constraints or restraints are used in the previous calculation, "// &
1699 "since these do not work in the rtp scheme.", &
1700 "use the wavefunction of a real time propagation/ehrenfest run"))
1704 CALL keyword_create(keyword, __location__, name=
"APPLY_WFN_MIX_INIT_RESTART", &
1705 description=
"If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1706 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1707 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1708 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1709 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1710 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1711 usage=
"APPLY_WFN_MIX_INIT_RESTART", &
1712 default_l_val=.false., lone_keyword_l_val=.true.)
1716 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE", &
1717 description=
"Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1718 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1719 usage=
"APPLY_DELTA_PULSE", &
1720 default_l_val=.false., lone_keyword_l_val=.true.)
1724 CALL keyword_create(keyword, __location__, name=
"APPLY_DELTA_PULSE_MAG", &
1725 description=
"Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1726 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1727 usage=
"APPLY_DELTA_PULSE_MAG", &
1728 default_l_val=.false., lone_keyword_l_val=.true.)
1732 CALL keyword_create(keyword, __location__, name=
"VELOCITY_GAUGE", &
1733 description=
"Perform propagation in the velocity gauge using the explicit vector potential"// &
1734 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1735 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1736 usage=
"VELOCITY_GAUGE T", &
1737 default_l_val=.false., lone_keyword_l_val=.true.)
1742 description=
"Define gauge origin for magnetic perturbation", &
1743 usage=
"GAUGE_ORIG COM", &
1744 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1745 enum_desc=
s2a(
"Use Center of Mass", &
1746 "Use Center of Atomic Charges", &
1747 "Use User Defined Point (Keyword:REF_POINT)", &
1748 "Use Origin of Coordinate System"), &
1757 CALL keyword_create(keyword, __location__, name=
"GAUGE_ORIG_MANUAL", &
1758 description=
"Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1759 usage=
"GAUGE_ORIG_MANUAL x y z", &
1761 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1768 description=
"apply gauge transformed non-local potential term"// &
1769 " only affects VELOCITY_GAUGE=.TRUE.", &
1770 usage=
"VG_COM_NL T", &
1771 default_l_val=.true., lone_keyword_l_val=.true.)
1776 description=
"Include non-local commutator for periodic delta pulse."// &
1777 " only affects PERIODIC=.TRUE.", &
1779 default_l_val=.true., lone_keyword_l_val=.true.)
1784 description=
"Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1785 " This corresponds to a 1st order perturbation in the length gauge."// &
1786 " Note that this is NOT compatible with a periodic calculation!"// &
1787 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1788 usage=
"LEN_REP T", &
1789 default_l_val=.false., lone_keyword_l_val=.true.)
1794 description=
"Apply a delta-kick that is compatible with periodic boundary conditions"// &
1795 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1796 " the initial wfn with the velocity operator as perturbation."// &
1797 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1798 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1799 " and not for restarts (RT_RESTART).", &
1801 default_l_val=.true., lone_keyword_l_val=.true.)
1806 description=
"Localise the Molecular orbitals each n steps "// &
1807 "real-time propagated TDDFT, 0 means never localise", &
1808 usage=
"LOCALIZE", default_i_val=0)
1812 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_DIRECTION", &
1813 description=
"Direction of the applied electric field. The k vector is given as"// &
1814 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1815 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1816 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1817 usage=
"DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=[1, 0, 0], &
1822 CALL keyword_create(keyword, __location__, name=
"DELTA_PULSE_SCALE", &
1823 description=
"Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1824 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1825 " applied electric field in atomic units.", &
1826 usage=
"DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1830 CALL keyword_create(keyword, __location__, name=
"HFX_BALANCE_IN_CORE", &
1831 description=
"If HFX is used, this keyword forces a redistribution/recalculation"// &
1832 " of the integrals, balanced with respect to the in core steps.", &
1833 usage=
"HFX_BALANCE_IN_CORE", &
1834 default_l_val=.false., lone_keyword_l_val=.true.)
1838 CALL keyword_create(keyword, __location__, name=
"MCWEENY_MAX_ITER", &
1839 description=
"Determines the maximum amount of McWeeny steps used after each converged"// &
1840 " step in density propagation", &
1841 usage=
"MCWEENY_MAX_ITER 2", default_i_val=1)
1846 keyword, __location__, name=
"ACCURACY_REFINEMENT", &
1847 description=
"If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1848 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1849 " reduced for these calculations.", &
1850 usage=
"ACCURACY_REFINEMENT", default_i_val=100)
1855 description=
"Threshold after which McWeeny is terminated", &
1856 usage=
"MCWEENY_EPS 0.00001", &
1857 default_r_val=0.0_dp)
1861 NULLIFY (print_section)
1863 description=
"Section of possible print options for an RTP runs", &
1868 description=
"Controls the printing within real time propagation and Eherenfest dynamics", &
1874 description=
"Controls the dumping of the latest wavefunction restart "// &
1875 "file during rtp. In density propagation this controls the printing "// &
1876 "of density matrix. See also RESTART_HISTORY.", &
1878 each_iter_names=
s2a(
"MD"), each_iter_values=[20], &
1884 description=
"Dumps unique wavefunction restart files during the run, "// &
1885 "keeping all of them. In density propagation it dumps the density "// &
1886 "matrix instead. For the latest wavefunction restart file, see RESTART.", &
1888 each_iter_names=
s2a(
"MD"), &
1889 each_iter_values=[500], &
1890 filename=
"RESTART", do_backup=.true.)
1895 description=
"Print the time-dependent field applied during an EMD simulation in "// &
1898 each_iter_names=
s2a(
"MD"), &
1899 each_iter_values=[1], &
1909 description=
"Print the integral of the current density (only if the"// &
1910 " imaginary part of the density is NOT zero).", &
1912 each_iter_names=
s2a(
"MD"), &
1913 each_iter_values=[1], &
1914 filename=
"rtp_j_int")
1919 description=
"Print the current during an EMD simulation to cube files.", &
1921 each_iter_names=
s2a(
"MD"), &
1922 each_iter_values=[20], &
1923 filename=
"current", do_backup=.true.)
1925 description=
"The stride (X,Y,Z) used to write the cube file "// &
1926 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1927 " 1 number valid for all components.", &
1928 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1937 description=
"Prints the density matrix at iterations in clear text to a file", &
1939 each_iter_names=
s2a(
"MD"), &
1940 each_iter_values=[1], &
1946 description=
"Prints the time-dependent electronic moments at "// &
1947 "iterations in clear text to a file.", &
1949 each_iter_names=
s2a(
"MD"), &
1950 each_iter_values=[1], &
1951 filename=
"__STD_OUT__")
1953 variants=
s2a(
"REF"), &
1954 description=
"Define the reference point for the calculation of the electrostatic moment.", &
1955 usage=
"REFERENCE COM", &
1956 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1957 enum_desc=
s2a(
"Use Center of Mass", &
1958 "Use Center of Atomic Charges", &
1959 "Use User Defined Point (Keyword:REFERENCE_POINT)", &
1960 "Use Origin of Coordinate System"), &
1969 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT", &
1970 variants=
s2a(
"REF_POINT"), &
1971 description=
"Fixed reference point for the calculations of the electrostatic moment.", &
1972 usage=
"REFERENCE_POINT x y z", &
1974 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1976 unit_str=
'angstrom')
1983 description=
"Prints the calculated Fourier transform of "// &
1984 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1985 "can be supplied with starting time.", &
1987 each_iter_names=
s2a(
"MD"), &
1988 each_iter_values=[1], &
1989 filename=
"MOMENTS_FT")
1994 description=
"Prints the chosen element of the energy dependent polarizability tensor "// &
1995 "to a specified file. The tensor is calculated as ratio of "// &
1996 "Fourier transform of the dipole "// &
1997 "moment trace and Fourier transform of the applied field "// &
1998 "(for delta kick, constant real field is applied.", &
2000 each_iter_names=
s2a(
"MD"), &
2001 each_iter_values=[1], &
2002 filename=
"POLARIZABILITY")
2004 description=
"Specifies the element of polarizability which is to be printed out "// &
2005 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
2006 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
2007 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
2008 type_of_var=
integer_t, default_i_vals=[1, 1], n_var=2, usage=
"ELEMENT 1 1", repeats=.true.)
2015 description=
"Prints the eigenvalues of the linearized RT-BSE "// &
2016 "Liouvillian on the OV subspace, computed once at job init from a "// &
2017 "matrix-free probe of the kernel (no time propagation). In TDA this "// &
2018 "equals the Casida-A eigenvalue problem and gives a broadening-free, "// &
2019 "finite-time-free correctness check against bse_full.F. "// &
2020 "Activated by RTBSE%DIAGNOSE_LIOUVILLIAN_EIG. Output lists "// &
2021 "eigenvalues in atomic units and eV.", &
2023 each_iter_names=
s2a(
"MD"), &
2024 each_iter_values=[1], &
2025 filename=
"LIOUVILLIAN_EIG")
2030 description=
"Print the energy constituents (relevant to RTP) which make up "// &
2031 "the Total Energy", &
2033 each_iter_names=
s2a(
"MD"), &
2034 each_iter_values=[1], &
2043 NULLIFY (subsection)
2044 CALL create_rtbse_section(subsection)
2048 CALL create_ft_section(subsection)
2052 END SUBROUTINE create_rtp_section
2058 SUBROUTINE create_rtbse_section(section)
2064 cpassert(.NOT.
ASSOCIATED(section))
2067 description=
"Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
2068 "Note that running RTBSE requires previous low-scaling "// &
2069 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
2070 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
2071 "deallocation errors. More details (including description of output files) is available in "// &
2072 "the [methods](../../../../methods/properties/optical/rtbse) section of the documentation.", &
2076 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2077 description=
"Which method is used for the time propagation of electronic structure. "// &
2078 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
2079 "Green's function instead of density matrix/molecular orbitals.", &
2080 usage=
"&RTBSE TDDFT", &
2083 enum_c_vals=
s2a(
"TDDFT",
"RTBSE"), &
2085 enum_desc=
s2a(
"Use TDDFT for density matrix/MO propagation.", &
2086 "Use RT-BSE for Green's function propagation"))
2091 CALL keyword_create(keyword, __location__, name=
"RTBSE_HAMILTONIAN", &
2092 description=
"Which Hamiltonian to use as the single-particle Hamiltonian"// &
2093 " in the Green's propagator.", &
2094 usage=
"RTBSE_HAMILTONIAN GW", &
2096 enum_c_vals=
s2a(
"KS",
"GW"), &
2098 enum_desc=
s2a(
"Use Kohn-Sham Hamiltonian for Green's function propagation.", &
2099 "Use GW Hamiltonian for Green's function propagation. The GW "// &
2100 "eigenvalues from the highest-level GW flavor will be picked."))
2105 CALL keyword_create(keyword, __location__, name=
"LINEARIZED_BSE_PROPAGATION", &
2106 variants=
s2a(
"LRRTBSE"), &
2107 description=
"Linearizes the BSE propagation", &
2108 usage=
"LINEARIZED_BSE_PROPAGATION .T.", &
2109 default_l_val=.false., &
2110 lone_keyword_l_val=.true.)
2115 CALL keyword_create(keyword, __location__, name=
"ENERGY_CUTOFF_OCC", &
2116 description=
"Energy cutoff (relative to HOMO) defining the lowest "// &
2117 "occupied molecular orbital included in the active MO window of the "// &
2118 "linearized RT-BSE propagation. Only used when "// &
2119 "LINEARIZED_BSE_PROPAGATION=.TRUE.. A non-positive value disables the "// &
2120 "occupied truncation.", &
2121 usage=
"ENERGY_CUTOFF_OCC 5.0", &
2123 default_r_val=-1.0_dp/
evolt)
2128 CALL keyword_create(keyword, __location__, name=
"ENERGY_CUTOFF_EMPTY", &
2129 description=
"Energy cutoff (relative to LUMO) defining the highest "// &
2130 "virtual molecular orbital included in the active MO window of the "// &
2131 "linearized RT-BSE propagation. Only used when "// &
2132 "LINEARIZED_BSE_PROPAGATION=.TRUE.. A non-positive value disables the "// &
2133 "virtual truncation.", &
2134 usage=
"ENERGY_CUTOFF_EMPTY 5.0", &
2136 default_r_val=-1.0_dp/
evolt)
2140 CALL keyword_create(keyword, __location__, name=
"ENFORCE_MAX_DT", &
2141 description=
"For linearized RT-BSE, recompute TIMESTEP and STEPS so the same total "// &
2142 "propagation time is covered with the largest timestep that does not exceed the "// &
2143 "estimated RK4 stability limit.", &
2144 usage=
"ENFORCE_MAX_DT", &
2145 default_l_val=.false., &
2146 lone_keyword_l_val=.true.)
2152 description=
"Apply the Tamm-Dancoff approximation to the linearized RT-BSE kernel: "// &
2153 "the Hartree and screened-exchange contributions are restricted so that the OV and VO "// &
2154 "blocks of the density response remain decoupled (i.e. only A-block coupling is kept, "// &
2155 "B-block coupling is dropped). Only effective when "// &
2156 "LINEARIZED_BSE_PROPAGATION=.TRUE..", &
2158 default_l_val=.false., &
2159 lone_keyword_l_val=.true.)
2164 CALL keyword_create(keyword, __location__, name=
"TDA_SHIFT_TO_FIRST_PEAK", &
2165 description=
"For the linearized RT-BSE TDA path, shift the active-MO single-particle "// &
2166 "diagonals by +Omega_0/2 (occupied) and -Omega_0/2 (virtual) with "// &
2167 "Omega_0 = eps_min_ai, so the lowest active OV mode oscillates at zero frequency "// &
2168 "in the rotating frame (RK4-exact for peak 1). omega_max becomes the full active "// &
2169 "OV width Delta = eps_max_ai - eps_min_ai. The rotation is undone at I/O so "// &
2170 "observables remain in the lab frame. Only effective when TDA=.TRUE.. "// &
2171 "Use with caution, additional convergence checks w.r.t. dt needed.", &
2172 usage=
"TDA_SHIFT_TO_FIRST_PEAK", &
2173 default_l_val=.false., &
2174 lone_keyword_l_val=.true.)
2178 CALL keyword_create(keyword, __location__, name=
"DEBUG_DISABLE_HARTREE", &
2179 description=
"Debug option for linearized RT-BSE: disables the Hartree kernel in both "// &
2180 "the static reference initialization and the propagation. The Coulomb RI setup is "// &
2181 "still built so the run stays internally consistent.", &
2182 usage=
"DEBUG_DISABLE_HARTREE", &
2183 default_l_val=.false., &
2184 lone_keyword_l_val=.true.)
2189 description=
"Select the RI framework used to evaluate the linearized RT-BSE "// &
2190 "Hartree and screened-exchange kernels (propagation and reference). "// &
2191 "DEFAULT infers from the GW flavor: RI-RS if the GW_RI_RS section was active, "// &
2192 "AO-RI otherwise. RS/AO force that framework regardless of how GW was run. The "// &
2193 "RI-RS grid (mat_phi_mu_l, mat_Z_lP) and the V_grid/W0_grid kernels are built on "// &
2194 "demand. RI-RS is implemented for linearized RT-BSE only; for full RT-BSE an "// &
2195 "explicit RS is overridden to AO with a warning.", &
2196 usage=
"KERNEL_RI RS", &
2197 enum_c_vals=
s2a(
"DEFAULT",
"RS",
"AO"), &
2199 enum_desc=
s2a(
"Infer from the GW flavor (GW_RI_RS active -> RS, else AO).", &
2200 "Real-space RI grid kernels (linearized RT-BSE only).", &
2201 "AO-RI kernels."), &
2206 CALL keyword_create(keyword, __location__, name=
"DEBUG_DISABLE_SEX", &
2207 description=
"Debug option for linearized RT-BSE: disables the screened-exchange kernel "// &
2208 "in both the static reference initialization and the propagation.", &
2209 usage=
"DEBUG_DISABLE_SEX", &
2210 default_l_val=.false., &
2211 lone_keyword_l_val=.true.)
2216 CALL keyword_create(keyword, __location__, name=
"DIAGNOSE_LIOUVILLIAN_EIG", &
2217 description=
"Diagnostic for linearized RT-BSE: at job initialization, build the "// &
2218 "Liouvillian on the OV subspace by probing the kernel routine with canonical OV basis "// &
2219 "vectors, then diagonalize. In TDA this equals the Casida-A eigenvalue problem, giving a "// &
2220 "broadening-free, finite-time-free correctness check against bse_full.F. "// &
2221 "In ABBA it builds and diagonalizes the full coupled (A, B) Liouvillian via the "// &
2222 "Furche reduction. "// &
2223 "Output is controlled by the LIOUVILLIAN_EIG print key in the parent "// &
2224 "&REAL_TIME_PROPAGATION%&PRINT section.", &
2225 usage=
"DIAGNOSE_LIOUVILLIAN_EIG", &
2226 default_l_val=.false., &
2227 lone_keyword_l_val=.true.)
2231 CALL keyword_create(keyword, __location__, name=
"EPS_FILTER_RHO", &
2232 description=
"RI-RS linearized RT-BSE: block-filter threshold on the propagated "// &
2233 "response density Delta-rho (AO). Applied upstream of the projection the "// &
2234 "Hartree shares, so it cuts the SEX kernel and the Hartree response alike. "// &
2235 "Absolute, so its strength is the ratio to the Delta-rho scale.", &
2236 usage=
"EPS_FILTER_RHO 1.0E-6", &
2237 default_r_val=-1.0_dp)
2241 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS_W0", &
2242 description=
"RI-RS linearized RT-BSE: real-space truncation radius for the "// &
2243 "grid-basis screened interaction W0. Grid block pairs whose centroids lie "// &
2244 "further apart are dropped at build, and the per-step SEX grid transient is "// &
2245 "built into the same pattern. Affects the BSE kernel only, not the GW "// &
2246 "quasiparticle energies and not the Hartree response. Requires a "// &
2247 "non-periodic cell. Zero or negative disables the truncation.", &
2248 usage=
"CUTOFF_RADIUS_W0 30.0", &
2250 type_of_var=
real_t, unit_str=
"angstrom")
2254 END SUBROUTINE create_rtbse_section
2261 SUBROUTINE create_ft_section(ft_section)
2267 cpassert(.NOT.
ASSOCIATED(ft_section))
2272 description=
"Define parameters for Fourier transforms used in RTP outputs.", &
2278 description=
"The starting time from which damping is applied and from which on the trace is "// &
2279 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
2280 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
2281 "one can specify the center of the pulse as the starting point.", &
2284 default_r_val=0.0_dp)
2290 description=
"Numerical Fourier transform (required for calculation of "// &
2291 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
2292 "when the final time trace values are far away from zero. "// &
2293 "This keyword controls the exponential damping added to the Fourier transform "// &
2294 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
2295 "For negative values (the default), calculates the damping at the run time so that the last point "// &
2296 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
2297 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
2298 "the damping is not applied.", &
2306 NULLIFY (subsection)
2308 description=
"Defines the parameters for the Padé interpolation of the "// &
2309 "Fourier transforms used in the output of RTP. Only available with the GreenX library linked to CP2K.", &
2313 CALL keyword_create(keyword, __location__,
"_SECTION_PARAMETERS_", &
2314 description=
"Turns on the Padé interpolation", &
2316 default_l_val=.false., &
2317 lone_keyword_l_val=.true.)
2323 description=
"The minimum energy of the Padé interpolation output.", &
2326 default_r_val=0.0_dp)
2332 description=
"The maximum energy of the Padé interpolation output.", &
2335 default_r_val=100.0_dp)
2341 description=
"The energy resolution of the Padé interpolation output.", &
2344 default_r_val=0.02_dp/
evolt)
2350 description=
"The lower boundary in energy for the points "// &
2351 "used in the fitting of Padé parameters. If negative, uses "// &
2352 "value of E_MIN (default).", &
2355 default_r_val=-1.0_dp)
2361 description=
"The upper boundary in energy for the points "// &
2362 "used in the fitting of Padé parameters. If negative, uses "// &
2363 "the value of E_MAX (default).", &
2366 default_r_val=-1.0_dp)
2373 END SUBROUTINE create_ft_section
2383 SUBROUTINE create_sccs_section(section)
2390 cpassert(.NOT.
ASSOCIATED(section))
2394 description=
"Define the parameters for self-consistent continuum solvation (SCCS) model", &
2403 name=
"_SECTION_PARAMETERS_", &
2404 description=
"Controls the activation of the SCCS section", &
2406 default_l_val=.false., &
2407 lone_keyword_l_val=.true.)
2413 description=
"Solvent specific tunable parameter for the calculation of "// &
2414 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2415 "where $S$ is the (quantum) surface of the cavity", &
2419 default_r_val=0.0_dp, &
2426 description=
"Solvent specific tunable parameter for the calculation of "// &
2427 "the dispersion term $G^\text{dis} = \beta V$ "// &
2428 "where $V$ is the (quantum) volume of the cavity", &
2432 default_r_val=0.0_dp, &
2439 description=
"Numerical increment for the calculation of the (quantum) "// &
2440 "surface of the solute cavity", &
2444 default_r_val=2.0e-5_dp)
2449 name=
"DERIVATIVE_METHOD", &
2450 description=
"Method for the calculation of the numerical derivatives on the real-space grids", &
2451 usage=
"DERIVATIVE_METHOD cd5", &
2455 enum_c_vals=
s2a(
"FFT",
"CD3",
"CD5",
"CD7"), &
2460 enum_desc=
s2a(
"Fast Fourier transformation", &
2461 "3-point stencil central differences", &
2462 "5-point stencil central differences", &
2463 "7-point stencil central differences"))
2468 name=
"RELATIVE_PERMITTIVITY", &
2469 variants=
s2a(
"DIELECTRIC_CONSTANT",
"EPSILON_RELATIVE",
"EPSILON_SOLVENT"), &
2470 description=
"Relative permittivity (dielectric constant) of the solvent (medium)", &
2474 default_r_val=80.0_dp, &
2475 usage=
"RELATIVE_PERMITTIVITY 78.36")
2481 variants=
s2a(
"EPS_ITER",
"TAU_POL"), &
2482 description=
"Tolerance for the convergence of the polarisation density, "// &
2483 "i.e. requested accuracy for the SCCS iteration cycle", &
2487 default_r_val=1.0e-6_dp, &
2488 usage=
"EPS_ITER 1.0E-7")
2494 description=
"The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2495 "is converged to this threshold value", &
2499 default_r_val=0.5_dp, &
2500 usage=
"EPS_SCF 1.0E-2")
2506 variants=
s2a(
"SURFACE_TENSION"), &
2507 description=
"Surface tension of the solvent used for the calculation of "// &
2508 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2509 "where $S$ is the (quantum) surface of the cavity", &
2513 default_r_val=0.0_dp, &
2520 description=
"Maximum number of SCCS iteration steps performed to converge "// &
2521 "within the given tolerance", &
2525 default_i_val=100, &
2526 usage=
"MAX_ITER 50")
2532 description=
"Method used for the smoothing of the dielectric function", &
2533 usage=
"METHOD Fattebert-Gygi", &
2535 enum_c_vals=
s2a(
"ANDREUSSI",
"FATTEBERT-GYGI",
"SAA_ANDREUSSI"), &
2537 enum_desc=
s2a(
"Smoothing function proposed by Andreussi et al.", &
2538 "Smoothing function proposed by Fattebert and Gygi", &
2539 "Smoothing function of the solvent aware algorithm"))
2546 description=
"Mixing parameter (Hartree damping) employed during the iteration procedure", &
2550 default_r_val=0.6_dp, &
2557 description=
"Add a normalised Gaussian fill density $Z_{val}/(\sqrt{\pi}\sigma)^3 "// &
2558 "\exp(-r^2/\sigma^2)$ on each atom to the electronic density used for the "// &
2559 "definition of the dielectric function. This fills the low valence density "// &
2560 "region at the nuclei of pseudopotential atoms, which otherwise may be treated "// &
2561 "as solvent if a grid point is close to a nucleus (similar to the solvent_mode "// &
2562 "'full' of the Environ library). Kinds without removed core electrons (Z_val = Z, "// &
2563 "e.g. H, He-q2, Li-q3, Be-q4) are not filled by default. "// &
2564 "The resulting ionic forces are included.", &
2565 usage=
"CORE_FILL", &
2566 default_l_val=.false., &
2567 lone_keyword_l_val=.true.)
2572 name=
"CORE_FILL_SPREAD", &
2573 description=
"Default spread $\sigma$ of the Gaussian fill density used with CORE_FILL "// &
2574 "(Environ default 0.5 bohr). Can be overwritten per kind in the CORE_FILL_KIND section.", &
2579 default_r_val=0.5_dp, &
2580 usage=
"CORE_FILL_SPREAD [bohr] 0.5")
2584 NULLIFY (subsection)
2587 name=
"CORE_FILL_KIND", &
2588 description=
"Per-kind spread of the CORE_FILL Gaussian fill density. "// &
2589 "Each line contains a kind label (as defined in &KIND) and the spread in bohr. "// &
2590 "A spread <= 0 disables the fill for that kind. Kinds not listed use "// &
2591 "CORE_FILL_SPREAD, except kinds without removed core electrons (Z_val = Z) which are "// &
2596 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2597 description=
"Kind label and spread in bohr", &
2599 usage=
"{kind label} {spread in bohr}", &
2608 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2609 "Andreussi et al.", &
2617 description=
"Maximum density value used for the smoothing of the dielectric function", &
2621 default_r_val=0.0035_dp, &
2622 usage=
"RHO_MAX 0.01")
2628 description=
"Minimum density value used for the smoothing of the dielectric function", &
2632 default_r_val=0.0001_dp, &
2633 usage=
"RHO_MIN 0.0003")
2641 name=
"FATTEBERT-GYGI", &
2642 description=
"Define the parameters of the dielectric smoothing function proposed by "// &
2643 "Fattebert and Gygi", &
2651 description=
"Parameter β changes the width of the interface solute-solvent", &
2655 default_r_val=1.7_dp, &
2662 variants=[
"RHO0"], &
2663 description=
"Parameter $\rho_0$ defines the critical density in the middle "// &
2664 "of the interface solute-solvent", &
2668 default_r_val=0.0006_dp, &
2669 usage=
"RHO_ZERO 0.0004")
2677 name=
"SAA_ANDREUSSI", &
2678 description=
"Define the parameters of the dielectric smoothing function of "// &
2679 "the solvent aware algorithm proposed by Andreussi et al.", &
2687 description=
"Maximum density value used for the smoothing of the dielectric function", &
2691 default_r_val=0.0035_dp, &
2692 usage=
"RHO_MAX 0.01")
2698 description=
"Minimum density value used for the smoothing of the dielectric function", &
2702 default_r_val=0.0001_dp, &
2703 usage=
"RHO_MIN 0.0003")
2709 description=
"The threshold of the filled fraction that controls whether a point in space "// &
2710 "needs to be removed from the continuum", &
2714 default_r_val=0.65_dp, &
2721 description=
"Controls the softness of function t(r)", &
2725 default_r_val=0.02_dp, &
2726 usage=
"DELTA_ETA 0.02")
2731 name=
"DELTA_ZETA", &
2732 description=
"Controls the softness of function u(r)", &
2737 default_r_val=0.5_dp, &
2738 usage=
"DELTA_ZETA 0.5")
2743 name=
"ALPHA_ZETA", &
2744 description=
"The scaling factor for R_SOLV", &
2748 default_r_val=2.0_dp, &
2749 usage=
"ALPHA_ZETA 2.0")
2755 description=
"The solvent radius", &
2760 default_r_val=2.6_dp, &
2768 END SUBROUTINE create_sccs_section
2776 SUBROUTINE create_pcc_section(section)
2782 cpassert(.NOT.
ASSOCIATED(section))
2785 name=
"PLANAR_COUNTER_CHARGE", &
2786 description=
"Define the parameters for the planar counter charge density", &
2795 name=
"_SECTION_PARAMETERS_", &
2796 description=
"Controls the activation of the planar counter charge section", &
2797 usage=
"&PLANAR_COUNTER_CHARGE ON", &
2798 default_l_val=.false., &
2799 lone_keyword_l_val=.true.)
2803 CALL keyword_create(keyword, __location__, name=
"PARALLEL_PLANE", &
2804 enum_c_vals=
s2a(
'XY',
'YZ',
'XZ'), &
2805 enum_i_vals=[3, 1, 2], &
2806 description=
"The coordinate plane that the surface is parallel to.", &
2807 enum_desc=
s2a(
"Parallel to XY",
"Parallel to YZ",
"Parallel to XZ"), &
2810 usage=
"PARALLEL_PLANE XY")
2816 description=
"Controls the distance between the center of the Gaussian "// &
2817 "and the cell boundary", &
2818 usage=
"DIST_EDGE 1.0", &
2819 unit_str=
"angstrom", &
2826 description=
"Controls the spread of the Gaussian distribution", &
2827 usage=
"GAU_C 0.1", &
2828 unit_str=
"angstrom", &
2833 END SUBROUTINE create_pcc_section
2842 SUBROUTINE create_paep_section(section)
2848 cpassert(.NOT.
ASSOCIATED(section))
2851 name=
"PLANAR_AVERAGED_V_HARTREE", &
2852 description=
"Define the parameters for calculating and printing the planar "// &
2853 "averaged electrostatic potential (Hartree potential) "// &
2854 "for symmetric slab systems", &
2862 name=
"_SECTION_PARAMETERS_", &
2863 description=
"Controls the activation of the planar averaged electrostatic "// &
2864 "potential (Hartree potential) section", &
2865 usage=
"&PLANAR_AVERAGED_V_HARTREE ON", &
2866 default_l_val=.false., &
2867 lone_keyword_l_val=.true.)
2871 CALL keyword_create(keyword, __location__, name=
"PARALLEL_PLANE", &
2872 enum_c_vals=
s2a(
'XY',
'YZ',
'XZ'), &
2873 enum_i_vals=[3, 1, 2], &
2874 description=
"The coordinate plane that the surface is parallel to.", &
2875 enum_desc=
s2a(
"Parallel to XY",
"Parallel to YZ",
"Parallel to XZ"), &
2878 usage=
"PARALLEL_PLANE XY")
2882 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 mattiat2022
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...
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, do_backup)
creates a print_key section
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
utils to manipulate splines on the regular grid of a pw
integer, parameter, public pw_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.