47 c_pw92,
c_pw92dmc,
c_pw92vmc,
c_pz,
c_pzdmc,
c_pzvmc,
do_vwn3,
do_vwn5,
ke_lc,
ke_llp, &
55#include "./base/base_uses.f90"
60 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
61 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_xc'
78 cpassert(.NOT.
ASSOCIATED(section))
80 description=
"The eXchange-Correlation functional to use. In case of hybrid functionals, all scaling "// &
81 "parameters and potential types have to be specified in the HF section except from a few "// &
82 "predefined combinations (see _SECTION_PARAMETERS_ below). CP2K does NOT set it up "// &
83 "automatically not even for LibXC functionals.", &
84 n_keywords=0, n_subsections=4, repeats=.false., &
89 NULLIFY (subsection, keyword)
91 keyword, __location__, name=
"_SECTION_PARAMETERS_", &
92 description=
"Shortcut for the most common functional combinations. These make use of the implementations provided by "// &
93 "native CP2K (without LibXC). In case of hybrid functionals (B3LYP, PBE0), set the "// &
94 "accuracy-related and system-dependent parameters in the HF section (especially MAX_MEMORY, EPS_SCHWARZ, "// &
95 "CUTOFF_RADIUS, POTENTIAL_TYPE) as these are not set automatically.", &
96 usage=
"&xc_functional BLYP", &
97 enum_c_vals=
s2a(
"B3LYP",
"PBE0",
"BLYP",
"BP",
"PADE",
"LDA",
"PBE", &
98 "TPSS",
"HCTH120",
"OLYP",
"BEEFVDW",
"NO_SHORTCUT",
"NONE"), &
101 enum_desc=
s2a(
"B3LYP", &
102 "PBE0 (see note in section XC/XC_FUNCTIONAL/PBE)", &
103 "BLYP",
"BP",
"PADE",
"Alias for PADE", &
104 "PBE (see note in section XC/XC_FUNCTIONAL/PBE)", &
105 "TPSS (not available with LSD, use LIBXC version instead)",
"HCTH120",
"OLYP", &
106 "BEEFVDW",
"NO_SHORTCUT",
"NONE"), &
113 description=
"Uses the Becke 88 exchange functional", &
114 n_keywords=0, n_subsections=0, repeats=.false., &
116 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
117 description=
"activates the functional", &
118 lone_keyword_l_val=.true., default_l_val=.false.)
122 keyword, __location__, name=
"scale_x", &
123 description=
"scales the exchange part of the functional", &
131 CALL section_create(subsection, __location__, name=
"LYP_ADIABATIC", &
132 description=
"Uses the LYP correlation functional in an adiabatic fashion", &
133 n_keywords=0, n_subsections=0, repeats=.false., &
135 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
136 description=
"activates the functional", &
137 lone_keyword_l_val=.true., default_l_val=.false.)
141 description=
"Defines the parameter of the adiabatic curve.", &
149 CALL section_create(subsection, __location__, name=
"BECKE88_LR_ADIABATIC", &
150 description=
"Uses the Becke 88 longrange exchange functional in an adiabatic fashion", &
151 n_keywords=0, n_subsections=0, repeats=.false., &
153 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
154 description=
"activates the functional", &
155 lone_keyword_l_val=.true., default_l_val=.false.)
159 description=
"scales the exchange part of the functional", &
164 description=
"Potential parameter in erf(omega*r)/r", &
169 description=
"Defines the parameter of the adiabatic curve", &
177 CALL section_create(subsection, __location__, name=
"BECKE88_LR", &
178 description=
"Uses the Becke 88 longrange exchange functional", &
179 n_keywords=0, n_subsections=0, repeats=.false., &
181 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
182 description=
"activates the functional", &
183 lone_keyword_l_val=.true., default_l_val=.false.)
187 description=
"scales the exchange part of the functional", &
192 description=
"Potential parameter in erf(omega*r)/r", &
201 description=
"Uses the LYP functional", &
202 n_keywords=0, n_subsections=0, repeats=.false., &
204 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
205 description=
"activates the functional", &
206 lone_keyword_l_val=.true., default_l_val=.false.)
210 description=
"scales the correlation part of the functional", &
218 description=
"Uses the PADE functional", &
219 n_keywords=0, n_subsections=0, repeats=.false., &
221 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
222 description=
"activates the functional", &
223 lone_keyword_l_val=.true., default_l_val=.false.)
230 description=
"Uses the HCTH class of functionals", &
231 n_keywords=0, n_subsections=0, repeats=.false.)
232 CALL keyword_create(keyword, __location__, name=
"PARAMETER_SET", &
233 description=
"Which version of the parameters should be used", &
234 usage=
"PARAMETER_SET 407", &
235 enum_c_vals=[
"93 ",
"120",
"147",
"407",
"HLE"], &
236 enum_i_vals=[93, 120, 147, 407, 408], &
240 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
241 description=
"activates the functional", &
242 lone_keyword_l_val=.true., default_l_val=.false.)
249 description=
"Uses the OPTX functional", &
250 n_keywords=0, n_subsections=0, repeats=.false.)
251 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
252 description=
"activates the functional", &
253 lone_keyword_l_val=.true., default_l_val=.false.)
257 description=
"scales the exchange part of the functional", &
262 description=
"OPTX a1 coefficient", &
263 default_r_val=1.05151_dp)
267 description=
"OPTX a2 coefficient", &
268 default_r_val=1.43169_dp)
272 description=
"OPTX gamma coefficient", &
273 default_r_val=0.006_dp)
282 description=
"Uses the CS1 functional", &
283 n_keywords=0, n_subsections=0, repeats=.false.)
284 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
285 description=
"activates the functional", &
286 lone_keyword_l_val=.true., default_l_val=.false.)
293 description=
"Uses one of the XGGA functionals (optimized versions of "// &
294 "some of these functionals might be available outside this section).", &
295 n_keywords=1, n_subsections=0, repeats=.false.)
296 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
297 description=
"activates the functional", &
298 lone_keyword_l_val=.true., default_l_val=.false.)
302 description=
"Which one of the XGGA functionals should be used", &
303 usage=
"FUNCTIONAL PW86X", &
320 description=
"Uses one of the KE_GGA functionals (optimized versions of "// &
321 "some of these functionals might be available outside this section). "// &
322 "These functionals are needed for the computation of the kinetic "// &
323 "energy in the Kim-Gordon method.", &
324 n_keywords=1, n_subsections=0, repeats=.false.)
325 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
326 description=
"activates the functional", &
327 lone_keyword_l_val=.true., default_l_val=.false.)
331 description=
"Which one of the KE_GGA functionals should be used", &
332 usage=
"FUNCTIONAL (OL1|OL2|LLP|PW86|PW91|LC|T92|PBE)", &
333 enum_c_vals=[
"OL1 ",
"OL2 ",
"LLP ",
"PW86",
"PW91",
"LC ",
"T92 ",
"PBE "], &
335 enum_desc=
s2a(
"Uses first Ou-Yang and Levy functional, currently not producing correct results", &
336 "Uses second Ou-Yang and Levy functional, currently not producing correct results", &
337 "Uses Lee, Lee, and Parr functional", &
338 "Uses Perdew and Wang's 1986 functional", &
339 "Uses Perdew and Wang's 1991 functional", &
340 "Uses Lembarki and Chermette functional", &
341 "Uses Thakkar functional", &
342 "Uses the 1996 functional of Perdew, Burke and Ernzerhof"), &
350 description=
"Uses the P86C functional", &
351 n_keywords=0, n_subsections=0, repeats=.false.)
352 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
353 description=
"activates the functional", &
354 lone_keyword_l_val=.true., default_l_val=.false.)
358 description=
"scales the correlation part of the functional", &
366 description=
"Uses the PerdewWang correlation functional.", &
367 n_keywords=1, n_subsections=0, repeats=.false.)
368 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
369 description=
"activates the functional", &
370 lone_keyword_l_val=.true., default_l_val=.false.)
374 description=
"Scaling of the energy functional", &
375 default_r_val=1.0_dp)
378 CALL keyword_create(keyword, __location__, name=
"PARAMETRIZATION", &
379 description=
"Which one of parametrizations should be used", &
380 usage=
"PARAMETRIZATION DMC", &
393 description=
"Uses the PZ functional.", &
394 n_keywords=1, n_subsections=0, repeats=.false., &
396 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
397 description=
"activates the functional", &
398 lone_keyword_l_val=.true., default_l_val=.false.)
401 CALL keyword_create(keyword, __location__, name=
"PARAMETRIZATION", &
402 description=
"Which one of parametrizations should be used", &
403 usage=
"PARAMETRIZATION DMC", &
413 description=
"scales the correlation part of the functional", &
421 description=
"Uses the TFW functional", &
422 n_keywords=0, n_subsections=0, repeats=.false.)
423 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
424 description=
"activates the functional", &
425 lone_keyword_l_val=.true., default_l_val=.false.)
432 description=
"Uses the TF functional", &
433 n_keywords=0, n_subsections=0, repeats=.false.)
434 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
435 description=
"activates the functional", &
436 lone_keyword_l_val=.true., default_l_val=.false.)
443 description=
"Uses the VWN functional", &
444 n_keywords=0, n_subsections=0, repeats=.false., &
446 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
447 description=
"activates the functional", &
448 lone_keyword_l_val=.true., default_l_val=.false.)
452 description=
"scales the correlation part of the functional", &
457 CALL keyword_create(keyword, __location__, name=
"FUNCTIONAL_TYPE", &
458 description=
"Which version of the VWN functional should be used", &
459 usage=
"FUNCTIONAL_TYPE VWN5", &
460 enum_c_vals=
s2a(
"VWN5",
"VWN3"), &
462 enum_desc=
s2a(
"This is the recommended (correct) version of the VWN functional", &
463 "This version is the default in Gaussian, but not recommended. "// &
464 "Notice that it is also employed in Gaussian's default version of B3LYP"), &
473 description=
"Uses the XALPHA (SLATER) functional.", &
474 n_keywords=1, n_subsections=0, repeats=.false.)
475 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
476 description=
"activates the functional", &
477 lone_keyword_l_val=.true., default_l_val=.false.)
481 description=
"Value of the xa parameter (this does not change the exponent, "// &
482 "just the mixing)", &
483 usage=
"XA 0.7", default_r_val=2._dp/3._dp)
487 description=
"scales the exchange part of the functional", &
495 description=
"Uses the TPSS functional. Note, that there is no LSD version available. "// &
496 "In such cases, use the LIBXC version instead.", &
497 n_keywords=0, n_subsections=0, repeats=.false., &
499 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
500 description=
"Activates the functional", &
501 lone_keyword_l_val=.true., default_l_val=.false.)
505 description=
"scales the exchange part of the functional", &
510 description=
"scales the correlation part of the functional", &
518 description=
"Uses the PBE functional", &
519 n_keywords=0, n_subsections=0, repeats=.false., &
521 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
522 description=
"activates the functional", &
523 lone_keyword_l_val=.true., default_l_val=.false.)
526 CALL keyword_create(keyword, __location__, name=
"parametrization", &
527 description=
"switches between the different "// &
528 "parametrizations of the functional. "// &
529 "Note: Beta parameters used have only 5 significant digits, "// &
530 "as published. For higher precision and program comparison "// &
531 "use the LIBXC library.", &
533 enum_c_vals=[
"ORIG ",
"revPBE",
"PBEsol"], &
534 enum_desc=[
"original PBE ", &
535 "revised PBE (revPBE) ", &
536 "PBE for solids and surfaces (PBEsol)"], &
541 description=
"scales the exchange part of the functional", &
546 description=
"scales the correlation part of the functional", &
554 description=
"Uses the short range PBE functional", &
555 n_keywords=0, n_subsections=0, repeats=.false., &
557 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
558 description=
"activates the functional", &
559 lone_keyword_l_val=.true., default_l_val=.false.)
563 description=
"scales the exchange part of the functional", &
568 description=
"scales the exchange part of the original hole PBE-functional", &
569 default_r_val=0.0_dp)
573 description=
"screening parameter", &
581 description=
"Uses the Becke 97 exchange correlation functional", &
582 n_keywords=0, n_subsections=0, repeats=.false., &
584 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
585 description=
"activates the functional", &
586 lone_keyword_l_val=.true., default_l_val=.false.)
590 description=
"scales the exchange part of the functional, if -1 the default for the given parametrization is used", &
591 default_r_val=-1._dp)
595 description=
"scales the correlation part of the functional", &
599 CALL keyword_create(keyword, __location__, name=
"parametrization", &
600 description=
"switches between the B97 and Grimme parametrization ", &
602 enum_c_vals=[
"ORIG ",
"B97GRIMME ",
"B97_GRIMME",
"wB97X-V ",
"B97-3c "], &
610 CALL section_create(subsection, __location__, name=
"BECKE_ROUSSEL", &
611 description=
"Becke Roussel exchange hole model. Can be used "// &
612 "as long range correction with a truncated coulomb potential", &
613 n_keywords=0, n_subsections=0, repeats=.false., &
615 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
616 description=
"activates the functional", &
617 lone_keyword_l_val=.true., default_l_val=.false.)
621 description=
"scales the exchange part of the functional", &
625 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
626 description=
"Defines the cutoff radius for the truncation. "// &
627 "If put to zero, the standard full range potential will be used", &
628 usage=
"CUTOFF_RADIUS 2.0", default_r_val=0.0_dp)
632 description=
"Parameter in the exchange hole. "// &
633 "Usually this is put to 1.0 or 0.8", &
634 usage=
"GAMMA 0.8", default_r_val=1.0_dp)
640 CALL section_create(subsection, __location__, name=
"LDA_HOLE_T_C_LR", &
641 description=
"LDA exchange hole model in truncated coulomb potential", &
642 n_keywords=0, n_subsections=0, repeats=.false.)
643 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
644 description=
"activates the functional", &
645 lone_keyword_l_val=.true., default_l_val=.false.)
649 description=
"scales the exchange part of the functional", &
653 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
654 description=
"Defines cutoff for lower integration boundary", &
655 default_r_val=0.0_dp, unit_str=
"angstrom")
661 CALL section_create(subsection, __location__, name=
"PBE_HOLE_T_C_LR", &
662 description=
"PBE exchange hole model in trucanted coulomb potential", &
663 n_keywords=0, n_subsections=0, repeats=.false.)
664 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
665 description=
"activates the functional", &
666 lone_keyword_l_val=.true., default_l_val=.false.)
670 description=
"scales the exchange part of the functional", &
674 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
675 description=
"Defines cutoff for lower integration boundary", &
676 default_r_val=1.0_dp, unit_str=
"angstrom")
683 description=
"Combination of three different exchange hole models", &
684 n_keywords=0, n_subsections=0, repeats=.false.)
685 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
686 description=
"activates the functional", &
687 lone_keyword_l_val=.true., default_l_val=.false.)
691 description=
"scales the exchange part of the functional", &
695 CALL keyword_create(keyword, __location__, name=
"CUTOFF_RADIUS", &
696 description=
"Defines cutoff for lower integration boundary", &
697 default_r_val=0.0_dp, unit_str=
"angstrom")
701 description=
"Parameter for Becke Roussel hole", &
702 default_r_val=1.0_dp)
709 description=
"Uses the BEEFvdW exchange functional", &
710 n_keywords=0, n_subsections=0, repeats=.false., &
712 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
713 description=
"activates the functional", &
714 lone_keyword_l_val=.true., default_l_val=.false.)
718 description=
"scales the exchange part of the functional", &
732 SUBROUTINE create_xc_potential_section(section)
738 cpassert(.NOT.
ASSOCIATED(section))
740 description=
"The xc potential to use (CAREFUL: xc potential here refers "// &
741 "to potentials that are not derived from an xc functional, but rather are "// &
742 "modelled directly. Therefore there is no consistent xc energy available. "// &
743 "To still get an energy expression, see ENERGY below", &
744 n_keywords=1, n_subsections=1, repeats=.false.)
746 NULLIFY (subsection, keyword)
748 description=
"Uses the SAOP potential", &
749 n_keywords=3, n_subsections=0, repeats=.true.)
751 description=
"Value of the alpha parameter (default = 1.19).", &
752 usage=
"ALPHA 1.19", default_r_val=1.19_dp)
756 description=
"Value of the beta parameter (default = 0.01).", &
757 usage=
"BETA 0.01", default_r_val=0.01_dp)
761 description=
"Value of the K_rho parameter (default = 0.42).", &
762 usage=
"K_RHO 0.42", default_r_val=0.42_dp)
769 description=
"How to determine the total energy.", &
770 usage=
"ENERGY [NONE,XC_FUNCTIONAL,SUM_EIGENVALUES", &
771 enum_c_vals=
s2a(
"NONE",
"XC_FUNCTIONAL",
"FUNCTIONAL",
"SUM_EIGENVALUES",
"SOE"), &
781 END SUBROUTINE create_xc_potential_section
788 SUBROUTINE create_xc_kernel_section(section)
793 cpassert(.NOT.
ASSOCIATED(section))
795 description=
"The xc kernel to use (CAREFUL: xc kernel here refers "// &
796 "to kernels that are not derived from an xc functional, but rather are "// &
797 "modelled directly. This kernel will be used in a TDDFPT calculation. "// &
798 "Cannot be combined with XC_FUNCTIONAL or XC_POTENTIAL.", &
799 n_keywords=1, n_subsections=1, repeats=.false.)
803 keyword, __location__, name=
"_SECTION_PARAMETERS_", &
804 description=
"Selection of kernel functionals.", &
805 usage=
"&XC_KERNEL LDAfxc", &
806 enum_c_vals=
s2a(
"PADEfxc",
"LDAfxc",
"GGAfxc",
"NONE"), &
808 enum_desc=
s2a(
"Fxc based on LDA PADE approximation", &
809 "Fxc based on LDA functionals", &
810 "Fxc model from fit to PBE functional", &
818 description=
"List of parameters specific to the kernel function", &
819 usage=
"PARAMETER <REAL> .. <REAL>", &
820 type_of_var=
real_t, n_var=-1)
824 description=
"B97 GAMMA parameters [gx, gab, gaa]", &
825 usage=
"GAMMA <REAL> <REAL> <REAL>", &
826 default_r_vals=[0.004_dp, 0.006_dp, 0.2_dp], &
827 type_of_var=
real_t, n_var=3)
831 description=
"B97 C parameters for exchange", &
832 usage=
"C_XAA <REAL> <REAL> <REAL>", &
833 default_r_vals=[1.0_dp, 0.63_dp, 0.94_dp], &
834 type_of_var=
real_t, n_var=3)
838 description=
"B97 C parameters for same spin correlation.", &
839 usage=
"C_CAB <REAL> <REAL> <REAL>", &
840 default_r_vals=[1.0_dp, 0.75_dp, -4.60_dp], &
841 type_of_var=
real_t, n_var=3)
845 description=
"B97 C parameters for opposite spin correlation.", &
846 usage=
"C_CAA <REAL> <REAL> <REAL>", &
847 default_r_vals=[0.17_dp, 2.35_dp, -2.55_dp], &
848 type_of_var=
real_t, n_var=3)
852 description=
"Scaling parameter for exchange kernel.", &
853 usage=
"SCALE_X 0.2", default_r_val=1.0_dp)
857 description=
"Scaling parameter for correlation kernel.", &
858 usage=
"SCALE_C 0.2", default_r_val=1.0_dp)
862 END SUBROUTINE create_xc_kernel_section
869 SUBROUTINE create_hfx_kernel_section(section)
875 cpassert(.NOT.
ASSOCIATED(section))
877 description=
"The hfx kernel to use. Cannot be combined with HF section.", &
878 n_keywords=1, n_subsections=2, repeats=.false.)
880 NULLIFY (subsection, keyword)
882 description=
"Switch to use the HFXSR (short range) kernel.", &
883 usage=
"DO_HFXSR T/F", default_l_val=.false., &
884 lone_keyword_l_val=.true.)
887 NULLIFY (subsection, keyword)
888 CALL keyword_create(keyword, __location__, name=
"HFXSR_PRIMBAS", &
889 description=
"Default number of primitives in ADMM basis in HFXSR. "// &
890 "0 indicates the use of a contracted minimal basis. ", &
891 usage=
"HFXSR_PRIMBAS 3", default_i_val=0)
900 description=
"Uses the HFXLR (long range) kernel", &
901 n_keywords=2, n_subsections=0, repeats=.false.)
903 description=
"Value of lower range cutoff of interaction [Bohr]", &
904 usage=
"RCUT 5.00", default_r_val=6.00_dp, unit_str=
"bohr")
908 description=
"Scaling parameter for HFX kernel.", &
909 usage=
"SCALE 0.25", default_r_val=1.00_dp)
915 END SUBROUTINE create_hfx_kernel_section
921 SUBROUTINE create_vdw_potential_section(section)
925 TYPE(
section_type),
POINTER :: newsection, print_key, subsection
927 cpassert(.NOT.
ASSOCIATED(section))
928 CALL section_create(section, __location__, name=
"vdw_potential", &
929 description=
"This section combines all possible additional dispersion "// &
930 "corrections to the normal XC functionals. This can be more functionals "// &
931 "or simple empirical pair potentials. ", &
933 n_keywords=1, n_subsections=1, repeats=.false.)
935 NULLIFY (subsection, keyword)
936 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_TYPE", &
937 variants=
s2a(
"DISPERSION_FUNCTIONAL"), &
938 description=
"Type of dispersion/vdW functional or potential to use", &
939 usage=
"POTENTIAL_TYPE (NONE|PAIR_POTENTIAL|NON_LOCAL)", &
940 enum_c_vals=
s2a(
"NONE",
"PAIR_POTENTIAL",
"NON_LOCAL"), &
942 enum_desc=
s2a(
"No dispersion/van der Waals functional", &
943 "Pair potential van der Waals density functional", &
944 "Nonlocal van der Waals density functional"), &
949 CALL section_create(subsection, __location__, name=
"PAIR_POTENTIAL", &
950 description=
"Information on the pair potential to calculate dispersion", &
951 n_keywords=5, n_subsections=0, repeats=.true.)
953 variants=
s2a(
"D3_CUTOFF",
"D4_3B_CUTOFF"), &
954 description=
"Range of potential. The cutoff will be 2 times this value. "// &
955 "In the case of D4 it will be used for the 3-body term", &
956 usage=
"R_CUTOFF 20.0", default_r_val=20.0_dp, &
961 description=
"Range of potential. The cutoff will be 2 times this value. "// &
962 "Only used for the 2-body term of D4", &
963 usage=
"D4_CUTOFF 30.0", default_r_val=20.0_dp, &
968 description=
"Coordination number cutoff for D4", &
969 usage=
"D4_CN_CUTOFF 30.0", default_r_val=-1.0_dp, &
974 description=
"Type of potential", &
976 usage=
"TYPE (DFTD2|DFTD3|DFTD3(BJ)|DFTD4)", &
977 enum_c_vals=
s2a(
"DFTD2",
"DFTD3",
"DFTD3(BJ)",
"DFTD4"), &
980 enum_desc=
s2a(
"Grimme D2 method", &
981 "Grimme D3 method (zero damping)", &
982 "Grimme D3 method (Becke-Johnson damping)", &
983 "Grimme D4 method"), &
987 CALL keyword_create(keyword, __location__, name=
"PARAMETER_FILE_NAME", &
988 description=
"Name of the parameter file, may include a path (not used for D4)", &
989 usage=
"PARAMETER_FILE_NAME <FILENAME>", &
990 default_lc_val=
"dftd3.dat")
993 CALL keyword_create(keyword, __location__, name=
"REFERENCE_FUNCTIONAL", &
994 description=
"Use parameters for this specific density functional. "// &
995 "For available D3 and D3(BJ) parameters see: "// &
996 "<https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3>. "// &
997 "For the defintion of D4 parameters see: "// &
998 "<https://github.com/dftd4/dftd4>.", &
999 usage=
"REFERENCE_FUNCTIONAL <functional>", &
1003 CALL keyword_create(keyword, __location__, name=
"D4_REFERENCE_CODE", &
1004 description=
"Calculate D4 energy using external library.", &
1005 usage=
"D4_REFERENCE_CODE", default_l_val=.true., &
1006 lone_keyword_l_val=.true.)
1010 description=
"Debug output for D4 method using reference code.", &
1011 usage=
"D4_DEBUG", default_l_val=.false., &
1012 lone_keyword_l_val=.true.)
1016 variants=[
"SCALING"], &
1017 description=
"XC Functional dependent scaling parameter. If omitted, CP2K attempts"// &
1018 " to guess the xc functional that is in use and sets the associated scaling parameter.", &
1019 usage=
"SCALING 0.2", default_r_val=0._dp)
1023 variants=[
"EXP_PRE"], &
1024 description=
"Prefactor in exponential damping factor (DFT-D2 potential)", &
1025 usage=
"D2_EXP_PRE 20.", default_r_val=20._dp)
1029 description=
"Cutoff value for coordination number function (DFT-D3 method)", &
1030 usage=
"EPS_CN 1.e-6_dp", default_r_val=1.e-6_dp)
1034 description=
"XC Functional dependent scaling parameters (s6,sr6,s8) for the DFT-D3 method."// &
1035 " If omitted, CP2K attempts"// &
1036 " to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter.", &
1037 usage=
"D3_SCALING 1.0 1.0 1.0", n_var=3, &
1038 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
1041 CALL keyword_create(keyword, __location__, name=
"D3BJ_SCALING", &
1042 description=
"XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D3(BJ) method."// &
1043 " If omitted, CP2K attempts"// &
1044 " to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter.", &
1045 usage=
"D3BJ_SCALING 1.0 1.0 1.0 1.0", n_var=4, &
1046 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1050 description=
"XC Functional dependent scaling parameters (s6,a1,s8,a2) for the DFT-D4 method."// &
1051 " If omitted, CP2K attempts"// &
1052 " to guess the xc functional from REFERENCE_FUNCTIONAL and sets the associated scaling parameter.", &
1053 usage=
"D4_SCALING 1.0 1.0 1.0 1.0", n_var=4, &
1054 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1057 CALL keyword_create(keyword, __location__, name=
"CALCULATE_C9_TERM", &
1058 description=
"Calculate C9 terms in DFT-D3 model", &
1059 usage=
"CALCULATE_C9_TERM", default_l_val=.false., &
1060 lone_keyword_l_val=.true.)
1063 CALL keyword_create(keyword, __location__, name=
"REFERENCE_C9_TERM", &
1064 description=
"Calculate C9 terms in DFT-D3 model using reference coordination numbers", &
1065 usage=
"REFERENCE_C9_TERM", default_l_val=.false., &
1066 lone_keyword_l_val=.true.)
1069 CALL keyword_create(keyword, __location__, name=
"FACTOR_S9_TERM", &
1070 description=
"S9 prefactor of the many-body term in the DFT-D4 method.", &
1071 usage=
"FACTOR_S9_TERM 1.e-0", default_r_val=1.00_dp)
1074 CALL keyword_create(keyword, __location__, name=
"LONG_RANGE_CORRECTION", &
1075 description=
"Calculate a long range correction to the DFT-D3 model."// &
1076 " WARNING: Use with care! Only for isotropic dense systems.", &
1077 usage=
"LONG_RANGE_CORRECTION", default_l_val=.false., &
1078 lone_keyword_l_val=.true.)
1081 CALL keyword_create(keyword, __location__, name=
"SHORT_RANGE_CORRECTION", &
1082 description=
"Calculate a short-range bond correction to the DFT-D3 model", &
1083 usage=
"SHORT_RANGE_CORRECTION", default_l_val=.false., &
1084 lone_keyword_l_val=.true.)
1087 CALL keyword_create(keyword, __location__, name=
"SHORT_RANGE_CORRECTION_PARAMETERS", &
1088 description=
"Parameters for the short-range bond correction to the DFT-D3 model. "// &
1089 "s*(za*zb)^t1*EXP(-g*dr*r0ab^t2), parameters: s, g, t1, t2 "// &
1090 "Defaults: s=0.08, g=10.0, t1=0.5, t2=-1.0 ", &
1091 usage=
"SHORT_RANGE_CORRECTION_PARAMETERS", default_r_vals=[0.08_dp, 10.0_dp, 0.5_dp, -1.0_dp], &
1092 n_var=4, type_of_var=
real_t)
1096 CALL keyword_create(keyword, __location__, name=
"MOLECULE_CORRECTION", &
1097 description=
"Calculate a intermolecular correction to the DFT-D3 model", &
1098 usage=
"MOLECULE_CORRECTION", default_l_val=.false., &
1099 lone_keyword_l_val=.true.)
1102 CALL keyword_create(keyword, __location__, name=
"MOLECULE_CORRECTION_C8", &
1103 description=
"Calculate a intermolecular correction to the C8 term in the DFT-D3 model", &
1104 usage=
"MOLECULE_CORRECTION_C8 1.0 ", default_r_val=0.0_dp)
1107 CALL keyword_create(keyword, __location__, name=
"VERBOSE_OUTPUT", &
1108 description=
"Extensive output for the DFT-D2 and DFT-D3 models."// &
1109 " Needs PRINT_DFTD section to be specified.", &
1110 usage=
"VERBOSE_OUTPUT", default_l_val=.false., &
1111 lone_keyword_l_val=.true.)
1116 CALL keyword_create(keyword, __location__, name=
"D3_EXCLUDE_KIND", &
1117 description=
"Specifies the atomic kinds excluded in the DFT-D3 calculation.", &
1118 usage=
"D3_EXCLUDE_KIND kind1 kind2 ... ", repeats=.false., &
1124 CALL keyword_create(keyword, __location__, name=
"D3_EXCLUDE_KIND_PAIR", &
1125 description=
"Specifies the atomic kinds for interactions excluded from the DFT-D3 calculation.", &
1126 usage=
"D3_EXCLUDE_KIND_PAIR kind1 kind2 ", repeats=.true., &
1132 CALL keyword_create(keyword, __location__, name=
"KIND_COORDINATION_NUMBERS", &
1133 description=
"Specifies the coordination number for a kind for the C9 term in DFT-D3.", &
1134 usage=
"KIND_COORDINATION_NUMBERS CN kind ", repeats=.true., &
1135 n_var=-1, type_of_var=
char_t)
1139 CALL keyword_create(keyword, __location__, name=
"ATOM_COORDINATION_NUMBERS", &
1140 description=
"Specifies the coordination number of a set of atoms for the C9 term in DFT-D3.", &
1141 usage=
"ATOM_COORDINATION_NUMBERS CN atom1 atom2 ... ", repeats=.true., &
1142 n_var=-1, type_of_var=
char_t)
1148 description=
"Specifies parameters for atom types (in atomic units). If "// &
1149 "not provided default parameters are used (DFT-D2).", &
1150 usage=
"ATOMPARM <ELEMENT> <C6_parameter> <vdw_radii>", &
1151 repeats=.true., n_var=-1, type_of_var=
char_t)
1157 description=
"Controls the printing of some info about DFTD contributions", &
1162 NULLIFY (newsection)
1171 NULLIFY (subsection, keyword)
1172 CALL section_create(subsection, __location__, name=
"NON_LOCAL", &
1173 description=
"Information on the non local part of dispersion functionals. "// &
1174 "Correct functionals require a corresponding setting of XC_FUNCTIONAL.", &
1175 n_keywords=0, n_subsections=0, repeats=.true.)
1178 description=
"Type of functional (the corresponding kernel data file should be selected). "// &
1179 "Allows for common forms such as vdW-DF, vdW-DF2, optB88-vdW, rVV10.", &
1180 usage=
"TYPE DRSLL", &
1181 enum_c_vals=
s2a(
"DRSLL",
"LMKLL",
"RVV10"), &
1183 enum_desc=
s2a(
"Dion-Rydberg-Schroeder-Langreth-Lundqvist nonlocal van der Waals density functional", &
1184 "Lee-Murray-Kong-Lundqvist-Langreth nonlocal van der Waals density functional", &
1185 "Revised Vydrov-van Voorhis nonlocal van der Waals density functional"), &
1190 CALL keyword_create(keyword, __location__, name=
"VERBOSE_OUTPUT", &
1191 description=
"Extensive output for non local functionals", &
1192 usage=
"VERBOSE_OUTPUT", default_l_val=.false., &
1193 lone_keyword_l_val=.true.)
1196 CALL keyword_create(keyword, __location__, name=
"KERNEL_FILE_NAME", &
1197 description=
"Name of the kernel data file, may include a path. "// &
1198 "vdW_kernel_table.dat is for DRSLL and LMKLL and "// &
1199 "rVV10_kernel_table.dat is for rVV10.", &
1200 usage=
"KERNEL_FILE_NAME <FILENAME>", &
1201 default_lc_val=
"vdW_kernel_table.dat")
1205 description=
"The cutoff of the FFT grid used in the calculation "// &
1206 "of the nonlocal vdW functional [Ry].", &
1207 usage=
"CUTOFF 300", &
1208 default_r_val=-1._dp, unit_str=
"Ry")
1212 description=
"Parameters b and C of the rVV10 functional", &
1213 usage=
"PARAMETERS 6.3 0.0093", &
1214 type_of_var=
real_t, default_r_vals=[6.3_dp, 0.0093_dp], n_var=2)
1218 description=
"Scales the energy contribution of the rVV10 functional", &
1219 usage=
"SCALE 1.0", &
1220 type_of_var=
real_t, default_r_val=1.0_dp)
1227 END SUBROUTINE create_vdw_potential_section
1234 SUBROUTINE create_gcp_potential_section(section)
1239 cpassert(.NOT.
ASSOCIATED(section))
1240 CALL section_create(section, __location__, name=
"gcp_potential", &
1241 description=
"This section combines geometrical counterpoise potentials."// &
1242 " This is a simple empirical pair potential to correct for BSSE. ", &
1244 n_keywords=1, n_subsections=1, repeats=.false.)
1247 CALL keyword_create(keyword, __location__, name=
"PARAMETER_FILE_NAME", &
1248 description=
"Name of the parameter file, may include a path", &
1249 usage=
"PARAMETER_FILE_NAME <FILENAME>", &
1250 default_lc_val=
"---")
1254 CALL keyword_create(keyword, __location__, name=
"GLOBAL_PARAMETERS", &
1255 description=
"Global parameters of the gCP method."// &
1256 " Parameters are sigma, alpha, beta, eta from the original paper.", &
1257 usage=
"GLOBAL_PARAMETERS 1.0 1.0 1.0 1.0", n_var=4, &
1258 default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1262 CALL keyword_create(keyword, __location__, name=
"DELTA_ENERGY", &
1263 description=
"Specify the delta energy [Hartree] term for an atom kind", &
1264 usage=
"DELTA_ENERGY type value", &
1265 type_of_var=
char_t, repeats=.true., n_var=-1, default_c_vals=[
"XX ",
"0.0"])
1270 description=
"Verbose output for gCP calculation", &
1271 usage=
"VERBOSE logical_value", &
1272 default_l_val=.true., lone_keyword_l_val=.true.)
1276 END SUBROUTINE create_gcp_potential_section
1289 cpassert(.NOT.
ASSOCIATED(section))
1291 description=
"Parameters needed for the calculation of the eXchange and Correlation potential", &
1292 n_keywords=5, n_subsections=2, repeats=.false.)
1294 NULLIFY (subsection, keyword)
1296 CALL keyword_create(keyword, __location__, name=
"density_cutoff", &
1297 description=
"The cutoff on the density used by the xc calculation", &
1298 usage=
"density_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1302 CALL keyword_create(keyword, __location__, name=
"gradient_cutoff", &
1303 description=
"The cutoff on the gradient of the density used by the "// &
1305 usage=
"gradient_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1309 CALL keyword_create(keyword, __location__, name=
"DENSITY_SMOOTH_CUTOFF_RANGE", &
1310 description=
"Parameter for the smoothing procedure in xc calculation", &
1311 usage=
"DENSITY_SMOOTH_CUTOFF_RANGE {real}", default_r_val=0.0_dp)
1316 description=
"The cutoff on tau used by the xc calculation", &
1317 usage=
"tau_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1322 description=
"The xc parameters used when calculating the xc on the grid", &
1323 n_keywords=5, n_subsections=0, repeats=.false.)
1324 CALL keyword_create(keyword, __location__, name=
"xc_smooth_rho", &
1325 description=
"The density smoothing used for the xc calculation", &
1327 enum_c_vals=
s2a(
"NONE",
"NN50",
"NN10",
"SPLINE2",
"NN6",
"SPLINE3",
"NN4"), &
1335 description=
"The method used to compute the derivatives", &
1336 usage=
"xc_deriv NN10_SMOOTH", default_i_val=
xc_deriv_pw, &
1337 enum_c_vals=
s2a(
"PW",
"SPLINE3",
"SPLINE2",
"NN50_SMOOTH",
"NN10_SMOOTH", &
1338 "SPLINE2_SMOOTH",
"NN6_SMOOTH",
"SPLINE3_SMOOTH",
"NN4_SMOOTH",
"COLLOCATE"), &
1346 CALL keyword_create(keyword, __location__, name=
"use_finer_grid", &
1347 description=
"Uses a finer grid only to calculate the xc", &
1348 usage=
"use_finer_grid", default_l_val=.false., &
1349 lone_keyword_l_val=.true.)
1353 CALL keyword_create(keyword, __location__, name=
"2ND_DERIV_ANALYTICAL", &
1354 description=
"Use analytical formulas or finite differences for 2nd derivatives of XC", &
1355 usage=
"2ND_DERIV_ANALYTICAL logical", default_l_val=.true., &
1356 lone_keyword_l_val=.true.)
1360 CALL keyword_create(keyword, __location__, name=
"3RD_DERIV_ANALYTICAL", &
1361 description=
"Use analytical formulas or finite differences for 3rd derivatives of XC", &
1362 usage=
"3RD_DERIV_ANALYTICAL logical", default_l_val=.true., &
1363 lone_keyword_l_val=.true.)
1368 description=
"Step size in terms of the first order potential for the numerical "// &
1369 "evaluation of XC derivatives", &
1370 usage=
"STEP_SIZE 1.0E-3", default_r_val=1e-3_dp)
1375 description=
"Number of steps to consider in each direction for the numerical "// &
1376 "evaluation of XC derivatives. Must be a value from 1 to 4 (Default: 3).", &
1377 usage=
"NSTEPS 4", default_i_val=3)
1396 CALL create_adiabatic_section(subsection)
1400 CALL create_xc_potential_section(subsection)
1404 CALL create_xc_kernel_section(subsection)
1408 CALL create_hfx_kernel_section(subsection)
1412 CALL create_vdw_potential_section(subsection)
1416 CALL create_gcp_potential_section(subsection)
1427 SUBROUTINE create_adiabatic_section(section)
1432 cpassert(.NOT.
ASSOCIATED(section))
1433 CALL section_create(section, __location__, name=
"ADIABATIC_RESCALING", &
1434 description=
"Parameters for self interaction corrected hybrid functionals", &
1435 n_keywords=0, n_subsections=0, repeats=.false.)
1438 keyword, __location__, &
1439 name=
"FUNCTIONAL_TYPE", &
1440 description=
"Which Hybrid functional should be used. "// &
1441 "(Has to be consistent with the definitions in XC and HF).", &
1442 usage=
"FUNCTIONAL_TYPE MCY3", &
1443 enum_c_vals=
s2a(
"MCY3"), &
1445 enum_desc=
s2a(
"Use MCY3 hybrid functional"), &
1452 keyword, __location__, &
1454 description=
"The point to be used along the adiabatic curve (0 < λ < 1)", &
1455 usage=
"LAMBDA 0.71", &
1456 default_r_val=0.71_dp)
1462 keyword, __location__, &
1464 description=
"Long-range parameter", &
1465 usage=
"OMEGA 0.2", &
1466 default_r_val=0.2_dp)
1472 keyword, __location__, &
1473 name=
"FUNCTIONAL_MODEL", &
1474 description=
"Which model for the coupling constant integration should be used. ", &
1475 usage=
"FUNCTIONAL_MODEL PADE", &
1476 enum_c_vals=
s2a(
"PADE"), &
1478 enum_desc=
s2a(
"Use pade model: W(lambda)=a+(b*lambda)/(1+c*lambda)"), &
1482 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 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...
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
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)
...