49 c_pw92,
c_pw92dmc,
c_pw92vmc,
c_pz,
c_pzdmc,
c_pzvmc,
do_vwn3,
do_vwn5,
ke_lc,
ke_llp, &
59#include "./base/base_uses.f90"
64 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
65 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_xc'
82 cpassert(.NOT.
ASSOCIATED(section))
84 description=
"The eXchange-Correlation functional to use. In case of hybrid functionals, all scaling "// &
85 "parameters and potential types have to be specified in the HF section except from a few "// &
86 "predefined combinations (see _SECTION_PARAMETERS_ below). CP2K does NOT set it up "// &
87 "automatically not even for LibXC functionals.", &
88 n_keywords=0, n_subsections=4, repeats=.false., &
93 NULLIFY (subsection, keyword)
95 keyword, __location__, name=
"_SECTION_PARAMETERS_", &
96 description=
"Shortcut for the most common functional combinations. These make use of the implementations provided by "// &
97 "native CP2K (without LibXC). In case of hybrid functionals (B3LYP, PBE0), set the "// &
98 "accuracy-related and system-dependent parameters in the HF section (especially MAX_MEMORY, EPS_SCHWARZ, "// &
99 "CUTOFF_RADIUS, POTENTIAL_TYPE) as these are not set automatically.", &
100 usage=
"&xc_functional BLYP", &
101 enum_c_vals=
s2a(
"B3LYP",
"PBE0",
"BLYP",
"BP",
"PADE",
"LDA",
"PBE", &
102 "TPSS",
"HCTH120",
"OLYP",
"BEEFVDW",
"NO_SHORTCUT",
"NONE"), &
105 enum_desc=
s2a(
"B3LYP", &
106 "PBE0 (see note in section XC/XC_FUNCTIONAL/PBE)", &
107 "BLYP",
"BP",
"PADE",
"Alias for PADE", &
108 "PBE (see note in section XC/XC_FUNCTIONAL/PBE)", &
109 "TPSS (not available with LSD, use LIBXC version instead)",
"HCTH120",
"OLYP", &
110 "BEEFVDW",
"NO_SHORTCUT",
"NONE"), &
117 description=
"Uses the Becke 88 exchange functional", &
118 n_keywords=0, n_subsections=0, repeats=.false., &
120 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
121 description=
"activates the functional", &
122 lone_keyword_l_val=.true., default_l_val=.false.)
126 keyword, __location__, name=
"scale_x", &
127 description=
"scales the exchange part of the functional", &
135 CALL section_create(subsection, __location__, name=
"LYP_ADIABATIC", &
136 description=
"Uses the LYP correlation functional in an adiabatic fashion", &
137 n_keywords=0, n_subsections=0, repeats=.false., &
139 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
140 description=
"activates the functional", &
141 lone_keyword_l_val=.true., default_l_val=.false.)
145 description=
"Defines the parameter of the adiabatic curve.", &
153 CALL section_create(subsection, __location__, name=
"BECKE88_LR_ADIABATIC", &
154 description=
"Uses the Becke 88 longrange exchange functional in an adiabatic fashion", &
155 n_keywords=0, n_subsections=0, repeats=.false., &
157 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
158 description=
"activates the functional", &
159 lone_keyword_l_val=.true., default_l_val=.false.)
163 description=
"scales the exchange part of the functional", &
168 description=
"Potential parameter in erf(omega*r)/r", &
173 description=
"Defines the parameter of the adiabatic curve", &
181 CALL section_create(subsection, __location__, name=
"BECKE88_LR", &
182 description=
"Uses the Becke 88 longrange exchange functional", &
183 n_keywords=0, n_subsections=0, repeats=.false., &
185 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
186 description=
"activates the functional", &
187 lone_keyword_l_val=.true., default_l_val=.false.)
191 description=
"scales the exchange part of the functional", &
196 description=
"Potential parameter in erf(omega*r)/r", &
205 description=
"Uses the LYP functional", &
206 n_keywords=0, n_subsections=0, repeats=.false., &
208 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
209 description=
"activates the functional", &
210 lone_keyword_l_val=.true., default_l_val=.false.)
214 description=
"scales the correlation part of the functional", &
222 description=
"Uses the PADE functional", &
223 n_keywords=0, n_subsections=0, repeats=.false., &
225 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
226 description=
"activates the functional", &
227 lone_keyword_l_val=.true., default_l_val=.false.)
234 description=
"Uses the HCTH class of functionals", &
235 n_keywords=0, n_subsections=0, repeats=.false.)
236 CALL keyword_create(keyword, __location__, name=
"PARAMETER_SET", &
237 description=
"Which version of the parameters should be used", &
238 usage=
"PARAMETER_SET 407", &
239 enum_c_vals=[
"93 ",
"120",
"147",
"407",
"HLE"], &
240 enum_i_vals=[93, 120, 147, 407, 408], &
244 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
245 description=
"activates the functional", &
246 lone_keyword_l_val=.true., default_l_val=.false.)
253 description=
"Uses the OPTX functional", &
254 n_keywords=0, n_subsections=0, repeats=.false.)
255 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
256 description=
"activates the functional", &
257 lone_keyword_l_val=.true., default_l_val=.false.)
261 description=
"scales the exchange part of the functional", &
266 description=
"OPTX a1 coefficient", &
267 default_r_val=1.05151_dp)
271 description=
"OPTX a2 coefficient", &
272 default_r_val=1.43169_dp)
276 description=
"OPTX gamma coefficient", &
277 default_r_val=0.006_dp)
286 description=
"Uses the CS1 functional", &
287 n_keywords=0, n_subsections=0, repeats=.false.)
288 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
289 description=
"activates the functional", &
290 lone_keyword_l_val=.true., default_l_val=.false.)
297 description=
"Uses one of the XGGA functionals (optimized versions of "// &
298 "some of these functionals might be available outside this section).", &
299 n_keywords=1, n_subsections=0, repeats=.false.)
300 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
301 description=
"activates the functional", &
302 lone_keyword_l_val=.true., default_l_val=.false.)
306 description=
"Which one of the XGGA functionals should be used", &
307 usage=
"FUNCTIONAL PW86X", &
324 description=
"Uses one of the KE_GGA functionals (optimized versions of "// &
325 "some of these functionals might be available outside this section). "// &
326 "These functionals are needed for the computation of the kinetic "// &
327 "energy in the Kim-Gordon method.", &
328 n_keywords=1, n_subsections=0, repeats=.false.)
329 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
330 description=
"activates the functional", &
331 lone_keyword_l_val=.true., default_l_val=.false.)
335 description=
"Which one of the KE_GGA functionals should be used", &
336 usage=
"FUNCTIONAL (OL1|OL2|LLP|PW86|PW91|LC|T92|PBE)", &
337 enum_c_vals=[
"OL1 ",
"OL2 ",
"LLP ",
"PW86",
"PW91",
"LC ",
"T92 ",
"PBE "], &
339 enum_desc=
s2a(
"Uses first Ou-Yang and Levy functional, currently not producing correct results", &
340 "Uses second Ou-Yang and Levy functional, currently not producing correct results", &
341 "Uses Lee, Lee, and Parr functional", &
342 "Uses Perdew and Wang's 1986 functional", &
343 "Uses Perdew and Wang's 1991 functional", &
344 "Uses Lembarki and Chermette functional", &
345 "Uses Thakkar functional", &
346 "Uses the 1996 functional of Perdew, Burke and Ernzerhof"), &
354 description=
"Uses the P86C functional", &
355 n_keywords=0, n_subsections=0, repeats=.false.)
356 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
357 description=
"activates the functional", &
358 lone_keyword_l_val=.true., default_l_val=.false.)
362 description=
"scales the correlation part of the functional", &
370 description=
"Uses the PerdewWang correlation functional.", &
371 n_keywords=1, n_subsections=0, repeats=.false.)
372 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
373 description=
"activates the functional", &
374 lone_keyword_l_val=.true., default_l_val=.false.)
378 description=
"Scaling of the energy functional", &
379 default_r_val=1.0_dp)
382 CALL keyword_create(keyword, __location__, name=
"PARAMETRIZATION", &
383 description=
"Which one of parametrizations should be used", &
384 usage=
"PARAMETRIZATION DMC", &
397 description=
"Uses the PZ functional.", &
398 n_keywords=1, n_subsections=0, repeats=.false., &
400 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
401 description=
"activates the functional", &
402 lone_keyword_l_val=.true., default_l_val=.false.)
405 CALL keyword_create(keyword, __location__, name=
"PARAMETRIZATION", &
406 description=
"Which one of parametrizations should be used", &
407 usage=
"PARAMETRIZATION DMC", &
417 description=
"scales the correlation part of the functional", &
425 description=
"Uses the TFW functional", &
426 n_keywords=0, n_subsections=0, repeats=.false.)
427 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
428 description=
"activates the functional", &
429 lone_keyword_l_val=.true., default_l_val=.false.)
436 description=
"Uses the TF functional", &
437 n_keywords=0, n_subsections=0, repeats=.false.)
438 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
439 description=
"activates the functional", &
440 lone_keyword_l_val=.true., default_l_val=.false.)
447 description=
"Uses the VWN functional", &
448 n_keywords=0, n_subsections=0, repeats=.false., &
450 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
451 description=
"activates the functional", &
452 lone_keyword_l_val=.true., default_l_val=.false.)
456 description=
"scales the correlation part of the functional", &
461 CALL keyword_create(keyword, __location__, name=
"FUNCTIONAL_TYPE", &
462 description=
"Which version of the VWN functional should be used", &
463 usage=
"FUNCTIONAL_TYPE VWN5", &
464 enum_c_vals=
s2a(
"VWN5",
"VWN3"), &
466 enum_desc=
s2a(
"This is the recommended (correct) version of the VWN functional", &
467 "This version is the default in Gaussian, but not recommended. "// &
468 "Notice that it is also employed in Gaussian's default version of B3LYP"), &
477 description=
"Uses the XALPHA (SLATER) functional.", &
478 n_keywords=1, n_subsections=0, repeats=.false.)
479 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
480 description=
"activates the functional", &
481 lone_keyword_l_val=.true., default_l_val=.false.)
485 description=
"Value of the xa parameter (this does not change the exponent, "// &
486 "just the mixing)", &
487 usage=
"XA 0.7", default_r_val=2._dp/3._dp)
491 description=
"scales the exchange part of the functional", &
499 description=
"Uses the TPSS functional. Note, that there is no LSD version available. "// &
500 "In such cases, use the LIBXC version instead.", &
501 n_keywords=0, n_subsections=0, repeats=.false., &
503 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
504 description=
"Activates the functional", &
505 lone_keyword_l_val=.true., default_l_val=.false.)
509 description=
"scales the exchange part of the functional", &
514 description=
"scales the correlation part of the functional", &
522 description=
"Uses the PBE functional", &
523 n_keywords=0, n_subsections=0, repeats=.false., &
525 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
526 description=
"activates the functional", &
527 lone_keyword_l_val=.true., default_l_val=.false.)
530 CALL keyword_create(keyword, __location__, name=
"parametrization", &
531 description=
"switches between the different "// &
532 "parametrizations of the functional. "// &
533 "Note: Beta parameters used have only 5 significant digits, "// &
534 "as published. For higher precision and program comparison "// &
535 "use the LIBXC library.", &
537 enum_c_vals=[
"ORIG ",
"revPBE",
"PBEsol"], &
538 enum_desc=[
"original PBE ", &
539 "revised PBE (revPBE) ", &
540 "PBE for solids and surfaces (PBEsol)"], &
545 description=
"scales the exchange part of the functional", &
550 description=
"scales the correlation part of the functional", &
557 CALL create_gauxc_section(subsection)
562 description=
"Uses the short range PBE functional", &
563 n_keywords=0, n_subsections=0, repeats=.false., &
565 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
566 description=
"activates the functional", &
567 lone_keyword_l_val=.true., default_l_val=.false.)
571 description=
"scales the exchange part of the functional", &
576 description=
"scales the exchange part of the original hole PBE-functional", &
577 default_r_val=0.0_dp)
581 description=
"screening parameter", &
589 description=
"Uses the Becke 97 exchange correlation functional", &
590 n_keywords=0, n_subsections=0, repeats=.false., &
592 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
593 description=
"activates the functional", &
594 lone_keyword_l_val=.true., default_l_val=.false.)
598 description=
"scales the exchange part of the functional, if -1 the default for the given parametrization is used", &
599 default_r_val=-1._dp)
603 description=
"scales the correlation part of the functional", &
607 CALL keyword_create(keyword, __location__, name=
"parametrization", &
608 description=
"switches between the B97 and Grimme parametrization ", &
610 enum_c_vals=[
"ORIG ",
"B97GRIMME ",
"B97_GRIMME",
"wB97X-V ",
"B97-3c "], &
618 CALL section_create(subsection, __location__, name=
"BECKE_ROUSSEL", &
619 description=
"Becke Roussel exchange hole model. Can be used "// &
620 "as long range correction with a truncated coulomb potential", &
621 n_keywords=0, n_subsections=0, repeats=.false., &
623 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
624 description=
"activates the functional", &
625 lone_keyword_l_val=.true., default_l_val=.false.)
629 description=
"scales the exchange part of the functional", &
633 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
634 description=
"Defines the cutoff radius for the truncation. "// &
635 "If put to zero, the standard full range potential will be used", &
636 usage=
"CUTOFF_RADIUS 2.0", default_r_val=0.0_dp)
640 description=
"Parameter in the exchange hole. "// &
641 "Usually this is put to 1.0 or 0.8", &
642 usage=
"GAMMA 0.8", default_r_val=1.0_dp)
648 CALL section_create(subsection, __location__, name=
"LDA_HOLE_T_C_LR", &
649 description=
"LDA exchange hole model in truncated coulomb potential", &
650 n_keywords=0, n_subsections=0, repeats=.false.)
651 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
652 description=
"activates the functional", &
653 lone_keyword_l_val=.true., default_l_val=.false.)
657 description=
"scales the exchange part of the functional", &
661 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
662 description=
"Defines cutoff for lower integration boundary", &
663 default_r_val=0.0_dp, unit_str=
"angstrom")
669 CALL section_create(subsection, __location__, name=
"PBE_HOLE_T_C_LR", &
670 description=
"PBE exchange hole model in trucanted coulomb potential", &
671 n_keywords=0, n_subsections=0, repeats=.false.)
672 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
673 description=
"activates the functional", &
674 lone_keyword_l_val=.true., default_l_val=.false.)
678 description=
"scales the exchange part of the functional", &
682 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
683 description=
"Defines cutoff for lower integration boundary", &
684 default_r_val=1.0_dp, unit_str=
"angstrom")
691 description=
"Combination of three different exchange hole models", &
692 n_keywords=0, n_subsections=0, repeats=.false.)
693 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
694 description=
"activates the functional", &
695 lone_keyword_l_val=.true., default_l_val=.false.)
699 description=
"scales the exchange part of the functional", &
703 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
704 description=
"Defines cutoff for lower integration boundary", &
705 default_r_val=0.0_dp, unit_str=
"angstrom")
709 description=
"Parameter for Becke Roussel hole", &
710 default_r_val=1.0_dp)
717 description=
"Uses the BEEFvdW exchange functional", &
718 n_keywords=0, n_subsections=0, repeats=.false., &
720 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
721 description=
"activates the functional", &
722 lone_keyword_l_val=.true., default_l_val=.false.)
726 description=
"scales the exchange part of the functional", &
740 SUBROUTINE create_xc_potential_section(section)
746 cpassert(.NOT.
ASSOCIATED(section))
748 description=
"The xc potential to use (CAREFUL: xc potential here refers "// &
749 "to potentials that are not derived from an xc functional, but rather are "// &
750 "modelled directly. Therefore there is no consistent xc energy available. "// &
751 "To still get an energy expression, see ENERGY below", &
752 n_keywords=1, n_subsections=1, repeats=.false.)
754 NULLIFY (subsection, keyword)
756 description=
"Uses the SAOP potential", &
757 n_keywords=3, n_subsections=0, repeats=.true.)
759 description=
"Value of the alpha parameter (default = 1.19).", &
760 usage=
"ALPHA 1.19", default_r_val=1.19_dp)
764 description=
"Value of the beta parameter (default = 0.01).", &
765 usage=
"BETA 0.01", default_r_val=0.01_dp)
769 description=
"Value of the K_rho parameter (default = 0.42).", &
770 usage=
"K_RHO 0.42", default_r_val=0.42_dp)
777 description=
"How to determine the total energy.", &
778 usage=
"ENERGY [NONE,XC_FUNCTIONAL,SUM_EIGENVALUES", &
779 enum_c_vals=
s2a(
"NONE",
"XC_FUNCTIONAL",
"FUNCTIONAL",
"SUM_EIGENVALUES",
"SOE"), &
789 END SUBROUTINE create_xc_potential_section
796 SUBROUTINE create_xc_kernel_section(section)
801 cpassert(.NOT.
ASSOCIATED(section))
803 description=
"The xc kernel to use (CAREFUL: xc kernel here refers "// &
804 "to kernels that are not derived from an xc functional, but rather are "// &
805 "modelled directly. This kernel will be used in a TDDFPT calculation. "// &
806 "Cannot be combined with XC_FUNCTIONAL or XC_POTENTIAL.", &
807 n_keywords=1, n_subsections=1, repeats=.false.)
811 keyword, __location__, name=
"_SECTION_PARAMETERS_", &
812 description=
"Selection of kernel functionals.", &
813 usage=
"&XC_KERNEL LDAfxc", &
814 enum_c_vals=
s2a(
"PADEfxc",
"LDAfxc",
"GGAfxc",
"NONE"), &
816 enum_desc=
s2a(
"Fxc based on LDA PADE approximation", &
817 "Fxc based on LDA functionals", &
818 "Fxc model from fit to PBE functional", &
826 description=
"List of parameters specific to the kernel function", &
827 usage=
"PARAMETER <REAL> .. <REAL>", &
828 type_of_var=
real_t, n_var=-1)
832 description=
"B97 GAMMA parameters [gx, gab, gaa]", &
833 usage=
"GAMMA <REAL> <REAL> <REAL>", &
834 default_r_vals=[0.004_dp, 0.006_dp, 0.2_dp], &
835 type_of_var=
real_t, n_var=3)
839 description=
"B97 C parameters for exchange", &
840 usage=
"C_XAA <REAL> <REAL> <REAL>", &
841 default_r_vals=[1.0_dp, 0.63_dp, 0.94_dp], &
842 type_of_var=
real_t, n_var=3)
846 description=
"B97 C parameters for same spin correlation.", &
847 usage=
"C_CAB <REAL> <REAL> <REAL>", &
848 default_r_vals=[1.0_dp, 0.75_dp, -4.60_dp], &
849 type_of_var=
real_t, n_var=3)
853 description=
"B97 C parameters for opposite spin correlation.", &
854 usage=
"C_CAA <REAL> <REAL> <REAL>", &
855 default_r_vals=[0.17_dp, 2.35_dp, -2.55_dp], &
856 type_of_var=
real_t, n_var=3)
860 description=
"Scaling parameter for exchange kernel.", &
861 usage=
"SCALE_X 0.2", default_r_val=1.0_dp)
865 description=
"Scaling parameter for correlation kernel.", &
866 usage=
"SCALE_C 0.2", default_r_val=1.0_dp)
870 END SUBROUTINE create_xc_kernel_section
877 SUBROUTINE create_hfx_kernel_section(section)
883 cpassert(.NOT.
ASSOCIATED(section))
885 description=
"The hfx kernel to use. Cannot be combined with HF section.", &
886 n_keywords=1, n_subsections=2, repeats=.false.)
888 NULLIFY (subsection, keyword)
890 description=
"Switch to use the HFXSR (short range) kernel.", &
891 usage=
"DO_HFXSR T/F", default_l_val=.false., &
892 lone_keyword_l_val=.true.)
895 NULLIFY (subsection, keyword)
896 CALL keyword_create(keyword, __location__, name=
"HFXSR_PRIMBAS", &
897 description=
"Default number of primitives in ADMM basis in HFXSR. "// &
898 "0 indicates the use of a contracted minimal basis. ", &
899 usage=
"HFXSR_PRIMBAS 3", default_i_val=0)
908 description=
"Uses the HFXLR (long range) kernel", &
909 n_keywords=2, n_subsections=0, repeats=.false.)
911 description=
"Value of lower range cutoff of interaction [Bohr]", &
912 usage=
"RCUT 5.00", default_r_val=6.00_dp, unit_str=
"bohr")
916 description=
"Scaling parameter for HFX kernel.", &
917 usage=
"SCALE 0.25", default_r_val=1.00_dp)
923 END SUBROUTINE create_hfx_kernel_section
929 SUBROUTINE create_vdw_potential_section(section)
933 TYPE(
section_type),
POINTER :: newsection, print_key, subsection
935 cpassert(.NOT.
ASSOCIATED(section))
936 CALL section_create(section, __location__, name=
"vdw_potential", &
937 description=
"This section combines all possible additional dispersion "// &
938 "corrections to the normal XC functionals. This can be more functionals "// &
939 "or simple empirical pair potentials. ", &
941 n_keywords=1, n_subsections=1, repeats=.false.)
943 NULLIFY (subsection, keyword)
944 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_TYPE", &
945 variants=
s2a(
"DISPERSION_FUNCTIONAL"), &
946 description=
"Type of dispersion/vdW functional or potential to use", &
947 usage=
"POTENTIAL_TYPE (NONE|PAIR_POTENTIAL|NON_LOCAL)", &
948 enum_c_vals=
s2a(
"NONE",
"PAIR_POTENTIAL",
"NON_LOCAL"), &
950 enum_desc=
s2a(
"No dispersion/van der Waals functional.", &
951 "Pair potential van der Waals density functional, "// &
952 "including Grimme's empirical DFT-D methods.", &
953 "Nonlocal van der Waals density functional; more "// &
954 "rigorous in principle, but significantly more "// &
955 "time-consuming."), &
960 CALL section_create(subsection, __location__, name=
"PAIR_POTENTIAL", &
961 description=
"Information on the pair potential to calculate dispersion", &
962 n_keywords=5, n_subsections=0, repeats=.true.)
964 variants=
s2a(
"D3_CUTOFF",
"D4_3B_CUTOFF"), &
965 description=
"Range of potential. The cutoff will be 2 times this value. "// &
966 "In the case of D4 it will be used for the 3-body term", &
967 usage=
"R_CUTOFF 20.0", default_r_val=20.0_dp, &
972 description=
"Range of potential. The cutoff will be 2 times this value. "// &
973 "Only used for the 2-body term of D4", &
974 usage=
"D4_CUTOFF 30.0", default_r_val=20.0_dp, &
978 CALL keyword_create(keyword, __location__, name=
"D4_CUTOFF_WIDTH", &
979 variants=[
"D4_2B_CUTOFF_WIDTH"], &
980 description=
"Width of the smooth cutoff for the 2-body term of D4. "// &
981 "A value of zero disables smoothing.", &
982 usage=
"D4_CUTOFF_WIDTH 0.05", default_r_val=0.05_dp, &
986 CALL keyword_create(keyword, __location__, name=
"D4_3B_CUTOFF_WIDTH", &
987 description=
"Width of the smooth cutoff for the 3-body term of D4. "// &
988 "A value of zero disables smoothing.", &
989 usage=
"D4_3B_CUTOFF_WIDTH 0.0", default_r_val=0.0_dp, &
994 description=
"Coordination number cutoff for D4", &
995 usage=
"D4_CN_CUTOFF 30.0", default_r_val=-1.0_dp, &
1000 description=
"Type of potential", &
1002 usage=
"TYPE (DFTD2|DFTD2(CHG)|DFTD3|DFTD3(BJ)|DFTD4)", &
1003 enum_c_vals=
s2a(
"DFTD2",
"DFTD2(CHG)",
"DFTD3",
"DFTD3(BJ)",
"DFTD4"), &
1006 enum_desc=
s2a(
"Grimme D2 method", &
1007 "D2 with Chai-Head-Gordon damping (wB97X-D, a=6, alpha=12)", &
1008 "Grimme D3 method (zero damping)", &
1009 "Grimme D3 method (Becke-Johnson damping)", &
1010 "Grimme D4 method"), &
1014 CALL keyword_create(keyword, __location__, name=
"PARAMETER_FILE_NAME", &
1015 description=
"Name of the parameter file, may include a path (not used for D4)", &
1016 usage=
"PARAMETER_FILE_NAME <FILENAME>", &
1017 default_lc_val=
"dftd3.dat")
1020 CALL keyword_create(keyword, __location__, name=
"REFERENCE_FUNCTIONAL", &
1021 description=
"Use parameters for this specific density functional. "// &
1022 "For DFTD2(CHG), use WB97X-D. "// &
1023 "For available DFT-D4 functionals and parameters see: "// &
1024 "<https://github.com/dftd4/dftd4/blob/main/src/dftd4/param.f90>. "// &
1025 "For available D3 and D3(BJ) parameters see: "// &
1026 "<https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3>. "// &
1027 "For Skala with D3(BJ), SKALA selects the B3LYP D3(BJ) parameters.", &
1028 usage=
"REFERENCE_FUNCTIONAL <functional>", &
1032 CALL keyword_create(keyword, __location__, name=
"D4_REFERENCE_CODE", &
1033 description=
"Calculate D4 correction using external library entirely. "// &
1034 "Switch off to use native reimplementation in CP2K. Note that the "// &
1035 "external library is always needed no matter if this option is "// &
1036 "triggered or not.", &
1037 usage=
"D4_REFERENCE_CODE", default_l_val=.true., &
1038 lone_keyword_l_val=.true.)
1042 description=
"Debug output for D4 method using reference code; "// &
1043 "requires D4_REFERENCE_CODE F to work and VERBOSE_OUTPUT T to "// &
1044 "show the debugging result.", &
1045 usage=
"D4_DEBUG", default_l_val=.false., &
1046 lone_keyword_l_val=.true.)
1049 CALL keyword_create(keyword, __location__, name=
"D3_REFERENCE_CODE", &
1050 description=
"Use D3 damping parameters from s-dftd3 library instead of built-in values. "// &
1051 "Requires s-dftd3 library to be compiled in.", &
1052 usage=
"D3_REFERENCE_CODE", default_l_val=.false., &
1053 lone_keyword_l_val=.true.)
1057 variants=[
"SCALING"], &
1058 description=
"XC Functional dependent scaling parameter. If omitted, CP2K attempts"// &
1059 " to guess the xc functional that is in use and sets the associated scaling parameter.", &
1060 usage=
"SCALING 0.2", default_r_val=0._dp)
1064 variants=[
"EXP_PRE"], &
1065 description=
"Prefactor in exponential damping factor (DFT-D2 potential). "// &
1066 "Not applicable to DFTD2(CHG).", &
1067 usage=
"D2_EXP_PRE 20.", default_r_val=20._dp)
1071 description=
"Cutoff value for coordination number function (DFT-D3 method)", &
1072 usage=
"EPS_CN 1.e-6_dp", default_r_val=1.e-6_dp)
1076 description=
"XC Functional dependent scaling parameters (s6,sr6,s8) for the DFT-D3 method."// &
1077 " If omitted, CP2K attempts"// &
1078 " to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter.", &
1079 usage=
"D3_SCALING 1.0 1.0 1.0", n_var=3, &
1080 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
1083 CALL keyword_create(keyword, __location__, name=
"D3BJ_SCALING", &
1084 description=
"XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D3(BJ) method."// &
1085 " If omitted, CP2K attempts"// &
1086 " to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter.", &
1087 usage=
"D3BJ_SCALING 1.0 1.0 1.0 1.0", n_var=4, &
1088 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1092 description=
"XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D4 method."// &
1093 " If omitted, CP2K attempts"// &
1094 " to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter.", &
1095 usage=
"D4_SCALING 1.0 1.0 1.0 1.0", n_var=4, &
1096 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1099 CALL keyword_create(keyword, __location__, name=
"CALCULATE_C9_TERM", &
1100 description=
"Calculate C9 terms in DFT-D3 model", &
1101 usage=
"CALCULATE_C9_TERM", default_l_val=.false., &
1102 lone_keyword_l_val=.true.)
1105 CALL keyword_create(keyword, __location__, name=
"REFERENCE_C9_TERM", &
1106 description=
"Calculate C9 terms in DFT-D3 model using reference coordination numbers", &
1107 usage=
"REFERENCE_C9_TERM", default_l_val=.false., &
1108 lone_keyword_l_val=.true.)
1111 CALL keyword_create(keyword, __location__, name=
"FACTOR_S9_TERM", &
1112 description=
"S9 prefactor of the many-body term in the DFT-D4 method.", &
1113 usage=
"FACTOR_S9_TERM 1.e-0", default_r_val=1.00_dp)
1116 CALL keyword_create(keyword, __location__, name=
"LONG_RANGE_CORRECTION", &
1117 description=
"Calculate a long range correction to the DFT-D3 model."// &
1118 " WARNING: Use with care! Only for isotropic dense systems.", &
1119 usage=
"LONG_RANGE_CORRECTION", default_l_val=.false., &
1120 lone_keyword_l_val=.true.)
1123 CALL keyword_create(keyword, __location__, name=
"SHORT_RANGE_CORRECTION", &
1124 description=
"Calculate a short-range bond correction to the DFT-D3 model", &
1125 usage=
"SHORT_RANGE_CORRECTION", default_l_val=.false., &
1126 lone_keyword_l_val=.true.)
1129 CALL keyword_create(keyword, __location__, name=
"SHORT_RANGE_CORRECTION_PARAMETERS", &
1130 description=
"Parameters for the short-range bond correction to the DFT-D3 model. "// &
1131 "s*(za*zb)^t1*EXP(-g*dr*r0ab^t2), parameters: s, g, t1, t2 "// &
1132 "Defaults: s=0.08, g=10.0, t1=0.5, t2=-1.0 ", &
1133 usage=
"SHORT_RANGE_CORRECTION_PARAMETERS", default_r_vals=[0.08_dp, 10.0_dp, 0.5_dp, -1.0_dp], &
1134 n_var=4, type_of_var=
real_t)
1138 CALL keyword_create(keyword, __location__, name=
"MOLECULE_CORRECTION", &
1139 description=
"Calculate a intermolecular correction to the DFT-D3 model", &
1140 usage=
"MOLECULE_CORRECTION", default_l_val=.false., &
1141 lone_keyword_l_val=.true.)
1144 CALL keyword_create(keyword, __location__, name=
"MOLECULE_CORRECTION_C8", &
1145 description=
"Calculate a intermolecular correction to the C8 term in the DFT-D3 model", &
1146 usage=
"MOLECULE_CORRECTION_C8 1.0 ", default_r_val=0.0_dp)
1149 CALL keyword_create(keyword, __location__, name=
"VERBOSE_OUTPUT", &
1150 description=
"Extensive output for the DFT-D2 and DFT-D3 models."// &
1151 " Needs PRINT_DFTD section to be specified.", &
1152 usage=
"VERBOSE_OUTPUT", default_l_val=.false., &
1153 lone_keyword_l_val=.true.)
1158 CALL keyword_create(keyword, __location__, name=
"D3_EXCLUDE_KIND", &
1159 description=
"Specifies the atomic kinds excluded in the DFT-D3 calculation.", &
1160 usage=
"D3_EXCLUDE_KIND kind1 kind2 ... ", repeats=.false., &
1166 CALL keyword_create(keyword, __location__, name=
"D3_EXCLUDE_KIND_PAIR", &
1167 description=
"Specifies the atomic kinds for interactions excluded from the DFT-D3 calculation.", &
1168 usage=
"D3_EXCLUDE_KIND_PAIR kind1 kind2 ", repeats=.true., &
1174 CALL keyword_create(keyword, __location__, name=
"KIND_COORDINATION_NUMBERS", &
1175 description=
"Specifies the coordination number for a kind for the C9 term in DFT-D3.", &
1176 usage=
"KIND_COORDINATION_NUMBERS CN kind ", repeats=.true., &
1177 n_var=-1, type_of_var=
char_t)
1181 CALL keyword_create(keyword, __location__, name=
"ATOM_COORDINATION_NUMBERS", &
1182 description=
"Specifies the coordination number of a set of atoms for the C9 term in DFT-D3.", &
1183 usage=
"ATOM_COORDINATION_NUMBERS CN atom1 atom2 ... ", repeats=.true., &
1184 n_var=-1, type_of_var=
char_t)
1190 description=
"Specifies parameters for atom types (in atomic units). If "// &
1191 "not provided default parameters are used (DFT-D2).", &
1192 usage=
"ATOMPARM <ELEMENT> <C6_parameter> <vdw_radii>", &
1193 repeats=.true., n_var=-1, type_of_var=
char_t)
1199 description=
"Controls the printing of some info about DFTD contributions", &
1204 NULLIFY (newsection)
1213 NULLIFY (subsection, keyword)
1214 CALL section_create(subsection, __location__, name=
"NON_LOCAL", &
1215 description=
"Information on the non local part of dispersion functionals. "// &
1216 "Correct functionals require a corresponding setting of XC_FUNCTIONAL.", &
1217 n_keywords=0, n_subsections=0, repeats=.true.)
1220 description=
"Type of functional (the corresponding kernel data file should be selected). "// &
1221 "Allows for common forms such as vdW-DF, vdW-DF2, optB88-vdW, rVV10.", &
1222 usage=
"TYPE DRSLL", &
1223 enum_c_vals=
s2a(
"DRSLL",
"LMKLL",
"RVV10"), &
1225 enum_desc=
s2a(
"Dion-Rydberg-Schroeder-Langreth-Lundqvist nonlocal van der Waals density functional", &
1226 "Lee-Murray-Kong-Lundqvist-Langreth nonlocal van der Waals density functional", &
1227 "Revised Vydrov-van Voorhis nonlocal van der Waals density functional"), &
1232 CALL keyword_create(keyword, __location__, name=
"VERBOSE_OUTPUT", &
1233 description=
"Extensive output for non local functionals", &
1234 usage=
"VERBOSE_OUTPUT", default_l_val=.false., &
1235 lone_keyword_l_val=.true.)
1238 CALL keyword_create(keyword, __location__, name=
"KERNEL_FILE_NAME", &
1239 description=
"Name of the kernel data file, may include a path. "// &
1240 "vdW_kernel_table.dat is for DRSLL and LMKLL and "// &
1241 "rVV10_kernel_table.dat is for rVV10.", &
1242 usage=
"KERNEL_FILE_NAME <FILENAME>", &
1243 default_lc_val=
"vdW_kernel_table.dat")
1247 description=
"The cutoff of the FFT grid used in the calculation "// &
1248 "of the nonlocal vdW functional [Ry].", &
1249 usage=
"CUTOFF 300", &
1250 default_r_val=-1._dp, unit_str=
"Ry")
1254 description=
"Parameters b and C of the rVV10 functional", &
1255 usage=
"PARAMETERS 6.3 0.0093", &
1256 type_of_var=
real_t, default_r_vals=[6.3_dp, 0.0093_dp], n_var=2)
1260 description=
"Scales the energy contribution of the rVV10 functional", &
1261 usage=
"SCALE 1.0", &
1262 type_of_var=
real_t, default_r_val=1.0_dp)
1269 END SUBROUTINE create_vdw_potential_section
1276 SUBROUTINE create_gcp_potential_section(section)
1281 cpassert(.NOT.
ASSOCIATED(section))
1282 CALL section_create(section, __location__, name=
"gcp_potential", &
1283 description=
"This section combines geometrical counterpoise potentials."// &
1284 " This is a simple empirical pair potential to correct for BSSE. ", &
1286 n_keywords=1, n_subsections=1, repeats=.false.)
1289 CALL keyword_create(keyword, __location__, name=
"PARAMETER_FILE_NAME", &
1290 description=
"Name of the parameter file, may include a path", &
1291 usage=
"PARAMETER_FILE_NAME <FILENAME>", &
1292 default_lc_val=
"---")
1296 CALL keyword_create(keyword, __location__, name=
"GLOBAL_PARAMETERS", &
1297 description=
"Global parameters of the gCP method."// &
1298 " Parameters are sigma, alpha, beta, eta from the original paper.", &
1299 usage=
"GLOBAL_PARAMETERS 1.0 1.0 1.0 1.0", n_var=4, &
1300 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1304 CALL keyword_create(keyword, __location__, name=
"DELTA_ENERGY", &
1305 description=
"Specify the delta energy [Hartree] term for an atom kind", &
1306 usage=
"DELTA_ENERGY type value", &
1307 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"XX ",
"0.0"])
1312 description=
"Verbose output for gCP calculation", &
1313 usage=
"VERBOSE logical_value", &
1314 default_l_val=.true., lone_keyword_l_val=.true.)
1318 END SUBROUTINE create_gcp_potential_section
1325 SUBROUTINE create_gauxc_section(section)
1330 cpassert(.NOT.
ASSOCIATED(section))
1332 description=
"Use exchange-correlation functionals provided by GauXC. "// &
1333 "The current CP2K bridge uses GauXC's molecular quadrature. Periodic inputs "// &
1334 "are limited to isolated validation cells and are not compact periodic "// &
1335 "material calculations.", &
1336 n_keywords=30, n_subsections=0, repeats=.false.)
1340 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1341 description=
"activates the functional", &
1342 lone_keyword_l_val=.true., default_l_val=.false.)
1347 description=
"Functional name used to create the GauXC integrator. "// &
1348 "If MODEL is set, this optional base functional defaults to PBE and "// &
1349 "does not need to be specified for MODEL SKALA inputs.", &
1350 default_c_val=
"PBE")
1355 description=
"GauXC Skala model name or path. Use NONE for conventional GauXC. "// &
1356 "MODEL SKALA selects the installed Skala-1.1 model when available; "// &
1357 "other Skala models are supplied as .fun files or model names. "// &
1358 "NLCC pseudopotentials are rejected by the direct molecular GauXC "// &
1359 "Skala path. Pseudopotential GAPW PAW_ONE_CENTER and the CP2K-native "// &
1360 "SKALA grid path include NLCC in their reconstructed primitive fields.", &
1361 usage=
"MODEL SKALA", &
1362 default_c_val=
"NONE")
1367 keyword, __location__, name=
"PSEUDOPOTENTIAL_GAPW_REPRESENTATION", &
1368 description=
"Select the density representation used by an active GauXC model for "// &
1369 "METHOD GAPW/GAPW_XC kinds with GTH or ECP pseudopotentials. "// &
1370 "DIRECT_VALENCE treats those kinds as GPW_TYPE and evaluates the model on "// &
1371 "the direct valence density; this is the default for non-local models such "// &
1372 "as Skala. PAW_ONE_CENTER combines the smooth and all hard-minus-soft "// &
1373 "one-center primitive fields before one model evaluation, retaining all 15 pairwise "// &
1374 "spin-gradient cross terms (14 additional to the smooth-density baseline) and the "// &
1375 "non-local couplings. PAW_ONE_CENTER_SPLIT is a diagnostic that evaluates smooth, hard, "// &
1376 "and soft fields separately. CP2K_DEFAULT retains the representation selected "// &
1377 "by KIND%GPW_TYPE, basis hardness, and DFT%QS%FORCE_PAW. All-electron kinds "// &
1378 "and conventional GauXC MODEL NONE calculations are unaffected. In a mixed "// &
1379 "all-electron/pseudopotential calculation, the selector applies per kind: "// &
1380 "all-electron kinds retain their one-center reconstruction while pseudopotential "// &
1381 "kinds follow the selected representation. No mixed-system-specific input is needed.", &
1382 usage=
"PSEUDOPOTENTIAL_GAPW_REPRESENTATION DIRECT_VALENCE", &
1383 enum_c_vals=
s2a(
"DIRECT_VALENCE",
"PAW_ONE_CENTER",
"CP2K_DEFAULT", &
1384 "PAW_ONE_CENTER_SPLIT"), &
1387 enum_desc=
s2a(
"Use the direct pseudopotential valence density", &
1388 "Reconstruct the GAPW primitive fields before model evaluation", &
1389 "Use the representation selected by the ordinary CP2K GAPW rules", &
1390 "Diagnose the separate smooth plus hard-minus-soft energy expression"), &
1396 description=
"Atomic grid size for GauXC. Skala defaults to SUPERFINE "// &
1397 "unless this keyword is set explicitly.", &
1398 usage=
"GRID fine", &
1399 enum_c_vals=
s2a(
"FINE",
"ULTRAFINE",
"SUPERFINE",
"GM3",
"GM5"), &
1400 enum_i_vals=[1, 2, 3, 4, 5], &
1401 enum_desc=
s2a(
"Fine grid (default)", &
1402 "Ultra fine grid", &
1403 "Super fine grid", &
1410 CALL keyword_create(keyword, __location__, name=
"RADIAL_QUADRATURE", &
1411 description=
"Radial quadrature scheme for GauXC", &
1412 usage=
"RADIAL_QUADRATURE muraknowles", &
1413 enum_c_vals=
s2a(
"MURAKNOWLES",
"BECKE",
"TREUTLERAHLRICHS",
"MURRAYHANDYLAMING"), &
1414 enum_i_vals=[1, 2, 3, 4], &
1415 enum_desc=
s2a(
"Mura-Knowles radial quadrature (default)", &
1416 "Becke radial quadrature", &
1417 "Treutler-Ahlrichs radial quadrature", &
1418 "Murray-Handy-Laming radial quadrature"), &
1423 CALL keyword_create(keyword, __location__, name=
"PRUNING_SCHEME", &
1424 description=
"Pruning scheme for GauXC. Skala defaults to UNPRUNED "// &
1425 "unless this keyword is set explicitly.", &
1426 usage=
"PRUNING_SCHEME robust", &
1427 enum_c_vals=
s2a(
"ROBUST",
"TREUTLER",
"UNPRUNED"), &
1428 enum_i_vals=[1, 2, 3], &
1429 enum_desc=
s2a(
"Robust pruning (default)", &
1430 "Treutler pruning", &
1437 description=
"Batch size for GauXC evaluation", &
1438 usage=
"BATCH_SIZE 512", &
1443 CALL keyword_create(keyword, __location__, name=
"DEVICE_RUNTIME_FILL_FRACTION", &
1444 description=
"Fraction of currently available GPU memory preallocated by "// &
1445 "a GauXC device runtime. Lower values leave more memory for Skala "// &
1446 "Torch inference; this keyword is used only with LB_EXECUTION_SPACE DEVICE.", &
1447 usage=
"DEVICE_RUNTIME_FILL_FRACTION 0.1", &
1448 default_r_val=0.1_dp)
1452 CALL keyword_create(keyword, __location__, name=
"MODEL_ATOM_CHUNK_SIZE", &
1453 description=
"Atom chunk size for GauXC Skala Torch inference. "// &
1454 "A positive value evaluates the Torch model atom block by atom block; "// &
1455 "zero disables chunking; the default leaves GauXC's model-specific policy "// &
1456 "or the GAUXC_ONEDFT_ATOM_CHUNK_SIZE environment variable in control.", &
1457 usage=
"MODEL_ATOM_CHUNK_SIZE 3", &
1462 CALL keyword_create(keyword, __location__, name=
"PERIODIC_REFERENCE", &
1463 description=
"Explicitly opt into the limited isolated-cell GauXC reference "// &
1464 "path for periodic CP2K inputs. This path is restricted to Gamma-only, "// &
1465 "single-image METHOD GPW calculations with GTH pseudopotentials and uses "// &
1466 "GauXC's molecular quadrature; compact periodic materials require a "// &
1467 "dedicated periodic GauXC interface.", &
1468 usage=
"PERIODIC_REFERENCE T", &
1469 default_l_val=.false., lone_keyword_l_val=.true.)
1474 description=
"Experimental CP2K-native real-space-grid path for SKALA "// &
1475 "TorchScript models. This bypasses GauXC molecular quadrature and supports "// &
1476 "isolated, partially periodic, and fully periodic METHOD GPW cells with "// &
1477 "GTH/ECP pseudopotentials and METHOD GAPW/GAPW_XC cells. GAPW with "// &
1478 "GTH/ECP pseudopotentials supports direct-valence and PAW-like one-center "// &
1479 "density representations; GAPW all-electron reconstructs the all-electron "// &
1480 "primitive fields. The current implementation is limited "// &
1481 "to a single GAUXC functional and provides energy, VXC, and experimental "// &
1482 "analytical nuclear-gradient/stress evaluations. K-point runs use CP2K's "// &
1483 "standard k-point and symmetry-reduction infrastructure; CPU k-point "// &
1484 "runs require mutually compatible BLAS, ScaLAPACK, OpenMP, and LibTorch "// &
1485 "runtimes, while CUDA evaluation is selected explicitly. "// &
1486 "Energy/VXC runs split the Torch evaluation into atom blocks by default "// &
1487 "and route dynamic features and gradients between MPI ranks. "// &
1488 "PAW-like GAPW+GTH/ECP and METHOD GAPW_XC combine selectable hard/soft "// &
1489 "primitive fields before constructing the nonlinear SKALA features. ROKS, "// &
1490 "ADMM, and non-k-point multiple-image calculations are not implemented.", &
1491 usage=
"NATIVE_GRID T", &
1492 default_l_val=.false., lone_keyword_l_val=.true.)
1496 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_MODEL_FP64", &
1497 description=
"Promote float32 numerical state and explicit floating-point casts "// &
1498 "in the native SKALA TorchScript model to double precision. Trained parameter "// &
1499 "values are retained exactly. This improves SCF and geometry-derivative "// &
1500 "consistency for mixed-precision exports. Disable to retain the export's "// &
1501 "original numerical precision.", &
1502 usage=
"NATIVE_GRID_MODEL_FP64 T", &
1503 default_l_val=.true., lone_keyword_l_val=.true.)
1507 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_USE_CUDA", &
1508 description=
"Evaluate the experimental CP2K-native SKALA GPW TorchScript "// &
1509 "model on CUDA when libtorch CUDA support is available. This requires a "// &
1510 "CUDA-compatible SKALA model export; MODEL SKALA first checks "// &
1511 "GAUXC_SKALA_CUDA_MODEL in this mode and otherwise falls back to "// &
1512 "SKALA_MODEL. The portable default uses CPU tensors.", &
1513 usage=
"NATIVE_GRID_USE_CUDA T", &
1514 default_l_val=.false., lone_keyword_l_val=.true.)
1518 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_CUDA_DEVICE", &
1519 description=
"CUDA device used by the experimental CP2K-native SKALA GPW "// &
1520 "TorchScript path when NATIVE_GRID_USE_CUDA is enabled. A negative value "// &
1521 "maps the MPI-local rank to one of the CUDA devices visible to the process; "// &
1522 "CUDA exports with device-specific TorchScript constants may require a "// &
1523 "rank-local CUDA_VISIBLE_DEVICES list. A non-negative value selects that "// &
1524 "visible CUDA device explicitly.", &
1525 usage=
"NATIVE_GRID_CUDA_DEVICE -1", &
1530 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_ATOM_PARTITION", &
1531 description=
"Atom partition used to build the experimental CP2K-native "// &
1532 "SKALA COMMON_GRID feature block. HARD assigns each native grid point to "// &
1533 "the nearest periodic atom and is intended for legacy energy/VXC-only runs. "// &
1534 "SMOOTH uses a Becke-like fuzzy-cell partition on the native grid and creates "// &
1535 "weighted atom rows. Internal atom-grid weights vanish through a smooth taper "// &
1536 "when sparse rows reach the partition cutoff. Analytical atom forces and stress "// &
1537 "include both the partition and taper derivatives in the SKALA feature response.", &
1538 usage=
"NATIVE_GRID_ATOM_PARTITION SMOOTH", &
1539 enum_c_vals=
s2a(
"HARD",
"SMOOTH"), &
1540 enum_i_vals=[1, 2], &
1541 enum_desc=
s2a(
"Assign each grid point to the nearest atom", &
1542 "Use a smooth Becke-like native-grid atom partition"), &
1548 keyword, __location__, name=
"NATIVE_GRID_LAYOUT", &
1549 description=
"Select the numerical layout for native-grid Skala irrespective of the "// &
1550 "electronic core representation. ATOM_COMPOSITE, the default, evaluates complete "// &
1551 "atom-centered radial/Lebedev blocks. GPW and pseudopotential direct-valence fields "// &
1552 "are interpolated from CP2K's plane-wave grid; GAPW primitive fields are combined "// &
1553 "before nonlinear feature construction. The matching interpolation, partition, and "// &
1554 "one-center adjoints return VXC, forces, and stress to CP2K. Mixed all-electron and "// &
1555 "pseudopotential kinds use the same syntax and are reconstructed per kind. COMMON_GRID retains "// &
1556 "evaluation on CP2K's regular real-space grid as a cutoff-sensitive reference and "// &
1557 "diagnostic layout; mixed core representations require ATOM_COMPOSITE.", &
1558 usage=
"NATIVE_GRID_LAYOUT ATOM_COMPOSITE", &
1559 enum_c_vals=
s2a(
"COMMON_GRID",
"ATOM_COMPOSITE"), &
1561 enum_desc=
s2a(
"Evaluate on the common regular real-space grid", &
1562 "Use image-partitioned atom-centered grids"), &
1567 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_GAPW_DENSITY_PARTITION", &
1568 description=
"Hard/soft one-center primitive-field contribution used by "// &
1569 "METHOD GAPW and METHOD GAPW_XC. With PAW_ONE_CENTER, HARD_MINUS_SOFT "// &
1570 "combines smooth, hard, and soft density, gradient, and kinetic-energy-density "// &
1571 "fields before a single nonlinear SKALA evaluation. It is the default. For "// &
1572 "pseudopotential PAW/one-center GAPW this is distinct from KIND%GPW_TYPE, "// &
1573 "which uses the regular-grid valence-density approximation. "// &
1574 "HARD_ONLY, SOFT_ONLY, and NONE are diagnostic variants.", &
1575 usage=
"NATIVE_GRID_GAPW_DENSITY_PARTITION HARD_MINUS_SOFT", &
1576 enum_c_vals=
s2a(
"HARD_MINUS_SOFT",
"HARD_ONLY",
"SOFT_ONLY",
"NONE"), &
1577 enum_i_vals=[1, 2, 3, 4], &
1578 enum_desc=
s2a(
"Use the hard-minus-soft GAPW one-center correction", &
1579 "Use only the hard one-center density", &
1580 "Use only the soft one-center density with the GAPW sign", &
1581 "Disable the GAPW one-center SKALA correction"), &
1586 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_GAPW_COMPOSITE_REFERENCE", &
1587 description=
"Evaluate native-grid SKALA for METHOD GAPW or GAPW_XC on "// &
1588 "rho and tau reconstructed as smooth plus hard-minus-soft before nonlinear "// &
1589 "feature construction on one common regular grid. No separate one-center "// &
1590 "SKALA energy is added. This expensive, cutoff-sensitive diagnostic is "// &
1591 "intended to validate the nonlinear hard/soft cross terms.", &
1592 usage=
"NATIVE_GRID_GAPW_COMPOSITE_REFERENCE T", &
1593 default_l_val=.false., lone_keyword_l_val=.true.)
1597 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_GAPW_COMPOSITE_DIRECT_AO", &
1598 description=
"Use direct full-ORB rho and tau collocation for the native-grid "// &
1599 "GAPW composite diagnostic. This is the variational all-electron "// &
1600 "counterpart of the reconstructed smooth plus hard-minus-soft fields and "// &
1601 "provides a reference for their common-grid adjoint.", &
1602 usage=
"NATIVE_GRID_GAPW_COMPOSITE_DIRECT_AO T", &
1603 default_l_val=.false., lone_keyword_l_val=.true.)
1607 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_REFERENCE", &
1608 description=
"Replace the native smooth plus separate GAPW one-center SKALA "// &
1609 "terms by one atom-centered evaluation of smooth plus hard-minus-soft "// &
1610 "primitive fields before nonlinear feature construction. The smooth PW "// &
1611 "and one-center VXC adjoints are returned consistently. MPI ranks assemble "// &
1612 "the atom rows collectively; one communicator root evaluates the model and "// &
1613 "broadcasts the energy and feature adjoints.", &
1614 usage=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_REFERENCE T", &
1615 default_l_val=.false., lone_keyword_l_val=.true.)
1619 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_DIAGNOSTIC", &
1620 description=
"Evaluate an energy-only GAPW diagnostic on the combined "// &
1621 "smooth plus one-center hard-minus-soft density before nonlinear SKALA "// &
1622 "feature construction. The smooth native-grid density is interpolated to "// &
1623 "the atom-centered GAPW quadrature and all atomic grids are evaluated in "// &
1624 "one model call. This single-rank diagnostic does not replace the active "// &
1625 "XC energy or potential.", &
1626 usage=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_DIAGNOSTIC T", &
1627 default_l_val=.false., lone_keyword_l_val=.true.)
1632 name=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_COMPONENTS", &
1633 description=
"Select which one-center hard-minus-soft fields enter the "// &
1634 "atom-composite SKALA diagnostic. FULL combines rho, gradient, and tau; "// &
1635 "RHO_GRAD and TAU isolate the corresponding reconstruction; SMOOTH "// &
1636 "uses only interpolated smooth fields.", &
1637 usage=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_COMPONENTS FULL", &
1638 enum_c_vals=
s2a(
"FULL",
"RHO_GRAD",
"TAU",
"SMOOTH"), &
1639 enum_i_vals=[1, 2, 3, 4], &
1640 enum_desc=
s2a(
"Combine rho, gradient, and tau corrections", &
1641 "Combine only rho and gradient corrections", &
1642 "Combine only the tau correction", &
1643 "Use only interpolated smooth fields"), &
1649 name=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_FD_STEP", &
1650 description=
"Central finite-difference step used by the atom-composite "// &
1651 "feature-VXC diagnostic.", &
1652 usage=
"NATIVE_GRID_GAPW_ATOM_COMPOSITE_FD_STEP 3.0E-3", &
1653 default_r_val=3.0e-3_dp)
1657 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_ATOM_CHUNKS", &
1658 description=
"Split the experimental CP2K-native SKALA GPW TorchScript "// &
1659 "evaluation into contiguous atom blocks. MPI runs evaluate one atom block per "// &
1660 "rank, while single-rank runs can still use atom subchunks to reduce peak CUDA "// &
1661 "memory. Dynamic feature rows and VXC gradients are routed between their "// &
1662 "local grid and atom-block owner ranks. This is enabled by default; set it to "// &
1663 "false to retain the replicated global feature block. ATOM_COMPOSITE also "// &
1664 "subchunks energy, VXC, force, and stress evaluations along independent atomic "// &
1665 "blocks; COMMON_GRID analytical force and stress runs retain the full "// &
1666 "differentiable tensor graph.", &
1667 usage=
"NATIVE_GRID_ATOM_CHUNKS T", &
1668 default_l_val=.true., lone_keyword_l_val=.true.)
1672 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_ATOM_CHUNK_ROUTING", &
1673 description=
"Compatibility alias for the routed experimental CP2K-native "// &
1674 "SKALA GPW atom chunks. This implies NATIVE_GRID_ATOM_CHUNKS.", &
1675 usage=
"NATIVE_GRID_ATOM_CHUNK_ROUTING T", &
1676 default_l_val=.false., lone_keyword_l_val=.true.)
1680 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_ATOM_CHUNK_MAX_ROWS", &
1681 description=
"Maximum number of atom-grid rows evaluated by one TorchScript "// &
1682 "call in the experimental CP2K-native SKALA GPW atom-chunk path. A positive "// &
1683 "value splits each rank-local atom chunk into contiguous atom subchunks "// &
1684 "whose padded Torch row count stays below the limit. Atomic blocks are not "// &
1685 "divided, so one block can exceed the requested limit. Zero disables "// &
1686 "subchunking; -1 selects an automatic padded-row cap.", &
1687 usage=
"NATIVE_GRID_ATOM_CHUNK_MAX_ROWS 250000", &
1692 CALL keyword_create(keyword, __location__, name=
"NATIVE_GRID_DIAGNOSTICS", &
1693 description=
"Print diagnostic integrals of the CP2K-native SKALA GPW feature "// &
1694 "block, including electron count, spin moment, and summed grid weights.", &
1695 usage=
"NATIVE_GRID_DIAGNOSTICS T", &
1696 default_l_val=.false., lone_keyword_l_val=.true.)
1700 CALL keyword_create(keyword, __location__, name=
"MOLECULAR_VIRIAL", &
1701 description=
"Print a molecular XC virial diagnostic computed from GauXC "// &
1702 "nuclear gradients. This is not an analytical periodic stress tensor.", &
1703 usage=
"MOLECULAR_VIRIAL T", &
1704 default_l_val=.false., lone_keyword_l_val=.true.)
1708 CALL keyword_create(keyword, __location__, name=
"MOLECULAR_VIRIAL_DEBUG", &
1709 description=
"Check the GauXC molecular XC virial diagnostic against a "// &
1710 "finite-difference affine scaling of the molecular coordinates.", &
1711 usage=
"MOLECULAR_VIRIAL_DEBUG T", &
1712 default_l_val=.false., lone_keyword_l_val=.true.)
1716 CALL keyword_create(keyword, __location__, name=
"MOLECULAR_VIRIAL_DEBUG_DX", &
1717 description=
"Dimensionless finite-difference step for MOLECULAR_VIRIAL_DEBUG.", &
1718 usage=
"MOLECULAR_VIRIAL_DEBUG_DX 1.0E-4", &
1719 default_r_val=1.0e-4_dp)
1723 CALL keyword_create(keyword, __location__, name=
"LB_EXECUTION_SPACE", &
1724 description=
"Execution space for load balancer in GauXC", &
1725 usage=
"LB_EXECUTION_SPACE host", &
1726 enum_c_vals=
s2a(
"HOST",
"DEVICE"), &
1727 enum_i_vals=[1, 2], &
1728 enum_desc=
s2a(
"Run on host (default)", &
1734 CALL keyword_create(keyword, __location__, name=
"INT_EXECUTION_SPACE", &
1735 description=
"Execution space for integrator in GauXC", &
1736 usage=
"INT_EXECUTION_SPACE host", &
1737 enum_c_vals=
s2a(
"HOST",
"DEVICE"), &
1738 enum_i_vals=[1, 2], &
1739 enum_desc=
s2a(
"Run on host (default)", &
1746 description=
"Local work driver kernel used by the GauXC integrator. "// &
1747 "AUTO uses SCHEME1-CUTLASS for device SKALA when GauXC provides it "// &
1748 "and otherwise uses GauXC's default for the selected execution space. "// &
1749 "DEFAULT always uses GauXC's default. "// &
1750 "Device builds with CUTLASS support can use SCHEME1-CUTLASS to run "// &
1751 "the grouped local potential update through CUTLASS.", &
1752 usage=
"LWD_KERNEL AUTO", &
1753 default_c_val=
"AUTO")
1757 CALL keyword_create(keyword, __location__, name=
"SKALA_RUNTIME", &
1758 description=
"MPI communicator policy for GauXC Skala. AUTO uses "// &
1759 "the force-evaluation communicator for closed-shell calculations and a "// &
1760 "rank-local replicated runtime for open-shell calculations. MPI forces the "// &
1761 "force-evaluation communicator. SELF forces the previous replicated mode.", &
1762 usage=
"SKALA_RUNTIME AUTO", &
1763 enum_c_vals=
s2a(
"AUTO",
"MPI",
"SELF"), &
1764 enum_i_vals=[1, 2, 3], &
1765 enum_desc=
s2a(
"Closed-shell MPI, open-shell replicated (default)", &
1766 "Use the force-evaluation MPI communicator", &
1767 "Use rank-local replicated GauXC runtimes"), &
1772 CALL keyword_create(keyword, __location__, name=
"MODEL_GRADIENT_RUNTIME", &
1773 description=
"MPI communicator policy for GauXC Skala nuclear gradients. "// &
1774 "AUTO uses distributed analytical gradients when the GauXC PR #222 fix is "// &
1775 "verified and energy/VXC uses MPI; otherwise it retains rank-local gradients. "// &
1776 "MPI requires verified support and an MPI energy/VXC runtime. SELF forces "// &
1777 "rank-local gradients. AUTO never overrides SKALA_RUNTIME's open-shell safeguard.", &
1778 usage=
"MODEL_GRADIENT_RUNTIME AUTO", &
1779 enum_c_vals=
s2a(
"AUTO",
"MPI",
"SELF"), &
1780 enum_i_vals=[1, 2, 3], &
1781 enum_desc=
s2a(
"Use verified MPI gradients or safe replicated fallback (default)", &
1782 "Use the force-evaluation MPI communicator when supported", &
1783 "Use rank-local replicated gradient runtimes"), &
1788 CALL keyword_create(keyword, __location__, name=
"FORCE_NUMERICAL_GRADIENT", &
1789 description=
"Force central finite differences for the GauXC molecular XC "// &
1790 "nuclear gradient, using a displacement of 1.0E-4 bohr at fixed AO density. "// &
1791 "Diagnostic option; costs six XC energy evaluations per atom. Does not "// &
1792 "affect NATIVE_GRID or the CP2K one-center contribution.", &
1793 usage=
"FORCE_NUMERICAL_GRADIENT T", &
1794 default_l_val=.false., lone_keyword_l_val=.true.)
1799 description=
"Optional path to an existing directory for GauXC HDF5 debug output. "// &
1800 "If set, molecule and basis set data are written as separate HDF5 files.", &
1801 usage=
"OUTPUT_PATH /path/to/output", &
1806 END SUBROUTINE create_gauxc_section
1816 INTEGER :: default_libxc_backend
1820 cpassert(.NOT.
ASSOCIATED(section))
1822 description=
"Parameters needed for the calculation of the eXchange and Correlation potential", &
1823 n_keywords=6, n_subsections=2, repeats=.false.)
1825 NULLIFY (subsection, keyword)
1827 CALL keyword_create(keyword, __location__, name=
"density_cutoff", &
1828 description=
"The cutoff on the density used by the xc calculation", &
1829 usage=
"density_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1833 CALL keyword_create(keyword, __location__, name=
"gradient_cutoff", &
1834 description=
"The cutoff on the gradient of the density used by the "// &
1836 usage=
"gradient_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1840 CALL keyword_create(keyword, __location__, name=
"DENSITY_SMOOTH_CUTOFF_RANGE", &
1841 description=
"Parameter for the smoothing procedure in xc calculation", &
1842 usage=
"DENSITY_SMOOTH_CUTOFF_RANGE {real}", default_r_val=0.0_dp)
1847 description=
"The cutoff on tau used by the xc calculation", &
1848 usage=
"tau_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1854#if defined(__OFFLOAD) && !defined(__NO_OFFLOAD_LIBXC)
1859 CALL keyword_create(keyword, __location__, name=
"LIBXC_GPU_BACKEND", &
1860 description=
"Runtime device/host backend selection for LibXC. "// &
1861 "DEVICE selects the GPU backend (the default on GPU "// &
1862 "builds), HOST the CPU backend. DEVICE is an error "// &
1863 "(abort) when no usable GPU is found at runtime; HOST "// &
1865 usage=
"LIBXC_GPU_BACKEND HOST", &
1866 default_i_val=default_libxc_backend, &
1868 enum_c_vals=
s2a(
"DEVICE",
"HOST"), &
1869 enum_desc=
s2a(
"LibXC GPU backend",
"LibXC CPU backend"))
1874 description=
"The xc parameters used when calculating the xc on the grid", &
1875 n_keywords=6, n_subsections=0, repeats=.false.)
1876 CALL keyword_create(keyword, __location__, name=
"xc_smooth_rho", &
1877 description=
"The density smoothing used for the xc calculation", &
1879 enum_c_vals=
s2a(
"NONE",
"NN50",
"NN10",
"SPLINE2",
"NN6",
"SPLINE3",
"NN4"), &
1887 description=
"The method used to compute the derivatives", &
1888 usage=
"xc_deriv NN10_SMOOTH", default_i_val=
xc_deriv_pw, &
1889 enum_c_vals=
s2a(
"PW",
"SPLINE3",
"SPLINE2",
"NN50_SMOOTH",
"NN10_SMOOTH", &
1890 "SPLINE2_SMOOTH",
"NN6_SMOOTH",
"SPLINE3_SMOOTH",
"NN4_SMOOTH",
"COLLOCATE"), &
1898 CALL keyword_create(keyword, __location__, name=
"use_finer_grid", &
1899 description=
"Uses a finer grid only to calculate the xc", &
1900 usage=
"use_finer_grid", default_l_val=.false., &
1901 lone_keyword_l_val=.true.)
1905 CALL keyword_create(keyword, __location__, name=
"fine_grid_factor", &
1906 description=
"Factor by which the XC grid cutoff is increased when USE_FINER_GRID is active. "// &
1907 "This setting has no effect unless USE_FINER_GRID is enabled. The default of 4.0 preserves "// &
1908 "the historical finer XC grid. Smaller factors can reduce the finer-grid cost, but should "// &
1909 "be checked together with the regular MGRID cutoff convergence.", &
1910 usage=
"FINE_GRID_FACTOR 4.0", default_r_val=4.0_dp, &
1911 variants=[
"FINE_XC_FACTOR"])
1915 CALL keyword_create(keyword, __location__, name=
"2ND_DERIV_ANALYTICAL", &
1916 description=
"Use analytical formulas or finite differences for 2nd derivatives of XC", &
1917 usage=
"2ND_DERIV_ANALYTICAL logical", default_l_val=.true., &
1918 lone_keyword_l_val=.true.)
1922 CALL keyword_create(keyword, __location__, name=
"3RD_DERIV_ANALYTICAL", &
1923 description=
"Use analytical formulas or finite differences for 3rd derivatives of XC", &
1924 usage=
"3RD_DERIV_ANALYTICAL logical", default_l_val=.false., &
1925 lone_keyword_l_val=.true.)
1930 description=
"Step size in terms of the first order potential for the numerical "// &
1931 "evaluation of XC derivatives", &
1932 usage=
"STEP_SIZE 1.0E-3", default_r_val=1e-3_dp)
1937 description=
"Number of steps to consider in each direction for the numerical "// &
1938 "evaluation of XC derivatives. Must be a value from 1 to 4 (Default: 3).", &
1939 usage=
"NSTEPS 4", default_i_val=3)
1958 CALL create_adiabatic_section(subsection)
1962 CALL create_xc_potential_section(subsection)
1966 CALL create_xc_kernel_section(subsection)
1970 CALL create_hfx_kernel_section(subsection)
1974 CALL create_vdw_potential_section(subsection)
1978 CALL create_gcp_potential_section(subsection)
1989 SUBROUTINE create_adiabatic_section(section)
1994 cpassert(.NOT.
ASSOCIATED(section))
1995 CALL section_create(section, __location__, name=
"ADIABATIC_RESCALING", &
1996 description=
"Parameters for self interaction corrected hybrid functionals", &
1997 n_keywords=0, n_subsections=0, repeats=.false.)
2000 keyword, __location__, &
2001 name=
"FUNCTIONAL_TYPE", &
2002 description=
"Which Hybrid functional should be used. "// &
2003 "(Has to be consistent with the definitions in XC and HF).", &
2004 usage=
"FUNCTIONAL_TYPE MCY3", &
2005 enum_c_vals=
s2a(
"MCY3"), &
2007 enum_desc=
s2a(
"Use MCY3 hybrid functional"), &
2014 keyword, __location__, &
2016 description=
"The point to be used along the adiabatic curve (0 < λ < 1)", &
2017 usage=
"LAMBDA 0.71", &
2018 default_r_val=0.71_dp)
2024 keyword, __location__, &
2026 description=
"Long-range parameter", &
2027 usage=
"OMEGA 0.2", &
2028 default_r_val=0.2_dp)
2034 keyword, __location__, &
2035 name=
"FUNCTIONAL_MODEL", &
2036 description=
"Which model for the coupling constant integration should be used. ", &
2037 usage=
"FUNCTIONAL_MODEL PADE", &
2038 enum_c_vals=
s2a(
"PADE"), &
2040 enum_desc=
s2a(
"Use pade model: W(lambda)=a+(b*lambda)/(1+c*lambda)"), &
2044 END SUBROUTINE create_adiabatic_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public goedecker1996
integer, save, public chai2008
integer, save, public perdew1996
integer, save, public proynov2007
integer, save, public heyd2004
integer, save, public wellendorff2012
integer, save, public caldeweyher2020
integer, save, public grimme2006
integer, save, public becke1997
integer, save, public perdew2008
integer, save, public vosko1980
integer, save, public beckeroussel1989
integer, save, public perdew1981
integer, save, public tao2003
integer, save, public tran2013
integer, save, public ortiz1994
integer, save, public lee1988
integer, save, public grimme2011
integer, save, public kruse2012
integer, save, public grimme2010
integer, save, public becke1988
integer, save, public zhang1998
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 high_print_level
integer, parameter, public add_last_numeric
Defines the basic variable types.
integer, parameter, public dp
Utilities for string manipulations.
calculates a functional from libxc and its derivatives
subroutine, public libxc_add_sections(section)
...