Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \brief function that build the xc section of the input
10 : !> \par History
11 : !> 10.2009 moved out of input_cp2k_dft [jgh]
12 : !> \author fawzi
13 : ! **************************************************************************************************
14 : MODULE input_cp2k_xc
15 : USE bibliography, ONLY: &
16 : Becke1988, Becke1997, BeckeRoussel1989, Caldeweyher2020, Goedecker1996, Grimme2006, &
17 : Grimme2010, Grimme2011, Heyd2004, Kruse2012, Lee1988, Ortiz1994, Perdew1981, Perdew1996, &
18 : Perdew2008, Proynov2007, Tao2003, Tran2013, Vosko1980, Wellendorff2012, Zhang1998
19 : USE cp_output_handling, ONLY: add_last_numeric,&
20 : cp_print_key_section_create,&
21 : high_print_level
22 : USE eeq_input, ONLY: create_eeq_control_section
23 : USE input_constants, ONLY: &
24 : do_adiabatic_hybrid_mcy3, do_adiabatic_model_pade, fxc_funct_gga, fxc_funct_lda, &
25 : fxc_funct_pade, fxc_none, gaussian, slater, vdw_nl_drsll, vdw_nl_lmkll, vdw_nl_rvv10, &
26 : vdw_pairpot_dftd2, vdw_pairpot_dftd3, vdw_pairpot_dftd3bj, vdw_pairpot_dftd4, &
27 : xc_funct_b3lyp, xc_funct_beefvdw, xc_funct_blyp, xc_funct_bp, xc_funct_hcth120, &
28 : xc_funct_no_shortcut, xc_funct_olyp, xc_funct_pade, xc_funct_pbe, xc_funct_pbe0, &
29 : xc_funct_tpss, xc_none, xc_pot_energy_none, xc_pot_energy_sum_eigenvalues, &
30 : xc_pot_energy_xc_functional, xc_vdw_fun_none, xc_vdw_fun_nonloc, xc_vdw_fun_pairpot
31 : USE input_cp2k_hfx, ONLY: create_hfx_section
32 : USE input_cp2k_mp2, ONLY: create_mp2_section
33 : USE input_keyword_types, ONLY: keyword_create,&
34 : keyword_release,&
35 : keyword_type
36 : USE input_section_types, ONLY: section_add_keyword,&
37 : section_add_subsection,&
38 : section_create,&
39 : section_release,&
40 : section_type
41 : USE input_val_types, ONLY: char_t,&
42 : integer_t,&
43 : real_t
44 : USE kinds, ONLY: dp
45 : USE string_utilities, ONLY: s2a
46 : USE xc_input_constants, ONLY: &
47 : c_pw92, c_pw92dmc, c_pw92vmc, c_pz, c_pzdmc, c_pzvmc, do_vwn3, do_vwn5, ke_lc, ke_llp, &
48 : ke_ol1, ke_ol2, ke_pbe, ke_pw86, ke_pw91, ke_t92, pz_orig, xalpha, xc_b97_3c, &
49 : xc_b97_grimme, xc_b97_mardirossian, xc_b97_orig, xc_deriv_collocate, xc_deriv_nn10_smooth, &
50 : xc_deriv_nn50_smooth, xc_deriv_pw, xc_deriv_spline2, xc_deriv_spline2_smooth, &
51 : xc_deriv_spline3, xc_deriv_spline3_smooth, xc_pbe_orig, xc_pbe_rev, xc_pbe_sol, &
52 : xc_rho_nn10, xc_rho_nn50, xc_rho_no_smooth, xc_rho_spline2_smooth, xc_rho_spline3_smooth, &
53 : xgga_b88x, xgga_ev93, xgga_opt, xgga_pbex, xgga_pw86, xgga_pw91, xgga_revpbe
54 : USE xc_libxc, ONLY: libxc_add_sections
55 : #include "./base/base_uses.f90"
56 :
57 : IMPLICIT NONE
58 : PRIVATE
59 :
60 : LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .TRUE.
61 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_xc'
62 :
63 : PUBLIC :: create_xc_section, create_xc_fun_section
64 :
65 : CONTAINS
66 :
67 : ! **************************************************************************************************
68 : !> \brief creates the structure of the section needed to select the xc functional
69 : !> \param section the section that will be created
70 : !> \author fawzi
71 : ! **************************************************************************************************
72 95220 : SUBROUTINE create_xc_fun_section(section)
73 : TYPE(section_type), POINTER :: section
74 :
75 : TYPE(keyword_type), POINTER :: keyword
76 : TYPE(section_type), POINTER :: subsection
77 :
78 95220 : CPASSERT(.NOT. ASSOCIATED(section))
79 : CALL section_create(section, __LOCATION__, name="xc_functional", &
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., &
85 : citations=[Ortiz1994, Becke1988, Perdew1996, Zhang1998, Lee1988, &
86 : Heyd2004, Vosko1980, Goedecker1996, Perdew1981, &
87 1142640 : Tao2003, Wellendorff2012])
88 :
89 95220 : NULLIFY (subsection, keyword)
90 : CALL keyword_create( &
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"), &
99 : enum_i_vals=[xc_funct_b3lyp, xc_funct_pbe0, xc_funct_blyp, xc_funct_bp, xc_funct_pade, xc_funct_pade, xc_funct_pbe, &
100 : xc_funct_tpss, xc_funct_hcth120, xc_funct_olyp, xc_funct_beefvdw, xc_funct_no_shortcut, xc_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"), &
107 : default_i_val=xc_funct_no_shortcut, &
108 95220 : lone_keyword_i_val=xc_funct_no_shortcut)
109 95220 : CALL section_add_keyword(section, keyword)
110 95220 : CALL keyword_release(keyword)
111 :
112 : CALL section_create(subsection, __LOCATION__, name="BECKE88", &
113 : description="Uses the Becke 88 exchange functional", &
114 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
115 190440 : citations=[Becke1988])
116 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
117 : description="activates the functional", &
118 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
119 95220 : CALL section_add_keyword(subsection, keyword)
120 95220 : CALL keyword_release(keyword)
121 : CALL keyword_create( &
122 : keyword, __LOCATION__, name="scale_x", &
123 : description="scales the exchange part of the functional", &
124 95220 : default_r_val=1._dp)
125 95220 : CALL section_add_keyword(subsection, keyword)
126 95220 : CALL keyword_release(keyword)
127 :
128 95220 : CALL section_add_subsection(section, subsection)
129 95220 : CALL section_release(subsection)
130 :
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., &
134 190440 : citations=[Lee1988])
135 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
136 : description="activates the functional", &
137 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
138 95220 : CALL section_add_keyword(subsection, keyword)
139 95220 : CALL keyword_release(keyword)
140 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
141 : description="Defines the parameter of the adiabatic curve.", &
142 95220 : default_r_val=1._dp)
143 95220 : CALL section_add_keyword(subsection, keyword)
144 95220 : CALL keyword_release(keyword)
145 :
146 95220 : CALL section_add_subsection(section, subsection)
147 95220 : CALL section_release(subsection)
148 :
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., &
152 190440 : citations=[Becke1988])
153 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
154 : description="activates the functional", &
155 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
156 95220 : CALL section_add_keyword(subsection, keyword)
157 95220 : CALL keyword_release(keyword)
158 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
159 : description="scales the exchange part of the functional", &
160 95220 : default_r_val=1._dp)
161 95220 : CALL section_add_keyword(subsection, keyword)
162 95220 : CALL keyword_release(keyword)
163 : CALL keyword_create(keyword, __LOCATION__, name="OMEGA", &
164 : description="Potential parameter in erf(omega*r)/r", &
165 95220 : default_r_val=1._dp)
166 95220 : CALL section_add_keyword(subsection, keyword)
167 95220 : CALL keyword_release(keyword)
168 : CALL keyword_create(keyword, __LOCATION__, name="LAMBDA", &
169 : description="Defines the parameter of the adiabatic curve", &
170 95220 : default_r_val=1._dp)
171 95220 : CALL section_add_keyword(subsection, keyword)
172 95220 : CALL keyword_release(keyword)
173 :
174 95220 : CALL section_add_subsection(section, subsection)
175 95220 : CALL section_release(subsection)
176 :
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., &
180 190440 : citations=[Becke1988])
181 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
182 : description="activates the functional", &
183 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
184 95220 : CALL section_add_keyword(subsection, keyword)
185 95220 : CALL keyword_release(keyword)
186 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
187 : description="scales the exchange part of the functional", &
188 95220 : default_r_val=1._dp)
189 95220 : CALL section_add_keyword(subsection, keyword)
190 95220 : CALL keyword_release(keyword)
191 : CALL keyword_create(keyword, __LOCATION__, name="OMEGA", &
192 : description="Potential parameter in erf(omega*r)/r", &
193 95220 : default_r_val=1._dp)
194 95220 : CALL section_add_keyword(subsection, keyword)
195 95220 : CALL keyword_release(keyword)
196 :
197 95220 : CALL section_add_subsection(section, subsection)
198 95220 : CALL section_release(subsection)
199 :
200 : CALL section_create(subsection, __LOCATION__, name="LYP", &
201 : description="Uses the LYP functional", &
202 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
203 190440 : citations=[Lee1988])
204 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
205 : description="activates the functional", &
206 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
207 95220 : CALL section_add_keyword(subsection, keyword)
208 95220 : CALL keyword_release(keyword)
209 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
210 : description="scales the correlation part of the functional", &
211 95220 : default_r_val=1._dp)
212 95220 : CALL section_add_keyword(subsection, keyword)
213 95220 : CALL keyword_release(keyword)
214 95220 : CALL section_add_subsection(section, subsection)
215 95220 : CALL section_release(subsection)
216 :
217 : CALL section_create(subsection, __LOCATION__, name="PADE", &
218 : description="Uses the PADE functional", &
219 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
220 190440 : citations=[Goedecker1996])
221 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
222 : description="activates the functional", &
223 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
224 95220 : CALL section_add_keyword(subsection, keyword)
225 95220 : CALL keyword_release(keyword)
226 95220 : CALL section_add_subsection(section, subsection)
227 95220 : CALL section_release(subsection)
228 :
229 : CALL section_create(subsection, __LOCATION__, name="HCTH", &
230 : description="Uses the HCTH class of functionals", &
231 95220 : 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], &
237 571320 : default_i_val=120)
238 95220 : CALL section_add_keyword(subsection, keyword)
239 95220 : CALL keyword_release(keyword)
240 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
241 : description="activates the functional", &
242 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
243 95220 : CALL section_add_keyword(subsection, keyword)
244 95220 : CALL keyword_release(keyword)
245 95220 : CALL section_add_subsection(section, subsection)
246 95220 : CALL section_release(subsection)
247 :
248 : CALL section_create(subsection, __LOCATION__, name="OPTX", &
249 : description="Uses the OPTX functional", &
250 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
251 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
252 : description="activates the functional", &
253 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
254 95220 : CALL section_add_keyword(subsection, keyword)
255 95220 : CALL keyword_release(keyword)
256 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
257 : description="scales the exchange part of the functional", &
258 95220 : default_r_val=1._dp)
259 95220 : CALL section_add_keyword(subsection, keyword)
260 95220 : CALL keyword_release(keyword)
261 : CALL keyword_create(keyword, __LOCATION__, name="a1", &
262 : description="OPTX a1 coefficient", &
263 95220 : default_r_val=1.05151_dp)
264 95220 : CALL section_add_keyword(subsection, keyword)
265 95220 : CALL keyword_release(keyword)
266 : CALL keyword_create(keyword, __LOCATION__, name="a2", &
267 : description="OPTX a2 coefficient", &
268 95220 : default_r_val=1.43169_dp)
269 95220 : CALL section_add_keyword(subsection, keyword)
270 95220 : CALL keyword_release(keyword)
271 : CALL keyword_create(keyword, __LOCATION__, name="gamma", &
272 : description="OPTX gamma coefficient", &
273 95220 : default_r_val=0.006_dp)
274 95220 : CALL section_add_keyword(subsection, keyword)
275 95220 : CALL keyword_release(keyword)
276 95220 : CALL section_add_subsection(section, subsection)
277 95220 : CALL section_release(subsection)
278 :
279 95220 : CALL libxc_add_sections(section)
280 :
281 : CALL section_create(subsection, __LOCATION__, name="CS1", &
282 : description="Uses the CS1 functional", &
283 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
284 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
285 : description="activates the functional", &
286 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
287 95220 : CALL section_add_keyword(subsection, keyword)
288 95220 : CALL keyword_release(keyword)
289 95220 : CALL section_add_subsection(section, subsection)
290 95220 : CALL section_release(subsection)
291 :
292 : CALL section_create(subsection, __LOCATION__, name="XGGA", &
293 : description="Uses one of the XGGA functionals (optimized versions of "// &
294 : "some of these functionals might be available outside this section).", &
295 95220 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
296 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
297 : description="activates the functional", &
298 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
299 95220 : CALL section_add_keyword(subsection, keyword)
300 95220 : CALL keyword_release(keyword)
301 : CALL keyword_create(keyword, __LOCATION__, name="FUNCTIONAL", &
302 : description="Which one of the XGGA functionals should be used", &
303 : usage="FUNCTIONAL PW86X", &
304 : enum_c_vals=[ &
305 : "BECKE88X", &
306 : "PW86X ", &
307 : "PW91X ", &
308 : "PBEX ", &
309 : "REV_PBEX", &
310 : "OPTX ", &
311 : "EV93 "], &
312 : enum_i_vals=[xgga_b88x, xgga_pw86, xgga_pw91, xgga_pbex, xgga_revpbe, xgga_opt, xgga_ev93], &
313 761760 : default_i_val=xgga_b88x)
314 95220 : CALL section_add_keyword(subsection, keyword)
315 95220 : CALL keyword_release(keyword)
316 95220 : CALL section_add_subsection(section, subsection)
317 95220 : CALL section_release(subsection)
318 :
319 : CALL section_create(subsection, __LOCATION__, name="KE_GGA", &
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 95220 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
325 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
326 : description="activates the functional", &
327 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
328 95220 : CALL section_add_keyword(subsection, keyword)
329 95220 : CALL keyword_release(keyword)
330 : CALL keyword_create(keyword, __LOCATION__, name="FUNCTIONAL", &
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 "], &
334 : enum_i_vals=[ke_ol1, ke_ol2, ke_llp, ke_pw86, ke_pw91, ke_lc, ke_t92, ke_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"), &
343 856980 : default_i_val=ke_llp)
344 95220 : CALL section_add_keyword(subsection, keyword)
345 95220 : CALL keyword_release(keyword)
346 95220 : CALL section_add_subsection(section, subsection)
347 95220 : CALL section_release(subsection)
348 :
349 : CALL section_create(subsection, __LOCATION__, name="P86C", &
350 : description="Uses the P86C functional", &
351 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
352 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
353 : description="activates the functional", &
354 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
355 95220 : CALL section_add_keyword(subsection, keyword)
356 95220 : CALL keyword_release(keyword)
357 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
358 : description="scales the correlation part of the functional", &
359 95220 : default_r_val=1._dp)
360 95220 : CALL section_add_keyword(subsection, keyword)
361 95220 : CALL keyword_release(keyword)
362 95220 : CALL section_add_subsection(section, subsection)
363 95220 : CALL section_release(subsection)
364 :
365 : CALL section_create(subsection, __LOCATION__, name="PW92", &
366 : description="Uses the PerdewWang correlation functional.", &
367 95220 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
368 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
369 : description="activates the functional", &
370 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
371 95220 : CALL section_add_keyword(subsection, keyword)
372 95220 : CALL keyword_release(keyword)
373 : CALL keyword_create(keyword, __LOCATION__, name="SCALE", &
374 : description="Scaling of the energy functional", &
375 95220 : default_r_val=1.0_dp)
376 95220 : CALL section_add_keyword(subsection, keyword)
377 95220 : CALL keyword_release(keyword)
378 : CALL keyword_create(keyword, __LOCATION__, name="PARAMETRIZATION", &
379 : description="Which one of parametrizations should be used", &
380 : usage="PARAMETRIZATION DMC", &
381 : enum_c_vals=[ &
382 : "ORIGINAL", &
383 : "DMC ", &
384 : "VMC "], &
385 : enum_i_vals=[c_pw92, c_pw92dmc, c_pw92vmc], &
386 380880 : default_i_val=c_pw92)
387 95220 : CALL section_add_keyword(subsection, keyword)
388 95220 : CALL keyword_release(keyword)
389 95220 : CALL section_add_subsection(section, subsection)
390 95220 : CALL section_release(subsection)
391 :
392 : CALL section_create(subsection, __LOCATION__, name="PZ81", &
393 : description="Uses the PZ functional.", &
394 : n_keywords=1, n_subsections=0, repeats=.FALSE., &
395 285660 : citations=[Perdew1981, Ortiz1994])
396 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
397 : description="activates the functional", &
398 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
399 95220 : CALL section_add_keyword(subsection, keyword)
400 95220 : CALL keyword_release(keyword)
401 : CALL keyword_create(keyword, __LOCATION__, name="PARAMETRIZATION", &
402 : description="Which one of parametrizations should be used", &
403 : usage="PARAMETRIZATION DMC", &
404 : enum_c_vals=[ &
405 : "ORIGINAL", &
406 : "DMC ", &
407 : "VMC "], &
408 : enum_i_vals=[c_pz, c_pzdmc, c_pzvmc], &
409 380880 : default_i_val=pz_orig)
410 95220 : CALL section_add_keyword(subsection, keyword)
411 95220 : CALL keyword_release(keyword)
412 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
413 : description="scales the correlation part of the functional", &
414 95220 : default_r_val=1._dp)
415 95220 : CALL section_add_keyword(subsection, keyword)
416 95220 : CALL keyword_release(keyword)
417 95220 : CALL section_add_subsection(section, subsection)
418 95220 : CALL section_release(subsection)
419 :
420 : CALL section_create(subsection, __LOCATION__, name="TFW", &
421 : description="Uses the TFW functional", &
422 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
423 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
424 : description="activates the functional", &
425 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
426 95220 : CALL section_add_keyword(subsection, keyword)
427 95220 : CALL keyword_release(keyword)
428 95220 : CALL section_add_subsection(section, subsection)
429 95220 : CALL section_release(subsection)
430 :
431 : CALL section_create(subsection, __LOCATION__, name="TF", &
432 : description="Uses the TF functional", &
433 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
434 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
435 : description="activates the functional", &
436 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
437 95220 : CALL section_add_keyword(subsection, keyword)
438 95220 : CALL keyword_release(keyword)
439 95220 : CALL section_add_subsection(section, subsection)
440 95220 : CALL section_release(subsection)
441 :
442 : CALL section_create(subsection, __LOCATION__, name="VWN", &
443 : description="Uses the VWN functional", &
444 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
445 190440 : citations=[Vosko1980])
446 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
447 : description="activates the functional", &
448 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
449 95220 : CALL section_add_keyword(subsection, keyword)
450 95220 : CALL keyword_release(keyword)
451 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
452 : description="scales the correlation part of the functional", &
453 95220 : default_r_val=1._dp)
454 95220 : CALL section_add_keyword(subsection, keyword)
455 95220 : CALL keyword_release(keyword)
456 :
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"), &
461 : enum_i_vals=[do_vwn5, do_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"), &
465 95220 : default_i_val=do_vwn5)
466 :
467 95220 : CALL section_add_keyword(subsection, keyword)
468 95220 : CALL keyword_release(keyword)
469 95220 : CALL section_add_subsection(section, subsection)
470 95220 : CALL section_release(subsection)
471 :
472 : CALL section_create(subsection, __LOCATION__, name="XALPHA", &
473 : description="Uses the XALPHA (SLATER) functional.", &
474 95220 : n_keywords=1, n_subsections=0, repeats=.FALSE.)
475 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
476 : description="activates the functional", &
477 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
478 95220 : CALL section_add_keyword(subsection, keyword)
479 95220 : CALL keyword_release(keyword)
480 : CALL keyword_create(keyword, __LOCATION__, name="XA", &
481 : description="Value of the xa parameter (this does not change the exponent, "// &
482 : "just the mixing)", &
483 95220 : usage="XA 0.7", default_r_val=2._dp/3._dp)
484 95220 : CALL section_add_keyword(subsection, keyword)
485 95220 : CALL keyword_release(keyword)
486 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
487 : description="scales the exchange part of the functional", &
488 95220 : default_r_val=1._dp)
489 95220 : CALL section_add_keyword(subsection, keyword)
490 95220 : CALL keyword_release(keyword)
491 95220 : CALL section_add_subsection(section, subsection)
492 95220 : CALL section_release(subsection)
493 :
494 : CALL section_create(subsection, __LOCATION__, name="TPSS", &
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., &
498 190440 : citations=[Tao2003])
499 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
500 : description="Activates the functional", &
501 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
502 95220 : CALL section_add_keyword(subsection, keyword)
503 95220 : CALL keyword_release(keyword)
504 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
505 : description="scales the exchange part of the functional", &
506 95220 : default_r_val=1._dp)
507 95220 : CALL section_add_keyword(subsection, keyword)
508 95220 : CALL keyword_release(keyword)
509 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
510 : description="scales the correlation part of the functional", &
511 95220 : default_r_val=1._dp)
512 95220 : CALL section_add_keyword(subsection, keyword)
513 95220 : CALL keyword_release(keyword)
514 95220 : CALL section_add_subsection(section, subsection)
515 95220 : CALL section_release(subsection)
516 :
517 : CALL section_create(subsection, __LOCATION__, name="PBE", &
518 : description="Uses the PBE functional", &
519 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
520 380880 : citations=[Perdew1996, Zhang1998, Perdew2008])
521 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
522 : description="activates the functional", &
523 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
524 95220 : CALL section_add_keyword(subsection, keyword)
525 95220 : CALL keyword_release(keyword)
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.", &
532 : enum_i_vals=[xc_pbe_orig, xc_pbe_rev, xc_pbe_sol], &
533 : enum_c_vals=["ORIG ", "revPBE", "PBEsol"], &
534 : enum_desc=["original PBE ", &
535 : "revised PBE (revPBE) ", &
536 : "PBE for solids and surfaces (PBEsol)"], &
537 666540 : default_i_val=xc_pbe_orig)
538 95220 : CALL section_add_keyword(subsection, keyword)
539 95220 : CALL keyword_release(keyword)
540 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
541 : description="scales the exchange part of the functional", &
542 95220 : default_r_val=1._dp)
543 95220 : CALL section_add_keyword(subsection, keyword)
544 95220 : CALL keyword_release(keyword)
545 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
546 : description="scales the correlation part of the functional", &
547 95220 : default_r_val=1._dp)
548 95220 : CALL section_add_keyword(subsection, keyword)
549 95220 : CALL keyword_release(keyword)
550 95220 : CALL section_add_subsection(section, subsection)
551 95220 : CALL section_release(subsection)
552 :
553 : CALL section_create(subsection, __LOCATION__, name="XWPBE", &
554 : description="Uses the short range PBE functional", &
555 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
556 190440 : citations=[Heyd2004])
557 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
558 : description="activates the functional", &
559 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
560 95220 : CALL section_add_keyword(subsection, keyword)
561 95220 : CALL keyword_release(keyword)
562 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
563 : description="scales the exchange part of the functional", &
564 95220 : default_r_val=1._dp)
565 95220 : CALL section_add_keyword(subsection, keyword)
566 95220 : CALL keyword_release(keyword)
567 : CALL keyword_create(keyword, __LOCATION__, name="scale_x0", &
568 : description="scales the exchange part of the original hole PBE-functional", &
569 95220 : default_r_val=0.0_dp)
570 95220 : CALL section_add_keyword(subsection, keyword)
571 95220 : CALL keyword_release(keyword)
572 : CALL keyword_create(keyword, __LOCATION__, name="omega", &
573 : description="screening parameter", &
574 95220 : default_r_val=1._dp)
575 95220 : CALL section_add_keyword(subsection, keyword)
576 95220 : CALL keyword_release(keyword)
577 95220 : CALL section_add_subsection(section, subsection)
578 95220 : CALL section_release(subsection)
579 :
580 : CALL section_create(subsection, __LOCATION__, name="BECKE97", &
581 : description="Uses the Becke 97 exchange correlation functional", &
582 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
583 285660 : citations=[Becke1997, Grimme2006])
584 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
585 : description="activates the functional", &
586 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
587 95220 : CALL section_add_keyword(subsection, keyword)
588 95220 : CALL keyword_release(keyword)
589 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
590 : description="scales the exchange part of the functional, if -1 the default for the given parametrization is used", &
591 95220 : default_r_val=-1._dp)
592 95220 : CALL section_add_keyword(subsection, keyword)
593 95220 : CALL keyword_release(keyword)
594 : CALL keyword_create(keyword, __LOCATION__, name="scale_c", &
595 : description="scales the correlation part of the functional", &
596 95220 : default_r_val=1._dp)
597 95220 : CALL section_add_keyword(subsection, keyword)
598 95220 : CALL keyword_release(keyword)
599 : CALL keyword_create(keyword, __LOCATION__, name="parametrization", &
600 : description="switches between the B97 and Grimme parametrization ", &
601 : enum_i_vals=[xc_b97_orig, xc_b97_grimme, xc_b97_grimme, xc_b97_mardirossian, xc_b97_3c], &
602 : enum_c_vals=["ORIG ", "B97GRIMME ", "B97_GRIMME", "wB97X-V ", "B97-3c "], &
603 571320 : default_i_val=xc_b97_orig)
604 95220 : CALL section_add_keyword(subsection, keyword)
605 95220 : CALL keyword_release(keyword)
606 :
607 95220 : CALL section_add_subsection(section, subsection)
608 95220 : CALL section_release(subsection)
609 :
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., &
614 285660 : citations=[BeckeRoussel1989, Proynov2007])
615 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
616 : description="activates the functional", &
617 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
618 95220 : CALL section_add_keyword(subsection, keyword)
619 95220 : CALL keyword_release(keyword)
620 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
621 : description="scales the exchange part of the functional", &
622 95220 : default_r_val=1._dp)
623 95220 : CALL section_add_keyword(subsection, keyword)
624 95220 : CALL keyword_release(keyword)
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 95220 : usage="CUTOFF_RADIUS 2.0", default_r_val=0.0_dp)
629 95220 : CALL section_add_keyword(subsection, keyword)
630 95220 : CALL keyword_release(keyword)
631 : CALL keyword_create(keyword, __LOCATION__, name="GAMMA", &
632 : description="Parameter in the exchange hole. "// &
633 : "Usually this is put to 1.0 or 0.8", &
634 95220 : usage="GAMMA 0.8", default_r_val=1.0_dp)
635 95220 : CALL section_add_keyword(subsection, keyword)
636 95220 : CALL keyword_release(keyword)
637 95220 : CALL section_add_subsection(section, subsection)
638 95220 : CALL section_release(subsection)
639 :
640 : CALL section_create(subsection, __LOCATION__, name="LDA_HOLE_T_C_LR", &
641 : description="LDA exchange hole model in truncated coulomb potential", &
642 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
643 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
644 : description="activates the functional", &
645 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
646 95220 : CALL section_add_keyword(subsection, keyword)
647 95220 : CALL keyword_release(keyword)
648 : CALL keyword_create(keyword, __LOCATION__, name="SCALE_X", &
649 : description="scales the exchange part of the functional", &
650 95220 : default_r_val=1._dp)
651 95220 : CALL section_add_keyword(subsection, keyword)
652 95220 : CALL keyword_release(keyword)
653 : CALL keyword_create(keyword, __LOCATION__, name="CUTOFF_RADIUS", &
654 : description="Defines cutoff for lower integration boundary", &
655 95220 : default_r_val=0.0_dp, unit_str="angstrom")
656 95220 : CALL section_add_keyword(subsection, keyword)
657 95220 : CALL keyword_release(keyword)
658 95220 : CALL section_add_subsection(section, subsection)
659 95220 : CALL section_release(subsection)
660 :
661 : CALL section_create(subsection, __LOCATION__, name="PBE_HOLE_T_C_LR", &
662 : description="PBE exchange hole model in trucanted coulomb potential", &
663 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
664 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
665 : description="activates the functional", &
666 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
667 95220 : CALL section_add_keyword(subsection, keyword)
668 95220 : CALL keyword_release(keyword)
669 : CALL keyword_create(keyword, __LOCATION__, name="SCALE_X", &
670 : description="scales the exchange part of the functional", &
671 95220 : default_r_val=1._dp)
672 95220 : CALL section_add_keyword(subsection, keyword)
673 95220 : CALL keyword_release(keyword)
674 : CALL keyword_create(keyword, __LOCATION__, name="CUTOFF_RADIUS", &
675 : description="Defines cutoff for lower integration boundary", &
676 95220 : default_r_val=1.0_dp, unit_str="angstrom")
677 95220 : CALL section_add_keyword(subsection, keyword)
678 95220 : CALL keyword_release(keyword)
679 95220 : CALL section_add_subsection(section, subsection)
680 95220 : CALL section_release(subsection)
681 :
682 : CALL section_create(subsection, __LOCATION__, name="GV09", &
683 : description="Combination of three different exchange hole models", &
684 95220 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
685 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
686 : description="activates the functional", &
687 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
688 95220 : CALL section_add_keyword(subsection, keyword)
689 95220 : CALL keyword_release(keyword)
690 : CALL keyword_create(keyword, __LOCATION__, name="SCALE_X", &
691 : description="scales the exchange part of the functional", &
692 95220 : default_r_val=1._dp)
693 95220 : CALL section_add_keyword(subsection, keyword)
694 95220 : CALL keyword_release(keyword)
695 : CALL keyword_create(keyword, __LOCATION__, name="CUTOFF_RADIUS", &
696 : description="Defines cutoff for lower integration boundary", &
697 95220 : default_r_val=0.0_dp, unit_str="angstrom")
698 95220 : CALL section_add_keyword(subsection, keyword)
699 95220 : CALL keyword_release(keyword)
700 : CALL keyword_create(keyword, __LOCATION__, name="GAMMA", &
701 : description="Parameter for Becke Roussel hole", &
702 95220 : default_r_val=1.0_dp)
703 95220 : CALL section_add_keyword(subsection, keyword)
704 95220 : CALL keyword_release(keyword)
705 95220 : CALL section_add_subsection(section, subsection)
706 95220 : CALL section_release(subsection)
707 :
708 : CALL section_create(subsection, __LOCATION__, name="BEEF", & !rk: BEEF Exchange
709 : description="Uses the BEEFvdW exchange functional", &
710 : n_keywords=0, n_subsections=0, repeats=.FALSE., &
711 190440 : citations=[Wellendorff2012])
712 : CALL keyword_create(keyword, __LOCATION__, name="_SECTION_PARAMETERS_", &
713 : description="activates the functional", &
714 95220 : lone_keyword_l_val=.TRUE., default_l_val=.FALSE.)
715 95220 : CALL section_add_keyword(subsection, keyword)
716 95220 : CALL keyword_release(keyword)
717 : CALL keyword_create(keyword, __LOCATION__, name="scale_x", &
718 : description="scales the exchange part of the functional", &
719 95220 : default_r_val=1._dp)
720 95220 : CALL section_add_keyword(subsection, keyword)
721 95220 : CALL keyword_release(keyword)
722 95220 : CALL section_add_subsection(section, subsection)
723 95220 : CALL section_release(subsection)
724 :
725 95220 : END SUBROUTINE create_xc_fun_section
726 :
727 : ! **************************************************************************************************
728 : !> \brief creates the structure of the section needed to select an xc potential
729 : !> \param section the section that will be created
730 : !> \author thomas chassaing
731 : ! **************************************************************************************************
732 76176 : SUBROUTINE create_xc_potential_section(section)
733 : TYPE(section_type), POINTER :: section
734 :
735 : TYPE(keyword_type), POINTER :: keyword
736 : TYPE(section_type), POINTER :: subsection
737 :
738 76176 : CPASSERT(.NOT. ASSOCIATED(section))
739 : CALL section_create(section, __LOCATION__, name="xc_potential", &
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 76176 : n_keywords=1, n_subsections=1, repeats=.FALSE.)
745 :
746 76176 : NULLIFY (subsection, keyword)
747 : CALL section_create(subsection, __LOCATION__, name="SAOP", &
748 : description="Uses the SAOP potential", &
749 76176 : n_keywords=3, n_subsections=0, repeats=.TRUE.)
750 : CALL keyword_create(keyword, __LOCATION__, name="ALPHA", &
751 : description="Value of the alpha parameter (default = 1.19).", &
752 76176 : usage="ALPHA 1.19", default_r_val=1.19_dp)
753 76176 : CALL section_add_keyword(subsection, keyword)
754 76176 : CALL keyword_release(keyword)
755 : CALL keyword_create(keyword, __LOCATION__, name="BETA", &
756 : description="Value of the beta parameter (default = 0.01).", &
757 76176 : usage="BETA 0.01", default_r_val=0.01_dp)
758 76176 : CALL section_add_keyword(subsection, keyword)
759 76176 : CALL keyword_release(keyword)
760 : CALL keyword_create(keyword, __LOCATION__, name="K_RHO", &
761 : description="Value of the K_rho parameter (default = 0.42).", &
762 76176 : usage="K_RHO 0.42", default_r_val=0.42_dp)
763 76176 : CALL section_add_keyword(subsection, keyword)
764 76176 : CALL keyword_release(keyword)
765 76176 : CALL section_add_subsection(section, subsection)
766 76176 : CALL section_release(subsection)
767 :
768 : CALL keyword_create(keyword, __LOCATION__, name="ENERGY", &
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"), &
772 : enum_i_vals=[xc_pot_energy_none, &
773 : xc_pot_energy_xc_functional, &
774 : xc_pot_energy_xc_functional, &
775 : xc_pot_energy_sum_eigenvalues, &
776 : xc_pot_energy_sum_eigenvalues], &
777 76176 : default_i_val=xc_pot_energy_none)
778 76176 : CALL section_add_keyword(section, keyword)
779 76176 : CALL keyword_release(keyword)
780 :
781 76176 : END SUBROUTINE create_xc_potential_section
782 :
783 : ! **************************************************************************************************
784 : !> \brief creates the structure of the section needed to select an xc kernel
785 : !> \param section the section that will be created
786 : !> \author JGH
787 : ! **************************************************************************************************
788 76176 : SUBROUTINE create_xc_kernel_section(section)
789 : TYPE(section_type), POINTER :: section
790 :
791 : TYPE(keyword_type), POINTER :: keyword
792 :
793 76176 : CPASSERT(.NOT. ASSOCIATED(section))
794 : CALL section_create(section, __LOCATION__, name="XC_KERNEL", &
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 76176 : n_keywords=1, n_subsections=1, repeats=.FALSE.)
800 :
801 76176 : NULLIFY (keyword)
802 : CALL keyword_create( &
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"), &
807 : enum_i_vals=[fxc_funct_pade, fxc_funct_lda, fxc_funct_gga, fxc_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", &
811 : "NONE"), &
812 : default_i_val=fxc_none, &
813 76176 : lone_keyword_i_val=fxc_none)
814 76176 : CALL section_add_keyword(section, keyword)
815 76176 : CALL keyword_release(keyword)
816 :
817 : CALL keyword_create(keyword, __LOCATION__, name="PARAMETER", &
818 : description="List of parameters specific to the kernel function", &
819 : usage="PARAMETER <REAL> .. <REAL>", &
820 76176 : type_of_var=real_t, n_var=-1)
821 76176 : CALL section_add_keyword(section, keyword)
822 76176 : CALL keyword_release(keyword)
823 : CALL keyword_create(keyword, __LOCATION__, name="GAMMA", &
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 76176 : type_of_var=real_t, n_var=3)
828 76176 : CALL section_add_keyword(section, keyword)
829 76176 : CALL keyword_release(keyword)
830 : CALL keyword_create(keyword, __LOCATION__, name="C_XAA", &
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 76176 : type_of_var=real_t, n_var=3)
835 76176 : CALL section_add_keyword(section, keyword)
836 76176 : CALL keyword_release(keyword)
837 : CALL keyword_create(keyword, __LOCATION__, name="C_CAB", &
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 76176 : type_of_var=real_t, n_var=3)
842 76176 : CALL section_add_keyword(section, keyword)
843 76176 : CALL keyword_release(keyword)
844 : CALL keyword_create(keyword, __LOCATION__, name="C_CAA", &
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 76176 : type_of_var=real_t, n_var=3)
849 76176 : CALL section_add_keyword(section, keyword)
850 76176 : CALL keyword_release(keyword)
851 : CALL keyword_create(keyword, __LOCATION__, name="SCALE_X", &
852 : description="Scaling parameter for exchange kernel.", &
853 76176 : usage="SCALE_X 0.2", default_r_val=1.0_dp)
854 76176 : CALL section_add_keyword(section, keyword)
855 76176 : CALL keyword_release(keyword)
856 : CALL keyword_create(keyword, __LOCATION__, name="SCALE_C", &
857 : description="Scaling parameter for correlation kernel.", &
858 76176 : usage="SCALE_C 0.2", default_r_val=1.0_dp)
859 76176 : CALL section_add_keyword(section, keyword)
860 76176 : CALL keyword_release(keyword)
861 :
862 76176 : END SUBROUTINE create_xc_kernel_section
863 :
864 : ! **************************************************************************************************
865 : !> \brief creates the structure of the section needed to select an hfx kernel
866 : !> \param section the section that will be created
867 : !> \author JGH
868 : ! **************************************************************************************************
869 76176 : SUBROUTINE create_hfx_kernel_section(section)
870 : TYPE(section_type), POINTER :: section
871 :
872 : TYPE(keyword_type), POINTER :: keyword
873 : TYPE(section_type), POINTER :: subsection
874 :
875 76176 : CPASSERT(.NOT. ASSOCIATED(section))
876 : CALL section_create(section, __LOCATION__, name="HFX_KERNEL", &
877 : description="The hfx kernel to use. Cannot be combined with HF section.", &
878 76176 : n_keywords=1, n_subsections=2, repeats=.FALSE.)
879 :
880 76176 : NULLIFY (subsection, keyword)
881 : CALL keyword_create(keyword, __LOCATION__, name="DO_HFXSR", &
882 : description="Switch to use the HFXSR (short range) kernel.", &
883 : usage="DO_HFXSR T/F", default_l_val=.FALSE., &
884 76176 : lone_keyword_l_val=.TRUE.)
885 76176 : CALL section_add_keyword(section, keyword)
886 76176 : CALL keyword_release(keyword)
887 76176 : 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 76176 : usage="HFXSR_PRIMBAS 3", default_i_val=0)
892 76176 : CALL section_add_keyword(section, keyword)
893 76176 : CALL keyword_release(keyword)
894 :
895 76176 : CALL create_hfx_section(subsection)
896 76176 : CALL section_add_subsection(section, subsection)
897 76176 : CALL section_release(subsection)
898 :
899 : CALL section_create(subsection, __LOCATION__, name="HFXLR", &
900 : description="Uses the HFXLR (long range) kernel", &
901 76176 : n_keywords=2, n_subsections=0, repeats=.FALSE.)
902 : CALL keyword_create(keyword, __LOCATION__, name="RCUT", &
903 : description="Value of lower range cutoff of interaction [Bohr]", &
904 76176 : usage="RCUT 5.00", default_r_val=6.00_dp, unit_str="bohr")
905 76176 : CALL section_add_keyword(subsection, keyword)
906 76176 : CALL keyword_release(keyword)
907 : CALL keyword_create(keyword, __LOCATION__, name="SCALE", &
908 : description="Scaling parameter for HFX kernel.", &
909 76176 : usage="SCALE 0.25", default_r_val=1.00_dp)
910 76176 : CALL section_add_keyword(subsection, keyword)
911 76176 : CALL keyword_release(keyword)
912 76176 : CALL section_add_subsection(section, subsection)
913 76176 : CALL section_release(subsection)
914 :
915 76176 : END SUBROUTINE create_hfx_kernel_section
916 : ! **************************************************************************************************
917 : !> \brief creates the structure of the section needed for vdW potentials
918 : !> \param section the section that will be created
919 : !> \author jgh
920 : ! **************************************************************************************************
921 76176 : SUBROUTINE create_vdw_potential_section(section)
922 : TYPE(section_type), POINTER :: section
923 :
924 : TYPE(keyword_type), POINTER :: keyword
925 : TYPE(section_type), POINTER :: newsection, print_key, subsection
926 :
927 76176 : 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. ", &
932 : citations=[grimme2006, Tran2013], &
933 228528 : n_keywords=1, n_subsections=1, repeats=.FALSE.)
934 :
935 76176 : 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"), &
941 : enum_i_vals=[xc_vdw_fun_none, xc_vdw_fun_pairpot, xc_vdw_fun_nonloc], &
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"), &
945 76176 : default_i_val=xc_vdw_fun_none)
946 76176 : CALL section_add_keyword(section, keyword)
947 76176 : CALL keyword_release(keyword)
948 :
949 : CALL section_create(subsection, __LOCATION__, name="PAIR_POTENTIAL", &
950 : description="Information on the pair potential to calculate dispersion", &
951 76176 : n_keywords=5, n_subsections=0, repeats=.TRUE.)
952 : CALL keyword_create(keyword, __LOCATION__, name="R_CUTOFF", &
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, &
957 76176 : unit_str="angstrom")
958 76176 : CALL section_add_keyword(subsection, keyword)
959 76176 : CALL keyword_release(keyword)
960 : CALL keyword_create(keyword, __LOCATION__, name="D4_CUTOFF", &
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, &
964 76176 : unit_str="angstrom")
965 76176 : CALL section_add_keyword(subsection, keyword)
966 76176 : CALL keyword_release(keyword)
967 : CALL keyword_create(keyword, __LOCATION__, name="D4_CN_CUTOFF", &
968 : description="Coordination number cutoff for D4", &
969 : usage="D4_CN_CUTOFF 30.0", default_r_val=10.0_dp, &
970 76176 : unit_str="angstrom")
971 76176 : CALL section_add_keyword(subsection, keyword)
972 76176 : CALL keyword_release(keyword)
973 : CALL keyword_create(keyword, __LOCATION__, name="TYPE", &
974 : description="Type of potential", &
975 : citations=[grimme2006, grimme2010, grimme2011, Caldeweyher2020], &
976 : usage="TYPE (DFTD2|DFTD3|DFTD3(BJ)|DFTD4)", &
977 : enum_c_vals=s2a("DFTD2", "DFTD3", "DFTD3(BJ)", "DFTD4"), &
978 : enum_i_vals=[vdw_pairpot_dftd2, vdw_pairpot_dftd3, &
979 : vdw_pairpot_dftd3bj, vdw_pairpot_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"), &
984 380880 : default_i_val=vdw_pairpot_dftd3)
985 76176 : CALL section_add_keyword(subsection, keyword)
986 76176 : CALL keyword_release(keyword)
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 76176 : default_lc_val="dftd3.dat")
991 76176 : CALL section_add_keyword(subsection, keyword)
992 76176 : CALL keyword_release(keyword)
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>", &
1000 76176 : type_of_var=char_t)
1001 76176 : CALL section_add_keyword(subsection, keyword)
1002 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1007 76176 : CALL section_add_keyword(subsection, keyword)
1008 76176 : CALL keyword_release(keyword)
1009 : CALL keyword_create(keyword, __LOCATION__, name="D4_DEBUG", &
1010 : description="Debug output for D4 method using reference code.", &
1011 : usage="D4_DEBUG", default_l_val=.FALSE., &
1012 76176 : lone_keyword_l_val=.TRUE.)
1013 76176 : CALL section_add_keyword(subsection, keyword)
1014 76176 : CALL keyword_release(keyword)
1015 : CALL keyword_create(keyword, __LOCATION__, name="D2_SCALING", &
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 152352 : usage="SCALING 0.2", default_r_val=0._dp)
1020 76176 : CALL section_add_keyword(subsection, keyword)
1021 76176 : CALL keyword_release(keyword)
1022 : CALL keyword_create(keyword, __LOCATION__, name="D2_EXP_PRE", &
1023 : variants=["EXP_PRE"], &
1024 : description="Prefactor in exponential damping factor (DFT-D2 potential)", &
1025 152352 : usage="D2_EXP_PRE 20.", default_r_val=20._dp)
1026 76176 : CALL section_add_keyword(subsection, keyword)
1027 76176 : CALL keyword_release(keyword)
1028 : CALL keyword_create(keyword, __LOCATION__, name="EPS_CN", &
1029 : description="Cutoff value for coordination number function (DFT-D3 method)", &
1030 76176 : usage="EPS_CN 1.e-6_dp", default_r_val=1.e-6_dp)
1031 76176 : CALL section_add_keyword(subsection, keyword)
1032 76176 : CALL keyword_release(keyword)
1033 : CALL keyword_create(keyword, __LOCATION__, name="D3_SCALING", &
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 76176 : default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
1039 76176 : CALL section_add_keyword(subsection, keyword)
1040 76176 : CALL keyword_release(keyword)
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 76176 : default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1047 76176 : CALL section_add_keyword(subsection, keyword)
1048 76176 : CALL keyword_release(keyword)
1049 : CALL keyword_create(keyword, __LOCATION__, name="D4_SCALING", &
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 76176 : default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1055 76176 : CALL section_add_keyword(subsection, keyword)
1056 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1061 76176 : CALL section_add_keyword(subsection, keyword)
1062 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1067 76176 : CALL section_add_keyword(subsection, keyword)
1068 76176 : CALL keyword_release(keyword)
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 76176 : usage="FACTOR_S9_TERM 1.e-0", default_r_val=1.00_dp)
1072 76176 : CALL section_add_keyword(subsection, keyword)
1073 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1079 76176 : CALL section_add_keyword(subsection, keyword)
1080 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1085 76176 : CALL section_add_keyword(subsection, keyword)
1086 76176 : CALL keyword_release(keyword)
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 76176 : n_var=4, type_of_var=real_t)
1093 76176 : CALL section_add_keyword(subsection, keyword)
1094 76176 : CALL keyword_release(keyword)
1095 : ! KG molecular corrections
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 76176 : lone_keyword_l_val=.TRUE.)
1100 76176 : CALL section_add_keyword(subsection, keyword)
1101 76176 : CALL keyword_release(keyword)
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 76176 : usage="MOLECULE_CORRECTION_C8 1.0 ", default_r_val=0.0_dp)
1105 76176 : CALL section_add_keyword(subsection, keyword)
1106 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1112 76176 : CALL section_add_keyword(subsection, keyword)
1113 76176 : CALL keyword_release(keyword)
1114 :
1115 : ! Set coordination numbers by atom numbers
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., &
1119 76176 : n_var=-1, type_of_var=integer_t)
1120 76176 : CALL section_add_keyword(subsection, keyword)
1121 76176 : CALL keyword_release(keyword)
1122 :
1123 : ! Ignore selected pair interactins
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., &
1127 76176 : n_var=2, type_of_var=integer_t)
1128 76176 : CALL section_add_keyword(subsection, keyword)
1129 76176 : CALL keyword_release(keyword)
1130 :
1131 : ! Set coordination numbers by atom kinds
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 76176 : n_var=-1, type_of_var=char_t)
1136 76176 : CALL section_add_keyword(subsection, keyword)
1137 76176 : CALL keyword_release(keyword)
1138 : ! Set coordination numbers by atom numbers
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 76176 : n_var=-1, type_of_var=char_t)
1143 76176 : CALL section_add_keyword(subsection, keyword)
1144 76176 : CALL keyword_release(keyword)
1145 :
1146 : ! parameter specification atom by atom
1147 : CALL keyword_create(keyword, __LOCATION__, name="ATOMPARM", &
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 76176 : repeats=.TRUE., n_var=-1, type_of_var=char_t)
1152 76176 : CALL section_add_keyword(subsection, keyword)
1153 76176 : CALL keyword_release(keyword)
1154 :
1155 76176 : NULLIFY (print_key)
1156 : CALL cp_print_key_section_create(print_key, __LOCATION__, "PRINT_DFTD", &
1157 : description="Controls the printing of some info about DFTD contributions", &
1158 76176 : print_level=high_print_level, add_last=add_last_numeric, filename="")
1159 76176 : CALL section_add_subsection(subsection, print_key)
1160 76176 : CALL section_release(print_key)
1161 :
1162 76176 : NULLIFY (newsection)
1163 76176 : CALL create_eeq_control_section(newsection)
1164 76176 : CALL section_add_subsection(subsection, newsection)
1165 76176 : CALL section_release(newsection)
1166 :
1167 76176 : CALL section_add_subsection(section, subsection)
1168 76176 : CALL section_release(subsection)
1169 :
1170 : ! nonlocal section
1171 76176 : 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 76176 : n_keywords=0, n_subsections=0, repeats=.TRUE.)
1176 :
1177 : CALL keyword_create(keyword, __LOCATION__, name="TYPE", &
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"), &
1182 : enum_i_vals=[vdw_nl_DRSLL, vdw_nl_LMKLL, vdw_nl_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"), &
1186 : citations=[Tran2013], &
1187 152352 : default_i_val=vdw_nl_DRSLL)
1188 76176 : CALL section_add_keyword(subsection, keyword)
1189 76176 : CALL keyword_release(keyword)
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 76176 : lone_keyword_l_val=.TRUE.)
1194 76176 : CALL section_add_keyword(subsection, keyword)
1195 76176 : CALL keyword_release(keyword)
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 76176 : default_lc_val="vdW_kernel_table.dat")
1202 76176 : CALL section_add_keyword(subsection, keyword)
1203 76176 : CALL keyword_release(keyword)
1204 : CALL keyword_create(keyword, __LOCATION__, name="CUTOFF", &
1205 : description="The cutoff of the FFT grid used in the calculation "// &
1206 : "of the nonlocal vdW functional [Ry].", &
1207 : usage="CUTOFF 300", &
1208 76176 : default_r_val=-1._dp, unit_str="Ry")
1209 76176 : CALL section_add_keyword(subsection, keyword)
1210 76176 : CALL keyword_release(keyword)
1211 : CALL keyword_create(keyword, __LOCATION__, name="PARAMETERS", &
1212 : description="Parameters b and C of the rVV10 functional", &
1213 : usage="PARAMETERS 6.3 0.0093", &
1214 76176 : type_of_var=real_t, default_r_vals=[6.3_dp, 0.0093_dp], n_var=2)
1215 76176 : CALL section_add_keyword(subsection, keyword)
1216 76176 : CALL keyword_release(keyword)
1217 : CALL keyword_create(keyword, __LOCATION__, name="SCALE", &
1218 : description="Scales the energy contribution of the rVV10 functional", &
1219 : usage="SCALE 1.0", &
1220 76176 : type_of_var=real_t, default_r_val=1.0_dp)
1221 76176 : CALL section_add_keyword(subsection, keyword)
1222 76176 : CALL keyword_release(keyword)
1223 :
1224 76176 : CALL section_add_subsection(section, subsection)
1225 76176 : CALL section_release(subsection)
1226 :
1227 76176 : END SUBROUTINE create_vdw_potential_section
1228 :
1229 : ! **************************************************************************************************
1230 : !> \brief creates the structure of the section needed for gCP potentials
1231 : !> \param section the section that will be created
1232 : !> \author jgh
1233 : ! **************************************************************************************************
1234 76176 : SUBROUTINE create_gcp_potential_section(section)
1235 : TYPE(section_type), POINTER :: section
1236 :
1237 : TYPE(keyword_type), POINTER :: keyword
1238 :
1239 76176 : 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. ", &
1243 : citations=[Kruse2012], &
1244 152352 : n_keywords=1, n_subsections=1, repeats=.FALSE.)
1245 :
1246 76176 : NULLIFY (keyword)
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 76176 : default_lc_val="---")
1251 76176 : CALL section_add_keyword(section, keyword)
1252 76176 : CALL keyword_release(keyword)
1253 :
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 76176 : default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp])
1259 76176 : CALL section_add_keyword(section, keyword)
1260 76176 : CALL keyword_release(keyword)
1261 :
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 228528 : type_of_var=char_t, repeats=.TRUE., n_var=-1, default_c_vals=["XX ", "0.0"])
1266 76176 : CALL section_add_keyword(section, keyword)
1267 76176 : CALL keyword_release(keyword)
1268 :
1269 : CALL keyword_create(keyword, __LOCATION__, name="VERBOSE", &
1270 : description="Verbose output for gCP calculation", &
1271 : usage="VERBOSE logical_value", &
1272 76176 : default_l_val=.TRUE., lone_keyword_l_val=.TRUE.)
1273 76176 : CALL section_add_keyword(section, keyword)
1274 76176 : CALL keyword_release(keyword)
1275 :
1276 76176 : END SUBROUTINE create_gcp_potential_section
1277 :
1278 : ! **************************************************************************************************
1279 : !> \brief creates the input section for the xc part
1280 : !> \param section the section to create
1281 : !> \author fawzi
1282 : ! **************************************************************************************************
1283 76176 : SUBROUTINE create_xc_section(section)
1284 : TYPE(section_type), POINTER :: section
1285 :
1286 : TYPE(keyword_type), POINTER :: keyword
1287 : TYPE(section_type), POINTER :: subsection
1288 :
1289 76176 : CPASSERT(.NOT. ASSOCIATED(section))
1290 : CALL section_create(section, __LOCATION__, name="xc", &
1291 : description="Parameters needed for the calculation of the eXchange and Correlation potential", &
1292 76176 : n_keywords=5, n_subsections=2, repeats=.FALSE.)
1293 :
1294 76176 : NULLIFY (subsection, keyword)
1295 :
1296 : CALL keyword_create(keyword, __LOCATION__, name="density_cutoff", &
1297 : description="The cutoff on the density used by the xc calculation", &
1298 76176 : usage="density_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1299 76176 : CALL section_add_keyword(section, keyword)
1300 76176 : CALL keyword_release(keyword)
1301 :
1302 : CALL keyword_create(keyword, __LOCATION__, name="gradient_cutoff", &
1303 : description="The cutoff on the gradient of the density used by the "// &
1304 : "xc calculation", &
1305 76176 : usage="gradient_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1306 76176 : CALL section_add_keyword(section, keyword)
1307 76176 : CALL keyword_release(keyword)
1308 :
1309 : CALL keyword_create(keyword, __LOCATION__, name="DENSITY_SMOOTH_CUTOFF_RANGE", &
1310 : description="Parameter for the smoothing procedure in xc calculation", &
1311 76176 : usage="DENSITY_SMOOTH_CUTOFF_RANGE {real}", default_r_val=0.0_dp)
1312 76176 : CALL section_add_keyword(section, keyword)
1313 76176 : CALL keyword_release(keyword)
1314 :
1315 : CALL keyword_create(keyword, __LOCATION__, name="tau_cutoff", &
1316 : description="The cutoff on tau used by the xc calculation", &
1317 76176 : usage="tau_cutoff 1.e-11", default_r_val=1.0e-10_dp)
1318 76176 : CALL section_add_keyword(section, keyword)
1319 76176 : CALL keyword_release(keyword)
1320 :
1321 : CALL section_create(subsection, __LOCATION__, name="xc_grid", & !FM to do
1322 : description="The xc parameters used when calculating the xc on the grid", &
1323 76176 : 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", &
1326 : usage="xc_smooth_rho nn10", default_i_val=xc_rho_no_smooth, &
1327 : enum_c_vals=s2a("NONE", "NN50", "NN10", "SPLINE2", "NN6", "SPLINE3", "NN4"), &
1328 : enum_i_vals=[xc_rho_no_smooth, xc_rho_nn50, xc_rho_nn10, &
1329 : xc_rho_spline2_smooth, xc_rho_spline2_smooth, xc_rho_spline3_smooth, &
1330 76176 : xc_rho_spline3_smooth])
1331 76176 : CALL section_add_keyword(subsection, keyword)
1332 76176 : CALL keyword_release(keyword)
1333 :
1334 : CALL keyword_create(keyword, __LOCATION__, name="xc_deriv", &
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"), &
1339 : enum_i_vals=[xc_deriv_pw, xc_deriv_spline3, xc_deriv_spline2, &
1340 : xc_deriv_nn50_smooth, xc_deriv_nn10_smooth, xc_deriv_spline2_smooth, &
1341 : xc_deriv_spline2_smooth, xc_deriv_spline3_smooth, xc_deriv_spline3_smooth, &
1342 76176 : xc_deriv_collocate])
1343 76176 : CALL section_add_keyword(subsection, keyword)
1344 76176 : CALL keyword_release(keyword)
1345 :
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 76176 : lone_keyword_l_val=.TRUE.)
1350 76176 : CALL section_add_keyword(subsection, keyword)
1351 76176 : CALL keyword_release(keyword)
1352 :
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 76176 : lone_keyword_l_val=.TRUE.)
1357 76176 : CALL section_add_keyword(section, keyword)
1358 76176 : CALL keyword_release(keyword)
1359 :
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 76176 : lone_keyword_l_val=.TRUE.)
1364 76176 : CALL section_add_keyword(section, keyword)
1365 76176 : CALL keyword_release(keyword)
1366 :
1367 : CALL keyword_create(keyword, __LOCATION__, name="STEP_SIZE", &
1368 : description="Step size in terms of the first order potential for the numerical "// &
1369 : "evaluation of XC derivatives", &
1370 76176 : usage="STEP_SIZE 1.0E-3", default_r_val=1e-3_dp)
1371 76176 : CALL section_add_keyword(section, keyword)
1372 76176 : CALL keyword_release(keyword)
1373 :
1374 : CALL keyword_create(keyword, __LOCATION__, name="NSTEPS", &
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 76176 : usage="NSTEPS 4", default_i_val=3)
1378 76176 : CALL section_add_keyword(section, keyword)
1379 76176 : CALL keyword_release(keyword)
1380 :
1381 76176 : CALL section_add_subsection(section, subsection)
1382 76176 : CALL section_release(subsection)
1383 :
1384 76176 : CALL create_xc_fun_section(subsection)
1385 76176 : CALL section_add_subsection(section, subsection)
1386 76176 : CALL section_release(subsection)
1387 :
1388 76176 : CALL create_hfx_section(subsection)
1389 76176 : CALL section_add_subsection(section, subsection)
1390 76176 : CALL section_release(subsection)
1391 :
1392 76176 : CALL create_mp2_section(subsection)
1393 76176 : CALL section_add_subsection(section, subsection)
1394 76176 : CALL section_release(subsection)
1395 :
1396 76176 : CALL create_adiabatic_section(subsection)
1397 76176 : CALL section_add_subsection(section, subsection)
1398 76176 : CALL section_release(subsection)
1399 :
1400 76176 : CALL create_xc_potential_section(subsection)
1401 76176 : CALL section_add_subsection(section, subsection)
1402 76176 : CALL section_release(subsection)
1403 :
1404 76176 : CALL create_xc_kernel_section(subsection)
1405 76176 : CALL section_add_subsection(section, subsection)
1406 76176 : CALL section_release(subsection)
1407 :
1408 76176 : CALL create_hfx_kernel_section(subsection)
1409 76176 : CALL section_add_subsection(section, subsection)
1410 76176 : CALL section_release(subsection)
1411 :
1412 76176 : CALL create_vdw_potential_section(subsection)
1413 76176 : CALL section_add_subsection(section, subsection)
1414 76176 : CALL section_release(subsection)
1415 :
1416 76176 : CALL create_gcp_potential_section(subsection)
1417 76176 : CALL section_add_subsection(section, subsection)
1418 76176 : CALL section_release(subsection)
1419 :
1420 76176 : END SUBROUTINE create_xc_section
1421 :
1422 : ! **************************************************************************************************
1423 : !> \brief creates the section for adiabatic hybrid functionals
1424 : !> \param section ...
1425 : !> \author Manuel Guidon
1426 : ! **************************************************************************************************
1427 76176 : SUBROUTINE create_adiabatic_section(section)
1428 : TYPE(section_type), POINTER :: section
1429 :
1430 : TYPE(keyword_type), POINTER :: keyword
1431 :
1432 76176 : CPASSERT(.NOT. ASSOCIATED(section))
1433 : CALL section_create(section, __LOCATION__, name="ADIABATIC_RESCALING", &
1434 : description="Parameters for self interaction corrected hybrid functionals", &
1435 76176 : n_keywords=0, n_subsections=0, repeats=.FALSE.)
1436 76176 : NULLIFY (keyword)
1437 : CALL keyword_create( &
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"), &
1444 : enum_i_vals=[do_adiabatic_hybrid_mcy3], &
1445 : enum_desc=s2a("Use MCY3 hybrid functional"), &
1446 76176 : default_i_val=do_adiabatic_hybrid_mcy3)
1447 76176 : CALL section_add_keyword(section, keyword)
1448 76176 : CALL keyword_release(keyword)
1449 :
1450 76176 : NULLIFY (keyword)
1451 : CALL keyword_create( &
1452 : keyword, __LOCATION__, &
1453 : name="LAMBDA", &
1454 : description="The point to be used along the adiabatic curve (0 < λ < 1)", &
1455 : usage="LAMBDA 0.71", &
1456 76176 : default_r_val=0.71_dp)
1457 76176 : CALL section_add_keyword(section, keyword)
1458 76176 : CALL keyword_release(keyword)
1459 :
1460 76176 : NULLIFY (keyword)
1461 : CALL keyword_create( &
1462 : keyword, __LOCATION__, &
1463 : name="OMEGA", &
1464 : description="Long-range parameter", &
1465 : usage="OMEGA 0.2", &
1466 76176 : default_r_val=0.2_dp)
1467 76176 : CALL section_add_keyword(section, keyword)
1468 76176 : CALL keyword_release(keyword)
1469 :
1470 76176 : NULLIFY (keyword)
1471 : CALL keyword_create( &
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"), &
1477 : enum_i_vals=[do_adiabatic_model_pade], &
1478 : enum_desc=s2a("Use pade model: W(lambda)=a+(b*lambda)/(1+c*lambda)"), &
1479 76176 : default_i_val=do_adiabatic_model_pade)
1480 76176 : CALL section_add_keyword(section, keyword)
1481 76176 : CALL keyword_release(keyword)
1482 76176 : END SUBROUTINE create_adiabatic_section
1483 :
1484 : END MODULE input_cp2k_xc
|