(git:6344619)
Loading...
Searching...
No Matches
qs_dispersion_utils.F
Go to the documentation of this file.
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 Set disperson types for DFT calculations
10!> \author JGH (04.2014)
11! **************************************************************************************************
13
20 USE input_constants, ONLY: &
28 USE kinds, ONLY: default_string_length,&
29 dp
30 USE physcon, ONLY: bohr,&
31 kjmol
36 USE qs_kind_types, ONLY: get_qs_kind,&
38 USE string_utilities, ONLY: lowercase,&
40#include "./base/base_uses.f90"
41
42 IMPLICIT NONE
43
44 PRIVATE
45
46 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_dispersion_utils'
47
51
52! **************************************************************************************************
53CONTAINS
54 ! **************************************************************************************************
55!> \brief ...
56!> \param xc_functional_name ...
57!> \param d_functional_name ...
58! **************************************************************************************************
59 SUBROUTINE xc_functional_to_d_name(xc_functional_name, d_functional_name)
60 CHARACTER(len=*), INTENT(IN) :: xc_functional_name
61 CHARACTER(len=*), INTENT(OUT) :: d_functional_name
62
63 IF (trim(adjustl(xc_functional_name)) == "BP") THEN
64 d_functional_name = "bp86"
65 ELSE
66 d_functional_name = trim(adjustl(xc_functional_name))
67 CALL lowercase(d_functional_name)
68 END IF
69
70 END SUBROUTINE xc_functional_to_d_name
71
72! **************************************************************************************************
73!> \brief ...
74!> \param xc_functional_id ...
75!> \param xc_functional_name ...
76! **************************************************************************************************
77 SUBROUTINE xc_functional_to_d4_name_int(xc_functional_id, xc_functional_name)
78 INTEGER, INTENT(IN) :: xc_functional_id
79 CHARACTER(len=*), INTENT(OUT) :: xc_functional_name
80
81 SELECT CASE (xc_functional_id)
82 CASE (xc_funct_pbe)
83 xc_functional_name = "PBE"
84 CASE (xc_funct_pbe0)
85 xc_functional_name = "PBE0"
86 CASE (xc_funct_b3lyp)
87 xc_functional_name = "B3LYP"
88 CASE (xc_funct_blyp)
89 xc_functional_name = "BLYP"
90 CASE (xc_funct_bp)
91 xc_functional_name = "BP"
92 CASE (xc_funct_tpss)
93 xc_functional_name = "TPSS"
94 CASE DEFAULT
95 xc_functional_name = "NONE"
96 END SELECT
97
98 END SUBROUTINE xc_functional_to_d4_name_int
99
100! **************************************************************************************************
101!> \brief ...
102!> \param xc_fun_section ...
103!> \param xc_functional_name ...
104! **************************************************************************************************
105 SUBROUTINE xc_functional_detect_expanded(xc_fun_section, xc_functional_name)
106 TYPE(section_vals_type), POINTER :: xc_fun_section
107 CHARACTER(len=*), INTENT(OUT) :: xc_functional_name
108
109 CHARACTER(len=20), ALLOCATABLE :: sub_names(:)
110 INTEGER :: i, n_explicit
111 LOGICAL :: has_becke88, has_lyp, has_mgga_c_r2scan, has_mgga_c_scan, has_mgga_x_r2scan, &
112 has_mgga_x_scan, has_optx, has_p86c, has_pbe0_13, has_vwn, has_xalpha
113 REAL(dp) :: scal_x_pbe
114 TYPE(section_vals_type), POINTER :: sub_section
115
116 n_explicit = 0
117 has_becke88 = .false.; has_lyp = .false.; has_vwn = .false.; has_p86c = .false.
118 has_xalpha = .false.; has_optx = .false.; has_pbe0_13 = .false.
119 has_mgga_c_r2scan = .false.; has_mgga_x_r2scan = .false.
120 has_mgga_c_scan = .false.; has_mgga_x_scan = .false.
121
122 ALLOCATE (sub_names(xc_fun_section%section%n_subsections))
123
124 DO i = 1, xc_fun_section%section%n_subsections
125 sub_section => xc_fun_section%subs_vals(i, 1)%section_vals
126 IF (SIZE(sub_section%values, 2) > 0) THEN
127 n_explicit = n_explicit + 1
128 sub_names(n_explicit) = trim(adjustl(sub_section%section%name))
129 SELECT CASE (sub_names(n_explicit))
130 CASE ("BECKE88"); has_becke88 = .true.
131 CASE ("LYP"); has_lyp = .true.
132 CASE ("VWN"); has_vwn = .true.
133 CASE ("P86C"); has_p86c = .true.
134 CASE ("XALPHA"); has_xalpha = .true.
135 CASE ("OPTX"); has_optx = .true.
136 CASE ("MGGA_C_R2SCAN"); has_mgga_c_r2scan = .true.
137 CASE ("MGGA_X_R2SCAN"); has_mgga_x_r2scan = .true.
138 CASE ("MGGA_C_SCAN"); has_mgga_c_scan = .true.
139 CASE ("MGGA_X_SCAN"); has_mgga_x_scan = .true.
140 CASE ("PBE0_1/3"); has_pbe0_13 = .true.
141 CASE ("PBE")
142 CALL section_vals_val_get(sub_section, "SCALE_X", r_val=scal_x_pbe)
143 IF (abs(scal_x_pbe - 0.75_dp) < 0.01_dp) has_pbe0_13 = .true.
144 END SELECT
145 END IF
146 END DO
147
148 IF (has_becke88 .AND. has_lyp .AND. has_vwn .AND. has_xalpha) THEN
149 xc_functional_name = "B3LYP"
150 ELSE IF (has_becke88 .AND. has_lyp) THEN
151 xc_functional_name = merge("PBE0", "BLYP", has_pbe0_13)
152 ELSE IF (has_becke88 .AND. has_p86c) THEN
153 xc_functional_name = "BP"
154 ELSE IF (has_optx .AND. has_lyp) THEN
155 xc_functional_name = "OLYP"
156 ELSE IF (has_mgga_c_r2scan .AND. has_mgga_x_r2scan) THEN
157 xc_functional_name = "R2SCAN"
158 ELSE IF (has_mgga_c_scan .AND. has_mgga_x_scan) THEN
159 xc_functional_name = "SCAN"
160 ELSE IF (n_explicit == 1 .AND. has_pbe0_13) THEN
161 xc_functional_name = "PBE0"
162 ELSE IF (n_explicit == 1) THEN
163 xc_functional_name = sub_names(1)
164 ELSE
165 xc_functional_name = "NONE"
166 END IF
167
168 END SUBROUTINE xc_functional_detect_expanded
169
170!> \brief ...
171!> \param dispersion_env ...
172!> \param xc_section ...
173! **************************************************************************************************
174 SUBROUTINE qs_dispersion_env_set(dispersion_env, xc_section)
175 TYPE(qs_dispersion_type), POINTER :: dispersion_env
176 TYPE(section_vals_type), POINTER :: xc_section
177
178 CHARACTER(len=default_string_length) :: xc_functional_name
179 INTEGER :: xc_functional_id
180 LOGICAL :: exfun, explicit
181 REAL(dp), POINTER :: params(:), scal(:)
182 TYPE(section_vals_type), POINTER :: nl_section, pp_section, vdw_section, &
183 xc_fun_section
184
185 cpassert(ASSOCIATED(dispersion_env))
186
187 ! set general defaults
188 dispersion_env%doabc = .false.
189 dispersion_env%c9cnst = .false.
190 dispersion_env%lrc = .false.
191 dispersion_env%srb = .false.
192 dispersion_env%verbose = .false.
193 dispersion_env%nd3_exclude_pair = 0
194 NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
195 dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
196 dispersion_env%d3_exclude_pair)
197 NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel_table, dispersion_env%d2y_dx2)
198 NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
199 NULLIFY (dispersion_env%dftd_section)
200 NULLIFY (vdw_section, xc_fun_section)
201 vdw_section => section_vals_get_subs_vals(xc_section, "vdw_potential")
202 xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL")
203 CALL section_vals_val_get(xc_fun_section, "_SECTION_PARAMETERS_", i_val=xc_functional_id)
204 IF (xc_functional_id == xc_funct_no_shortcut .OR. xc_functional_id == xc_none) THEN
205 CALL xc_functional_detect_expanded(xc_fun_section, xc_functional_name)
206 ELSE
207 CALL xc_functional_to_d4_name_int(xc_functional_id, xc_functional_name)
208 END IF
209 CALL section_vals_val_get(vdw_section, "POTENTIAL_TYPE", i_val=dispersion_env%type)
210 IF (dispersion_env%type == xc_vdw_fun_pairpot) THEN
211 NULLIFY (pp_section)
212 pp_section => section_vals_get_subs_vals(vdw_section, "PAIR_POTENTIAL")
213 CALL section_vals_val_get(pp_section, "VERBOSE_OUTPUT", l_val=dispersion_env%verbose)
214 CALL section_vals_val_get(pp_section, "TYPE", i_val=dispersion_env%pp_type)
215 IF (dispersion_env%pp_type == vdw_pairpot_dftd2 .OR. &
216 dispersion_env%pp_type == vdw_pairpot_dftd2chg) THEN
217 ! functional parameters for D2 with Grimme or Chai-Head-Gordon damping
218 CALL section_vals_val_get(pp_section, "EXP_PRE", r_val=dispersion_env%exp_pre, explicit=explicit)
219 IF (dispersion_env%pp_type == vdw_pairpot_dftd2chg) THEN
220 IF (explicit) cpabort("D2_EXP_PRE is not applicable to DFTD2(CHG)")
221 dispersion_env%exp_pre = 0._dp
222 END IF
223 CALL section_vals_val_get(pp_section, "SCALING", explicit=explicit)
224 IF (.NOT. explicit) THEN
225 CALL section_vals_val_get(pp_section, "REFERENCE_FUNCTIONAL", explicit=exfun)
226 IF (.NOT. exfun) THEN
227 CALL xc_functional_to_d_name(xc_functional_name, dispersion_env%ref_functional)
228 IF (dispersion_env%ref_functional == "none") THEN
229 CALL cp_abort(__location__, &
230 "D2 vdW: XC_FUNCTIONAL not supported. "// &
231 "Set REFERENCE_FUNCTIONAL explicitly. "// &
232 "Go to https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/ "// &
233 "for a full list of supported functionals")
234 END IF
235 ELSE
236 CALL section_vals_val_get(vdw_section, &
237 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
238 c_val=dispersion_env%ref_functional)
239 END IF
240 IF (dispersion_env%pp_type == vdw_pairpot_dftd2chg) THEN
241 xc_functional_name = dispersion_env%ref_functional
242 CALL uppercase(xc_functional_name)
243 SELECT CASE (trim(xc_functional_name))
244 CASE ("WB97X-D", "WB97XD")
245 dispersion_env%scaling = 1._dp
246 CASE DEFAULT
247 CALL cp_abort(__location__, &
248 "DFTD2(CHG): set REFERENCE_FUNCTIONAL WB97X-D or D2_SCALING explicitly")
249 END SELECT
250 ELSE
251 CALL qs_scaling_dftd2(dispersion_env%scaling, dispersion_env%ref_functional)
252 END IF
253 ELSE
254 CALL section_vals_val_get(pp_section, "SCALING", r_val=dispersion_env%scaling)
255 END IF
256 ELSE
257 dispersion_env%exp_pre = 0._dp
258 dispersion_env%scaling = 0._dp
259 END IF
260 IF (dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
261 dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
262 ! functional parameters for Grimme DFT-D3 type
263 CALL section_vals_val_get(pp_section, "EPS_CN", r_val=dispersion_env%eps_cn)
264 CALL section_vals_val_get(pp_section, "CALCULATE_C9_TERM", l_val=dispersion_env%doabc)
265 CALL section_vals_val_get(pp_section, "REFERENCE_C9_TERM", l_val=dispersion_env%c9cnst)
266 CALL section_vals_val_get(pp_section, "LONG_RANGE_CORRECTION", l_val=dispersion_env%lrc)
267 CALL section_vals_val_get(pp_section, "SHORT_RANGE_CORRECTION", l_val=dispersion_env%srb)
268 CALL section_vals_val_get(pp_section, "SHORT_RANGE_CORRECTION_PARAMETERS", r_vals=params)
269 dispersion_env%srb_params(1:4) = params(1:4)
270 ! KG corrections
271 CALL section_vals_val_get(pp_section, "MOLECULE_CORRECTION", l_val=dispersion_env%domol)
272 CALL section_vals_val_get(pp_section, "MOLECULE_CORRECTION_C8", r_val=dispersion_env%kgc8)
273 IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
274 CALL section_vals_val_get(pp_section, "D3_SCALING", explicit=explicit)
275 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
276 CALL section_vals_val_get(pp_section, "D3BJ_SCALING", explicit=explicit)
277 END IF
278 IF (.NOT. explicit) THEN
279 CALL section_vals_val_get(pp_section, "REFERENCE_FUNCTIONAL", explicit=exfun)
280 IF (.NOT. exfun) THEN
281 CALL xc_functional_to_d_name(xc_functional_name, dispersion_env%ref_functional)
282 IF (dispersion_env%ref_functional == "none") THEN
283 CALL cp_abort(__location__, &
284 "D3 vdW: XC_FUNCTIONAL not supported. "// &
285 "Set REFERENCE_FUNCTIONAL explicitly. "// &
286 "Go to https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/ for a full "// &
287 "list of supported functionals")
288 END IF
289 ELSE
290 CALL section_vals_val_get(vdw_section, &
291 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
292 c_val=dispersion_env%ref_functional)
293 END IF
294 CALL section_vals_val_get(pp_section, "D3_REFERENCE_CODE", &
295 l_val=dispersion_env%d3_reference_code)
296 IF (.NOT. dispersion_env%d3_reference_code) THEN
297 IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
298 CALL qs_scaling_dftd3(dispersion_env%s6, dispersion_env%sr6, dispersion_env%s8, &
299 dispersion_env%sr8, dispersion_env%ref_functional)
300 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
301 CALL qs_scaling_dftd3bj(dispersion_env%s6, dispersion_env%a1, dispersion_env%s8, &
302 dispersion_env%a2, dispersion_env%ref_functional)
303 END IF
304 END IF
305 ELSE
306 dispersion_env%d3_scaling_explicit = .true.
307 CALL section_vals_val_get(pp_section, "REFERENCE_FUNCTIONAL", explicit=exfun)
308 IF (.NOT. exfun) THEN
309 CALL xc_functional_to_d_name(xc_functional_name, dispersion_env%ref_functional)
310 IF (dispersion_env%ref_functional == "none") THEN
311 dispersion_env%ref_functional = ""
312 END IF
313 ELSE
314 CALL section_vals_val_get(vdw_section, &
315 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
316 c_val=dispersion_env%ref_functional)
317 END IF
318 CALL section_vals_val_get(pp_section, "D3_REFERENCE_CODE", &
319 l_val=dispersion_env%d3_reference_code)
320 IF (.NOT. dispersion_env%d3_reference_code) THEN
321 IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
322 CALL qs_scaling_dftd3(dispersion_env%s6, dispersion_env%sr6, dispersion_env%s8, &
323 dispersion_env%sr8, dispersion_env%ref_functional)
324 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
325 CALL qs_scaling_dftd3bj(dispersion_env%s6, dispersion_env%a1, dispersion_env%s8, &
326 dispersion_env%a2, dispersion_env%ref_functional)
327 END IF
328 END IF
329 IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
330 CALL section_vals_val_get(pp_section, "D3_SCALING", r_vals=scal)
331 dispersion_env%s6 = scal(1)
332 dispersion_env%sr6 = scal(2)
333 dispersion_env%s8 = scal(3)
334 dispersion_env%a1 = 0.0_dp
335 dispersion_env%a2 = 0.0_dp
336 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
337 CALL section_vals_val_get(pp_section, "D3BJ_SCALING", r_vals=scal)
338 dispersion_env%s6 = scal(1)
339 dispersion_env%a1 = scal(2)
340 dispersion_env%s8 = scal(3)
341 dispersion_env%a2 = scal(4)
342 dispersion_env%sr6 = 0.0_dp
343 END IF
344 END IF
345 ELSE
346 dispersion_env%s6 = 0._dp
347 dispersion_env%sr6 = 0._dp
348 dispersion_env%s8 = 0._dp
349 dispersion_env%s9 = 0._dp
350 dispersion_env%a1 = 0._dp
351 dispersion_env%a2 = 0._dp
352 dispersion_env%eps_cn = 0._dp
353 END IF
354 IF (dispersion_env%pp_type == vdw_pairpot_dftd4) THEN
355 CALL section_vals_val_get(pp_section, "D4_SCALING", explicit=explicit)
356 IF (.NOT. explicit) THEN
357 CALL section_vals_val_get(pp_section, "REFERENCE_FUNCTIONAL", explicit=exfun)
358 IF (.NOT. exfun) THEN
359 CALL xc_functional_to_d_name(xc_functional_name, dispersion_env%ref_functional)
360 ELSE
361 CALL section_vals_val_get(vdw_section, &
362 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
363 c_val=dispersion_env%ref_functional)
364 END IF
365 IF (trim(adjustl(dispersion_env%ref_functional)) == "none") THEN
366 cpabort("D4: XC_FUNCTIONAL not supported. Set REFERENCE_FUNCTIONAL explicitly.")
367 END IF
368 ELSE
369 CALL section_vals_val_get(pp_section, "D4_SCALING", r_vals=scal)
370 dispersion_env%s6 = scal(1)
371 dispersion_env%a1 = scal(2)
372 dispersion_env%s8 = scal(3)
373 dispersion_env%a2 = scal(4)
374 dispersion_env%sr6 = 0.0_dp
375 dispersion_env%ref_functional = "none"
376 END IF
377 CALL section_vals_val_get(pp_section, "EPS_CN", r_val=dispersion_env%eps_cn)
378 CALL section_vals_val_get(pp_section, "D4_REFERENCE_CODE", &
379 l_val=dispersion_env%d4_reference_code)
380 CALL section_vals_val_get(pp_section, "D4_DEBUG", l_val=dispersion_env%d4_debug)
381 CALL section_vals_val_get(pp_section, "D3_REFERENCE_CODE", &
382 l_val=dispersion_env%d3_reference_code)
383 CALL section_vals_val_get(pp_section, "D4_CUTOFF", r_val=dispersion_env%rc_d4)
384 CALL section_vals_val_get(pp_section, "D4_CUTOFF_WIDTH", &
385 r_val=dispersion_env%d4_cutoff_width)
386 CALL section_vals_val_get(pp_section, "D4_3B_CUTOFF_WIDTH", &
387 r_val=dispersion_env%d4_3b_cutoff_width)
388 CALL section_vals_val_get(pp_section, "D4_CN_CUTOFF", r_val=dispersion_env%rc_cn)
389 CALL section_vals_val_get(pp_section, "FACTOR_S9_TERM", r_val=dispersion_env%s9)
390 !C9 term default=T for D4
391 CALL section_vals_val_get(pp_section, "CALCULATE_C9_TERM", explicit=exfun)
392 IF (exfun) THEN
393 CALL section_vals_val_get(pp_section, "CALCULATE_C9_TERM", l_val=dispersion_env%doabc)
394 ELSE
395 dispersion_env%doabc = .true.
396 END IF
397 END IF
398 CALL section_vals_val_get(pp_section, "R_CUTOFF", r_val=dispersion_env%rc_disp)
399 CALL section_vals_val_get(pp_section, "PARAMETER_FILE_NAME", &
400 c_val=dispersion_env%parameter_file_name)
401 ! set DFTD section for output handling
402 dispersion_env%dftd_section => pp_section
403 ELSE IF (dispersion_env%type == xc_vdw_fun_nonloc) THEN
404 NULLIFY (nl_section)
405 nl_section => section_vals_get_subs_vals(vdw_section, "NON_LOCAL")
406 CALL section_vals_val_get(nl_section, "VERBOSE_OUTPUT", l_val=dispersion_env%verbose)
407 CALL section_vals_val_get(nl_section, "KERNEL_FILE_NAME", &
408 c_val=dispersion_env%kernel_file_name)
409 CALL section_vals_val_get(nl_section, "TYPE", i_val=dispersion_env%nl_type)
410 CALL section_vals_val_get(nl_section, "CUTOFF", r_val=dispersion_env%pw_cutoff)
411 CALL section_vals_val_get(nl_section, "PARAMETERS", r_vals=params)
412 CALL section_vals_val_get(nl_section, "SCALE", r_val=dispersion_env%scale_rvv10)
413 dispersion_env%b_value = params(1)
414 dispersion_env%c_value = params(2)
415 END IF
416 END SUBROUTINE qs_dispersion_env_set
417
418! **************************************************************************************************
419!> \brief ...
420!> \param qs_env ...
421!> \param dispersion_env ...
422!> \param ounit ...
423! **************************************************************************************************
424 SUBROUTINE qs_write_dispersion(qs_env, dispersion_env, ounit)
425 TYPE(qs_environment_type), POINTER :: qs_env
426 TYPE(qs_dispersion_type), POINTER :: dispersion_env
427 INTEGER, INTENT(in), OPTIONAL :: ounit
428
429 CHARACTER(LEN=2) :: symbol
430 INTEGER :: i, ikind, nkind, output_unit
431 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
432 TYPE(cp_logger_type), POINTER :: logger
433 TYPE(qs_atom_dispersion_type), POINTER :: disp
434 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
435 TYPE(section_vals_type), POINTER :: dft_section
436
437 IF (PRESENT(ounit)) THEN
438 output_unit = ounit
439 ELSE
440 NULLIFY (logger)
441 logger => cp_get_default_logger()
442
443 dft_section => section_vals_get_subs_vals(qs_env%input, "DFT")
444 output_unit = cp_print_key_unit_nr(logger, dft_section, &
445 "PRINT%DFT_CONTROL_PARAMETERS", extension=".Log")
446 END IF
447
448 IF (output_unit > 0) THEN
449 ! vdW type specific output
450 IF (dispersion_env%type == xc_vdw_fun_pairpot) THEN
451 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T67,'Pair Potential')")
452 ! Pair potentials
453 IF (dispersion_env%pp_type == vdw_pairpot_dftd2 .OR. &
454 dispersion_env%pp_type == vdw_pairpot_dftd2chg) THEN
455 IF (dispersion_env%pp_type == vdw_pairpot_dftd2chg) THEN
456 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'DFT-D2(CHG)')")
457 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Chai-Head-Gordon, PCCP 10: 6615 (2008)')")
458 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'CHG Damping: a=6, alpha=12')")
459 ELSE
460 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'DFT-D2')")
461 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Potential Form: S. Grimme, JCC 27: 1787 (2006)')")
462 END IF
463 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Cutoff Radius [Bohr]:',T73,F8.2)") dispersion_env%rc_disp
464 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Scaling Factor:',T73,F8.4)") dispersion_env%scaling
465 IF (dispersion_env%pp_type == vdw_pairpot_dftd2) THEN
466 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Exp Prefactor for Damping:',T73,F8.1)") &
467 dispersion_env%exp_pre
468 END IF
469 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set)
470 nkind = SIZE(atomic_kind_set)
471 DO ikind = 1, nkind
472 CALL get_atomic_kind(atomic_kind_set(ikind), element_symbol=symbol)
473 CALL get_qs_kind(qs_kind_set(ikind), dispersion=disp)
474 IF (disp%defined) THEN
475 WRITE (output_unit, fmt="(' vdW PARAMETER| ',T18,'Atom=',A2, "// &
476 "T28,'C6[J*nm^6*mol^-1]=',F8.4,T63,'r(vdW)[A]=',F8.4)") &
477 symbol, disp%c6/(1000._dp*bohr**6/kjmol), disp%vdw_radii/bohr
478 ELSE
479 WRITE (output_unit, fmt="(' vdW PARAMETER| ',T20,'Atom=',A2,T70,'not defined')")
480 END IF
481 END DO
482 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
483 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D3 (Version 3.1)')")
484 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Potential Form: S. Grimme et al, JCP 132: 154104 (2010)')")
485 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Zero Damping')")
486 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff Radius [Bohr]:',T73,F8.2)") dispersion_env%rc_disp
487 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s6 Scaling Factor:',T73,F8.4)") dispersion_env%s6
488 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'sr6 Scaling Factor:',T73,F8.4)") dispersion_env%sr6
489 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s8 Scaling Factor:',T73,F8.4)") dispersion_env%s8
490 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff for CN calculation:',T69,E12.4)") dispersion_env%eps_cn
491 IF (dispersion_env%nd3_exclude_pair > 0) THEN
492 DO i = 1, dispersion_env%nd3_exclude_pair
493 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Excluded Pairs: ',T76,I2,' ',I2)") &
494 dispersion_env%d3_exclude_pair(i, :)
495 END DO
496 END IF
497 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
498 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D3 (Version 3.1)')")
499 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Potential Form: S. Grimme et al, JCP 132: 154104 (2010)')")
500 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'BJ Damping: S. Grimme et al, JCC 32: 1456 (2011)')")
501 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff Radius [Bohr]:',T73,F8.2)") dispersion_env%rc_disp
502 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s6 Scaling Factor:',T73,F8.4)") dispersion_env%s6
503 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'a1 Damping Factor:',T73,F8.4)") dispersion_env%a1
504 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s8 Scaling Factor:',T73,F8.4)") dispersion_env%s8
505 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'a2 Damping Factor:',T73,F8.4)") dispersion_env%a2
506 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff for CN calculation:',T69,E12.4)") dispersion_env%eps_cn
507 IF (dispersion_env%nd3_exclude_pair > 0) THEN
508 DO i = 1, dispersion_env%nd3_exclude_pair
509 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Excluded Kind Pairs: ',T76,I2,' ',I2)") &
510 dispersion_env%d3_exclude_pair(i, :)
511 END DO
512 END IF
513 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd4) THEN
514 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D4 (Version 4.2)')")
515 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'see https://github.com/dftd4/dftd4')")
516 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'E. Caldeweyher et al, PCCP 22: 8499 (2020)')")
517 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'E. Caldeweyher et al, JCP 150: 154122 (2019)')")
518 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'E. Caldeweyher et al, JCP 147: 034112 (2017)')")
519 END IF
520 ELSE IF (dispersion_env%type == xc_vdw_fun_nonloc) THEN
521 WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T61,'Non-local Functional')")
522 WRITE (output_unit, &
523 fmt="(' vdW POTENTIAL| ','Implementation: G. Roman-Perez, J. Soler, PRL 103: 096102 (2009)')")
524 WRITE (output_unit, &
525 fmt="(' vdW POTENTIAL| ',T38,' T. Thonhauser et al, PRB 76: 125112 (2007)')")
526 WRITE (output_unit, &
527 fmt="(' vdW POTENTIAL| ',T22,' R. Sabatini et al, J.Phys:Condens Matter 24: 424209 (2012)')")
528 WRITE (output_unit, &
529 fmt="(' vdW POTENTIAL| ',T16,' Based on QE implementation by Brian Kolb, Timo Thonhauser (2009)')")
530 SELECT CASE (dispersion_env%nl_type)
531 CASE DEFAULT
532 ! unknown functional
533 cpabort("Unknown vdW nonlocal functional")
534 CASE (vdw_nl_drsll)
535 WRITE (output_unit, &
536 fmt="(' vdW POTENTIAL| ','DRSLL Functional: M. Dion et al, PRL 92: 246401 (2004)')")
537 CASE (vdw_nl_lmkll)
538 WRITE (output_unit, &
539 fmt="(' vdW POTENTIAL| ','LMKLL Functional: K. Lee et al, PRB 82: 081101 (2010)')")
540 CASE (vdw_nl_rvv10)
541 WRITE (output_unit, &
542 fmt="(' vdW POTENTIAL| ','RVV10 Functional: R. Sabatini et al, PRB 87: 041108(R) (2013)')")
543 END SELECT
544 IF (dispersion_env%verbose) THEN
545 WRITE (output_unit, &
546 fmt="(' vdW POTENTIAL| ',' Carrying out vdW-DF run using the following parameters:')")
547 WRITE (output_unit, fmt="(' vdW POTENTIAL| ','Nqs =',I8,' Nr_points =',I8,' r_max =',F10.3)") &
548 dispersion_env%nqs, dispersion_env%nr_points, dispersion_env%r_max
549 WRITE (output_unit, fmt="(' vdW POTENTIAL| ','q_mesh =')")
550 WRITE (output_unit, fmt="(8X,4F18.8)") (dispersion_env%q_mesh(i), i=1, dispersion_env%nqs)
551 WRITE (output_unit, &
552 fmt="(' vdW POTENTIAL| ','Density cutoff for convolution [a.u.]:',T71,F10.1)") &
553 dispersion_env%pw_cutoff
554 END IF
555 END IF
556 END IF
557 IF (.NOT. PRESENT(ounit)) THEN
558 CALL cp_print_key_finished_output(output_unit, logger, dft_section, &
559 "PRINT%DFT_CONTROL_PARAMETERS")
560 END IF
561
562 END SUBROUTINE qs_write_dispersion
563
564! **************************************************************************************************
565!> \brief ...
566!> \param scaling ...
567!> \param ref_functional ...
568! **************************************************************************************************
569 SUBROUTINE qs_scaling_dftd2(scaling, ref_functional)
570 REAL(kind=dp), INTENT(inout) :: scaling
571 CHARACTER(LEN=default_string_length), INTENT(in) :: ref_functional
572
573 CHARACTER(LEN=default_string_length) :: functional
574
575 functional = ref_functional
576 CALL uppercase(functional)
577 SELECT CASE (trim(functional))
578 CASE DEFAULT
579 ! unknown functional
580 cpabort("No DFT-D2 s6 value available for this functional:"//trim(functional))
581 CASE ("BLYP")
582 scaling = 1.20_dp
583 CASE ("B3LYP")
584 scaling = 1.05_dp
585 CASE ("TPSS")
586 scaling = 1.00_dp
587 CASE ("PBE")
588 scaling = 0.75_dp
589 CASE ("PBE0")
590 scaling = 0.6_dp
591 CASE ("B2PLYP")
592 scaling = 0.55_dp
593 CASE ("BP86")
594 scaling = 1.05_dp
595 CASE ("B97")
596 scaling = 1.25_dp
597 END SELECT
598
599 END SUBROUTINE qs_scaling_dftd2
600
601! **************************************************************************************************
602!> \brief ...
603!> \param s6 ...
604!> \param sr6 ...
605!> \param s8 ...
606!> \param sr8 ...
607!> \param ref_functional ...
608! **************************************************************************************************
609 SUBROUTINE qs_scaling_dftd3(s6, sr6, s8, sr8, ref_functional)
610
611 REAL(kind=dp), INTENT(inout) :: s6, sr6, s8, sr8
612 CHARACTER(LEN=default_string_length), INTENT(in) :: ref_functional
613
614 CHARACTER(LEN=default_string_length) :: functional
615
616 functional = ref_functional
617 CALL uppercase(functional)
618 sr8 = 1.0_dp
619 ! values for different functionals from:
620 ! https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/zero_damping
621 ! L. Goerigk et al. PCCP 2017, 32147-32744, SI
622 ! alternatively see the parameter file for the s-dftd3 program:
623 ! https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml
624 SELECT CASE (trim(functional))
625 CASE DEFAULT
626 cpabort("No DFT-D3 values available for this functional:"//trim(ref_functional))
627 CASE ("B1B95")
628 s6 = 1.000_dp
629 sr6 = 1.613_dp
630 s8 = 1.868_dp
631 CASE ("B2GPPLYP")
632 ! L. Goerigk and S. Grimme
633 ! J. Chem. Theory Comput. 2011, 7, 291-309; doi:10.1021/ct100466k
634 s6 = 0.56_dp
635 sr6 = 1.586_dp
636 s8 = 0.760_dp
637 CASE ("B2PLYP")
638 ! L. Goerigk and S. Grimme
639 ! J. Chem. Theory Comput. 2011, 7, 291-309; doi:10.1021/ct100466k
640 s6 = 0.64_dp
641 sr6 = 1.427_dp
642 s8 = 1.022_dp
643 CASE ("DSD-BLYP")
644 ! L. Goerigk and S. Grimme
645 ! J. Chem. Theory Comput. 2011, 7, 291-309; doi:10.1021/ct100466k
646 s6 = 0.50_dp
647 sr6 = 1.569_dp
648 s8 = 0.705_dp
649 CASE ("B3LYP")
650 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
651 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
652 s6 = 1.000_dp
653 sr6 = 1.261_dp
654 s8 = 1.703_dp
655 CASE ("B97-D")
656 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
657 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
658 s6 = 1.000_dp
659 sr6 = 0.892_dp
660 s8 = 0.909_dp
661 CASE ("BHLYP")
662 s6 = 1.000_dp
663 sr6 = 1.370_dp
664 s8 = 1.442_dp
665 CASE ("BLYP")
666 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
667 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
668 s6 = 1.000_dp
669 sr6 = 1.094_dp
670 s8 = 1.682_dp
671 CASE ("BP86")
672 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
673 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
674 s6 = 1.000_dp
675 sr6 = 1.139_dp
676 s8 = 1.683_dp
677 CASE ("BPBE")
678 s6 = 1.000_dp
679 sr6 = 1.087_dp
680 s8 = 2.033_dp
681 CASE ("MPWLYP")
682 s6 = 1.000_dp
683 sr6 = 1.239_dp
684 s8 = 1.098_dp
685 CASE ("PBE")
686 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
687 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
688 s6 = 1.000_dp
689 sr6 = 1.217_dp
690 s8 = 0.722_dp
691 CASE ("PBEHPBE")
692 s6 = 1.000_dp
693 sr6 = 1.5703_dp
694 s8 = 1.4010_dp
695 CASE ("PBE0")
696 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
697 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
698 s6 = 1.000_dp
699 sr6 = 1.287_dp
700 s8 = 0.928_dp
701 CASE ("PW6B95")
702 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
703 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
704 s6 = 1.000_dp
705 sr6 = 1.532_dp
706 s8 = 0.862_dp
707 CASE ("PWB6K")
708 s6 = 1.000_dp
709 sr6 = 1.660_dp
710 s8 = 0.550_dp
711 CASE ("REVPBE")
712 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
713 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
714 s6 = 1.000_dp
715 sr6 = 0.923_dp
716 s8 = 1.010_dp
717 CASE ("RPBE")
718 s6 = 1.000_dp
719 sr6 = 0.872_dp
720 s8 = 0.514_dp
721 CASE ("TPSS")
722 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
723 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
724 s6 = 1.000_dp
725 sr6 = 1.166_dp
726 s8 = 1.105_dp
727 CASE ("TPSS0")
728 ! S. Grimme, J. Antony, S. Ehrlich, and H. Krieg
729 ! J. Chem. Phys. 132,154104 (2010); doi:10.1063/1.3382344
730 s6 = 1.000_dp
731 sr6 = 1.252_dp
732 s8 = 1.242_dp
733 CASE ("TPSSH")
734 s6 = 1.000_dp
735 sr6 = 1.223_dp
736 s8 = 1.219_dp
737 CASE ("B1LYP")
738 s6 = 1.000_dp
739 sr6 = 1.3725_dp
740 s8 = 1.9467_dp
741 CASE ("B1P86")
742 s6 = 1.000_dp
743 sr6 = 1.1815_dp
744 s8 = 1.1209_dp
745 CASE ("B3P86")
746 s6 = 1.000_dp
747 sr6 = 1.1897_dp
748 s8 = 1.1961_dp
749 CASE ("B3PW91")
750 s6 = 1.000_dp
751 sr6 = 1.176_dp
752 s8 = 1.775_dp
753 CASE ("BMK")
754 s6 = 1.000_dp
755 sr6 = 1.931_dp
756 s8 = 2.168_dp
757 CASE ("CAMB3LYP")
758 s6 = 1.000_dp
759 sr6 = 1.378_dp
760 s8 = 1.217_dp
761 CASE ("LCWPBE")
762 s6 = 1.000_dp
763 sr6 = 1.355_dp
764 s8 = 1.279_dp
765 CASE ("M052X")
766 s6 = 1.000_dp
767 sr6 = 1.417_dp
768 s8 = 0.000_dp
769 CASE ("M05")
770 s6 = 1.000_dp
771 sr6 = 1.373_dp
772 s8 = 0.595_dp
773 CASE ("M062X")
774 s6 = 1.000_dp
775 sr6 = 1.619_dp
776 s8 = 0.000_dp
777 CASE ("M06HF")
778 s6 = 1.000_dp
779 sr6 = 1.446_dp
780 s8 = 0.000_dp
781 CASE ("M06L")
782 s6 = 1.000_dp
783 sr6 = 1.581_dp
784 s8 = 0.000_dp
785 CASE ("M06N")
786 s6 = 1.000_dp
787 sr6 = 1.325_dp
788 s8 = 0.000_dp
789 CASE ("HCTH120")
790 s6 = 1.000_dp
791 sr6 = 1.221_dp
792 s8 = 1.206_dp
793 CASE ("HCTH407")
794 s6 = 1.000_dp
795 sr6 = 4.0426_dp
796 s8 = 2.7694_dp
797 CASE ("MPW2PLYP")
798 s6 = 1.000_dp
799 sr6 = 1.5527_dp
800 s8 = 0.7529_dp
801 CASE ("PKZB")
802 s6 = 1.000_dp
803 sr6 = 0.6327_dp
804 s8 = 0.000_dp
805 CASE ("PTPSS")
806 s6 = 0.750_dp
807 sr6 = 1.541_dp
808 s8 = 0.879_dp
809 CASE ("PWPB95")
810 s6 = 0.820_dp
811 sr6 = 1.557_dp
812 s8 = 0.705_dp
813 CASE ("OLYP")
814 s6 = 1.000_dp
815 sr6 = 0.806_dp
816 s8 = 1.764_dp
817 CASE ("OPBE")
818 s6 = 1.000_dp
819 sr6 = 0.837_dp
820 s8 = 2.055_dp
821 CASE ("OTPSS")
822 s6 = 1.000_dp
823 sr6 = 1.128_dp
824 s8 = 1.494_dp
825 CASE ("PBE1KCIS")
826 s6 = 1.000_dp
827 sr6 = 3.6355_dp
828 s8 = 1.7934_dp
829 CASE ("PBE38")
830 s6 = 1.000_dp
831 sr6 = 1.333_dp
832 s8 = 0.998_dp
833 CASE ("PBEH1PBE")
834 s6 = 1.000_dp
835 sr6 = 1.3719_dp
836 s8 = 1.0430_dp
837 CASE ("PBESOL")
838 s6 = 1.000_dp
839 sr6 = 1.345_dp
840 s8 = 0.612_dp
841 CASE ("REVSSB")
842 s6 = 1.000_dp
843 sr6 = 1.221_dp
844 s8 = 0.560_dp
845 CASE ("REVTPSS")
846 s6 = 1.000_dp
847 sr6 = 1.3491_dp
848 s8 = 1.3666_dp
849 CASE ("SSB")
850 s6 = 1.000_dp
851 sr6 = 1.215_dp
852 s8 = 0.663_dp
853 CASE ("B97-1")
854 s6 = 1.000_dp
855 sr6 = 3.7924_dp
856 s8 = 1.6418_dp
857 CASE ("B97-2")
858 s6 = 1.000_dp
859 sr6 = 1.7066_dp
860 s8 = 2.4661_dp
861 CASE ("B98")
862 s6 = 1.000_dp
863 sr6 = 2.6895_dp
864 s8 = 1.9078_dp
865 CASE ("BOP")
866 s6 = 1.000_dp
867 sr6 = 0.929_dp
868 s8 = 1.975_dp
869 CASE ("HISS")
870 s6 = 1.000_dp
871 sr6 = 1.3338_dp
872 s8 = 0.7615_dp
873 CASE ("HSE03")
874 s6 = 1.000_dp
875 sr6 = 1.3944_dp
876 s8 = 1.0156_dp
877 CASE ("HSE06")
878 s6 = 1.000_dp
879 sr6 = 1.129_dp
880 s8 = 0.109_dp
881 CASE ("M08HX")
882 s6 = 1.000_dp
883 sr6 = 1.6247_dp
884 s8 = 0.000_dp
885 CASE ("MN15L")
886 s6 = 1.000_dp
887 sr6 = 3.3388_dp
888 s8 = 0.000_dp
889 CASE ("MPWPW91")
890 s6 = 1.0000_dp
891 sr6 = 1.3725_dp
892 s8 = 1.9467_dp
893 CASE ("MPW1B95")
894 s6 = 1.000_dp
895 sr6 = 1.605_dp
896 s8 = 1.118_dp
897 CASE ("MPW1KCIS")
898 s6 = 1.000_dp
899 sr6 = 1.7231_dp
900 s8 = 2.2917_dp
901 CASE ("MPW1LYP")
902 s6 = 1.000_dp
903 sr6 = 2.0512_dp
904 s8 = 1.9529_dp
905 CASE ("MPW1PW91")
906 s6 = 1.000_dp
907 sr6 = 1.2892_dp
908 s8 = 1.4758_dp
909 CASE ("MPWB1K")
910 s6 = 1.000_dp
911 sr6 = 1.671_dp
912 s8 = 1.061_dp
913 CASE ("MPWKCIS1K")
914 s6 = 1.000_dp
915 sr6 = 1.4853_dp
916 s8 = 1.7553_dp
917 CASE ("O3LYP")
918 s6 = 1.000_dp
919 sr6 = 1.4060_dp
920 s8 = 1.8058_dp
921 CASE ("PW1PW")
922 s6 = 1.000_dp
923 sr6 = 1.4968_dp
924 s8 = 1.1786_dp
925 CASE ("PW91P86")
926 s6 = 1.0000_dp
927 sr6 = 2.1040_dp
928 s8 = 0.8747_dp
929 CASE ("REVPBE0")
930 s6 = 1.000_dp
931 sr6 = 0.949_dp
932 s8 = 0.792_dp
933 CASE ("REVPBE38")
934 s6 = 1.000_dp
935 sr6 = 1.021_dp
936 s8 = 0.862_dp
937 CASE ("REVTPSSH")
938 s6 = 1.000_dp
939 sr6 = 1.3224_dp
940 s8 = 1.2504_dp
941 CASE ("REVTPSS0")
942 s6 = 1.000_dp
943 sr6 = 1.2881_dp
944 s8 = 1.0649_dp
945 CASE ("TPSS1KCIS")
946 s6 = 1.000_dp
947 sr6 = 1.7729_dp
948 s8 = 2.0902_dp
949 CASE ("THCTHHYB")
950 s6 = 1.000_dp
951 sr6 = 1.5001_dp
952 s8 = 1.6302_dp
953 CASE ("RPW86PBE")
954 s6 = 1.000_dp
955 sr6 = 1.224_dp
956 s8 = 0.901_dp
957 CASE ("SCAN")
958 s6 = 1.000_dp
959 sr6 = 1.324_dp
960 s8 = 0.000_dp
961 CASE ("THCTH")
962 s6 = 1.000_dp
963 sr6 = 0.932_dp
964 s8 = 0.5662_dp
965 CASE ("WB97X")
966 ! wB97X-D3 (doi:10.1021/ct300715s)
967 s6 = 1.000_dp
968 sr6 = 1.281_dp
969 s8 = 1.000_dp
970 sr8 = 1.094_dp
971 CASE ("XLYP")
972 s6 = 1.0000_dp
973 sr6 = 0.9384_dp
974 s8 = 0.7447_dp
975 CASE ("X3LYP")
976 s6 = 1.000_dp
977 sr6 = 1.0000_dp
978 s8 = 0.2990_dp
979 END SELECT
980
981 END SUBROUTINE qs_scaling_dftd3
982
983! **************************************************************************************************
984!> \brief ...
985!> \param s6 ...
986!> \param a1 ...
987!> \param s8 ...
988!> \param a2 ...
989!> \param ref_functional ...
990! **************************************************************************************************
991 SUBROUTINE qs_scaling_dftd3bj(s6, a1, s8, a2, ref_functional)
992 REAL(kind=dp), INTENT(inout) :: s6, a1, s8, a2
993 CHARACTER(LEN=default_string_length), INTENT(in) :: ref_functional
994
995 CHARACTER(LEN=default_string_length) :: functional
996
997 functional = ref_functional
998 CALL uppercase(functional)
999
1000 ! values for different functionals from:
1001 ! https://www.chemie.uni-bonn.de/grimme/de/software/dft-d3/bj_damping
1002 ! L. Goerigk et al. PCCP 2017, 32147-32744, SI
1003 ! alternatively see the parameter file for the s-dftd3 program:
1004 ! https://github.com/dftd3/simple-dftd3/blob/main/assets/parameters.toml
1005 SELECT CASE (trim(functional))
1006 CASE DEFAULT
1007 cpabort("No DFT-D3(BJ) values available for this functional:"//trim(functional))
1008 CASE ("B1B95")
1009 s6 = 1.0000_dp
1010 a1 = 0.2092_dp
1011 s8 = 1.4507_dp
1012 a2 = 5.5545_dp
1013 CASE ("B2GPPLYP")
1014 s6 = 0.5600_dp
1015 a1 = 0.0000_dp
1016 s8 = 0.2597_dp
1017 a2 = 6.3332_dp
1018 CASE ("B3PW91")
1019 s6 = 1.0000_dp
1020 a1 = 0.4312_dp
1021 s8 = 2.8524_dp
1022 a2 = 4.4693_dp
1023 CASE ("BHLYP")
1024 s6 = 1.0000_dp
1025 a1 = 0.2793_dp
1026 s8 = 1.0354_dp
1027 a2 = 4.9615_dp
1028 CASE ("BMK")
1029 s6 = 1.0000_dp
1030 a1 = 0.1940_dp
1031 s8 = 2.0860_dp
1032 a2 = 5.9197_dp
1033 CASE ("BOP")
1034 s6 = 1.0000_dp
1035 a1 = 0.4870_dp
1036 s8 = 3.2950_dp
1037 a2 = 3.5043_dp
1038 CASE ("BPBE")
1039 s6 = 1.0000_dp
1040 a1 = 0.4567_dp
1041 s8 = 4.0728_dp
1042 a2 = 4.3908_dp
1043 CASE ("B97-3C")
1044 s6 = 1.0000_dp
1045 a1 = 0.3700_dp
1046 s8 = 1.5000_dp
1047 a2 = 4.1000_dp
1048 CASE ("CAMB3LYP")
1049 s6 = 1.0000_dp
1050 a1 = 0.3708_dp
1051 s8 = 2.0674_dp
1052 a2 = 5.4743_dp
1053 CASE ("DSDBLYP")
1054 s6 = 0.5000_dp
1055 a1 = 0.0000_dp
1056 s8 = 0.2130_dp
1057 a2 = 6.0519_dp
1058 CASE ("DSDPBEP86")
1059 s6 = 0.4180_dp
1060 a1 = 0.0000_dp
1061 s8 = 0.0000_dp
1062 a2 = 5.6500_dp
1063 CASE ("DSDPBEB95")
1064 s6 = 0.6100_dp
1065 a1 = 0.0000_dp
1066 s8 = 0.0000_dp
1067 a2 = 6.2000_dp
1068 CASE ("LCWPBE")
1069 s6 = 1.0000_dp
1070 a1 = 0.3919_dp
1071 s8 = 1.8541_dp
1072 a2 = 5.0897_dp
1073 CASE ("LCWHPBE")
1074 s6 = 1.0000_dp
1075 a1 = 0.2746_dp
1076 s8 = 1.1908_dp
1077 a2 = 5.3157_dp
1078 CASE ("MPW1B95")
1079 s6 = 1.0000_dp
1080 a1 = 0.1955_dp
1081 s8 = 1.0508_dp
1082 a2 = 6.4177_dp
1083 CASE ("MPW2PLYP")
1084 s6 = 0.6600_dp
1085 a1 = 0.4105_dp
1086 s8 = 0.6223_dp
1087 a2 = 5.0136_dp
1088 CASE ("MPWB1K")
1089 s6 = 1.0000_dp
1090 a1 = 0.1474_dp
1091 s8 = 0.9499_dp
1092 a2 = 6.6223_dp
1093 CASE ("MPWLYP")
1094 s6 = 1.0000_dp
1095 a1 = 0.4831_dp
1096 s8 = 2.0077_dp
1097 a2 = 4.5323_dp
1098 CASE ("OLYP")
1099 s6 = 1.0000_dp
1100 a1 = 0.5299_dp
1101 s8 = 2.6205_dp
1102 a2 = 2.8065_dp
1103 CASE ("OPBE")
1104 s6 = 1.0000_dp
1105 a1 = 0.5512_dp
1106 s8 = 3.3816_dp
1107 a2 = 2.9444_dp
1108 CASE ("OTPSS")
1109 s6 = 1.0000_dp
1110 a1 = 0.4634_dp
1111 s8 = 2.7495_dp
1112 a2 = 4.3153_dp
1113 CASE ("PBE38")
1114 s6 = 1.0000_dp
1115 a1 = 0.3995_dp
1116 s8 = 1.4623_dp
1117 a2 = 5.1405_dp
1118 CASE ("PBESOL")
1119 s6 = 1.0000_dp
1120 a1 = 0.4466_dp
1121 s8 = 2.9491_dp
1122 a2 = 6.1742_dp
1123 CASE ("PTPSS")
1124 s6 = 0.7500_dp
1125 a1 = 0.0000_dp
1126 s8 = 0.2804_dp
1127 a2 = 6.5745_dp
1128 CASE ("PWB6K")
1129 s6 = 1.0000_dp
1130 a1 = 0.1805_dp
1131 s8 = 0.9383_dp
1132 a2 = 7.7627_dp
1133 CASE ("REVSSB")
1134 s6 = 1.0000_dp
1135 a1 = 0.4720_dp
1136 s8 = 0.4389_dp
1137 a2 = 4.0986_dp
1138 CASE ("SSB")
1139 s6 = 1.0000_dp
1140 a1 = -0.0952_dp
1141 s8 = -0.1744_dp
1142 a2 = 5.2170_dp
1143 CASE ("TPSSH")
1144 s6 = 1.0000_dp
1145 a1 = 0.4529_dp
1146 s8 = 2.2382_dp
1147 a2 = 4.6550_dp
1148 CASE ("HCTH120")
1149 s6 = 1.0000_dp
1150 a1 = 0.3563_dp
1151 s8 = 1.0821_dp
1152 a2 = 4.3359_dp
1153 CASE ("B2PLYP")
1154 s6 = 0.6400_dp
1155 a1 = 0.3065_dp
1156 s8 = 0.9147_dp
1157 a2 = 5.0570_dp
1158 CASE ("B1LYP")
1159 s6 = 1.0000_dp
1160 a1 = 0.1986_dp
1161 s8 = 2.1167_dp
1162 a2 = 5.3875_dp
1163 CASE ("B1P86")
1164 s6 = 1.0000_dp
1165 a1 = 0.4724_dp
1166 s8 = 3.5681_dp
1167 a2 = 4.9858_dp
1168 CASE ("B3LYP", "SKALA", "SKALA-1.1", "SKALA1.1")
1169 s6 = 1.0000_dp
1170 a1 = 0.3981_dp
1171 s8 = 1.9889_dp
1172 a2 = 4.4211_dp
1173 CASE ("B3P86")
1174 s6 = 1.0000_dp
1175 a1 = 0.4601_dp
1176 s8 = 3.3211_dp
1177 a2 = 4.9294_dp
1178 CASE ("B97-1")
1179 s6 = 1.0000_dp
1180 a1 = 0.0000_dp
1181 s8 = 0.4814_dp
1182 a2 = 6.2279_dp
1183 CASE ("B97-2")
1184 s6 = 1.0000_dp
1185 a1 = 0.0000_dp
1186 s8 = 0.9448_dp
1187 a2 = 5.4603_dp
1188 CASE ("B97-D")
1189 s6 = 1.0000_dp
1190 a1 = 0.5545_dp
1191 s8 = 2.2609_dp
1192 a2 = 3.2297_dp
1193 CASE ("B98")
1194 s6 = 1.0000_dp
1195 a1 = 0.0000_dp
1196 s8 = 0.7086_dp
1197 a2 = 6.0672_dp
1198 CASE ("BLYP")
1199 s6 = 1.0000_dp
1200 a1 = 0.4298_dp
1201 s8 = 2.6996_dp
1202 a2 = 4.2359_dp
1203 CASE ("BP86")
1204 s6 = 1.0000_dp
1205 a1 = 0.3946_dp
1206 s8 = 3.2822_dp
1207 a2 = 4.8516_dp
1208 CASE ("DSD-BLYP")
1209 s6 = 0.5000_dp
1210 a1 = 0.0000_dp
1211 s8 = 0.2130_dp
1212 a2 = 6.0519_dp
1213 CASE ("HCTH407")
1214 s6 = 1.0000_dp
1215 a1 = 0.0000_dp
1216 s8 = 0.6490_dp
1217 a2 = 4.8162_dp
1218 CASE ("HISS")
1219 s6 = 1.0000_dp
1220 a1 = 0.0000_dp
1221 s8 = 1.6112_dp
1222 a2 = 7.3539_dp
1223 CASE ("HSE03")
1224 s6 = 1.0000_dp
1225 a1 = 0.0000_dp
1226 s8 = 1.1243_dp
1227 a2 = 6.8889_dp
1228 CASE ("HSE06")
1229 s6 = 1.0000_dp
1230 a1 = 0.3830_dp
1231 s8 = 2.3100_dp
1232 a2 = 5.6850_dp
1233 CASE ("M11")
1234 s6 = 1.0000_dp
1235 a1 = 0.0000_dp
1236 s8 = 2.8112_dp
1237 a2 = 10.1389_dp
1238 CASE ("MN12SX")
1239 s6 = 1.0000_dp
1240 a1 = 0.0983_dp
1241 s8 = 1.1674_dp
1242 a2 = 8.0259_dp
1243 CASE ("MN15")
1244 s6 = 1.0000_dp
1245 a1 = 2.0971_dp
1246 s8 = 0.7862_dp
1247 a2 = 7.5923_dp
1248 CASE ("MPWPW91")
1249 s6 = 1.0000_dp
1250 a1 = 0.3168_dp
1251 s8 = 1.7974_dp
1252 a2 = 4.7732_dp
1253 CASE ("MPW1PW91")
1254 s6 = 1.0000_dp
1255 a1 = 0.3342_dp
1256 s8 = 1.8744_dp
1257 a2 = 4.9819_dp
1258 CASE ("MPW1KCIS")
1259 s6 = 1.0000_dp
1260 a1 = 0.0576_dp
1261 s8 = 1.0893_dp
1262 a2 = 5.5314_dp
1263 CASE ("MPWKCIS1K")
1264 s6 = 1.0000_dp
1265 a1 = 0.0855_dp
1266 s8 = 1.2875_dp
1267 a2 = 5.8961_dp
1268 CASE ("N12SX")
1269 s6 = 1.0000_dp
1270 a1 = 0.3283_dp
1271 s8 = 2.4900_dp
1272 a2 = 5.7898_dp
1273 CASE ("O3LYP")
1274 s6 = 1.0000_dp
1275 a1 = 0.0963_dp
1276 s8 = 1.8171_dp
1277 a2 = 5.9940_dp
1278 CASE ("PBE0")
1279 s6 = 1.0000_dp
1280 a1 = 0.4145_dp
1281 s8 = 1.2177_dp
1282 a2 = 4.8593_dp
1283 CASE ("PBE")
1284 s6 = 1.0000_dp
1285 a1 = 0.4289_dp
1286 s8 = 0.7875_dp
1287 a2 = 4.4407_dp
1288 CASE ("PBEHPBE")
1289 s6 = 1.0000_dp
1290 a1 = 0.0000_dp
1291 s8 = 1.1152_dp
1292 a2 = 6.7184_dp
1293 CASE ("PBEH1PBE")
1294 s6 = 1.0000_dp
1295 a1 = 0.0000_dp
1296 s8 = 1.4877_dp
1297 a2 = 7.0385_dp
1298 CASE ("PBE1KCIS")
1299 s6 = 1.0000_dp
1300 a1 = 0.0000_dp
1301 s8 = 0.7688_dp
1302 a2 = 6.2794_dp
1303 CASE ("PW1PW")
1304 s6 = 1.0000_dp
1305 a1 = 0.3807_dp
1306 s8 = 2.3363_dp
1307 a2 = 5.8844_dp
1308 CASE ("PW6B95")
1309 s6 = 1.0000_dp
1310 a1 = 0.2076_dp
1311 s8 = 0.7257_dp
1312 a2 = 6.3750_dp
1313 CASE ("PWPB95")
1314 s6 = 0.8200_dp
1315 a1 = 0.0000_dp
1316 s8 = 0.2904_dp
1317 a2 = 7.3141_dp
1318 CASE ("R2SCAN")
1319 ! J. Chem. Phys. 154, 061101 (2021), doi: 10.1063/5.0041008
1320 s6 = 1.00000000_dp
1321 a1 = 0.49484001_dp
1322 s8 = 0.78981345_dp
1323 a2 = 5.73083694_dp
1324 CASE ("R2SCAN0")
1325 ! J. Chem. Phys. 156, 134105 (2022), doi: 10.1063/5.0086040
1326 s6 = 1.0000_dp
1327 a1 = 0.4534_dp
1328 s8 = 1.1846_dp
1329 a2 = 5.8972_dp
1330 CASE ("R2SCAN50")
1331 ! J. Chem. Phys. 156, 134105 (2022), doi: 10.1063/5.0086040
1332 s6 = 1.0000_dp
1333 a1 = 0.4311_dp
1334 s8 = 1.3294_dp
1335 a2 = 5.9240_dp
1336 CASE ("R2SCANH")
1337 ! J. Chem. Phys. 156, 134105 (2022), doi: 10.1063/5.0086040
1338 s6 = 1.0000_dp
1339 a1 = 0.4709_dp
1340 s8 = 1.1236_dp
1341 a2 = 5.9157_dp
1342 CASE ("REVPBE0")
1343 s6 = 1.0000_dp
1344 a1 = 0.4679_dp
1345 s8 = 1.7588_dp
1346 a2 = 3.7619_dp
1347 CASE ("REVPBE38")
1348 s6 = 1.0000_dp
1349 a1 = 0.4309_dp
1350 s8 = 1.4760_dp
1351 a2 = 3.9446_dp
1352 CASE ("REVPBE")
1353 s6 = 1.0000_dp
1354 a1 = 0.5238_dp
1355 s8 = 2.3550_dp
1356 a2 = 3.5016_dp
1357 CASE ("REVTPSS")
1358 s6 = 1.0000_dp
1359 a1 = 0.4426_dp
1360 s8 = 1.4023_dp
1361 a2 = 4.4723_dp
1362 CASE ("REVTPSS0")
1363 s6 = 1.0000_dp
1364 a1 = 0.2218_dp
1365 s8 = 1.6151_dp
1366 a2 = 5.7985_dp
1367 CASE ("REVTPSSH")
1368 s6 = 1.0000_dp
1369 a1 = 0.2660_dp
1370 s8 = 1.4076_dp
1371 a2 = 5.3761_dp
1372 CASE ("RPBE")
1373 s6 = 1.0000_dp
1374 a1 = 0.1820_dp
1375 s8 = 0.8318_dp
1376 a2 = 4.0094_dp
1377 CASE ("RPW86PBE")
1378 s6 = 1.0000_dp
1379 a1 = 0.4613_dp
1380 s8 = 1.3845_dp
1381 a2 = 4.5062_dp
1382 CASE ("RSCAN")
1383 ! J. Chem. Phys. 154, 061101 (2021), doi: 10.1063/5.0041008
1384 s6 = 1.00000000_dp
1385 a1 = 0.47023427_dp
1386 s8 = 1.08859014_dp
1387 a2 = 5.73408312_dp
1388 CASE ("SCAN")
1389 s6 = 1.0000_dp
1390 a1 = 0.538_dp
1391 s8 = 0.0000_dp
1392 a2 = 5.420_dp
1393 CASE ("SOGGA11X")
1394 s6 = 1.0000_dp
1395 a1 = 0.1330_dp
1396 s8 = 1.1426_dp
1397 a2 = 5.7381_dp
1398 CASE ("TPSS0")
1399 s6 = 1.0000_dp
1400 a1 = 0.3768_dp
1401 s8 = 1.2576_dp
1402 a2 = 4.5865_dp
1403 CASE ("TPSS1KCIS")
1404 s6 = 1.0000_dp
1405 a1 = 0.0000_dp
1406 s8 = 1.0542_dp
1407 a2 = 6.0201_dp
1408 CASE ("TPSS")
1409 s6 = 1.0000_dp
1410 a1 = 0.4535_dp
1411 s8 = 1.9435_dp
1412 a2 = 4.4752_dp
1413 CASE ("THCTH")
1414 s6 = 1.0000_dp
1415 a1 = 0.0000_dp
1416 s8 = 1.2626_dp
1417 a2 = 5.6162_dp
1418 CASE ("THCTHHYB")
1419 s6 = 1.0000_dp
1420 a1 = 0.0000_dp
1421 s8 = 0.9585_dp
1422 a2 = 6.2303_dp
1423 CASE ("WB97X")
1424 s6 = 1.0000_dp
1425 a1 = 0.0000_dp
1426 s8 = 0.2641_dp
1427 a2 = 5.4959_dp
1428 CASE ("XLYP")
1429 s6 = 1.0000_dp
1430 a1 = 0.0809_dp
1431 s8 = 1.5669_dp
1432 a2 = 5.3166_dp
1433 CASE ("X3LYP")
1434 s6 = 1.0000_dp
1435 a1 = 0.2022_dp
1436 s8 = 1.5744_dp
1437 a2 = 5.4184_dp
1438 END SELECT
1439
1440 END SUBROUTINE qs_scaling_dftd3bj
1441
1442! **************************************************************************************************
1443!> \brief ...
1444!> \param cell ...
1445!> \param ncell ...
1446!> \return ...
1447! **************************************************************************************************
1448 FUNCTION cellhash(cell, ncell) RESULT(hash)
1449 INTEGER, DIMENSION(3), INTENT(IN) :: cell, ncell
1450 INTEGER :: hash
1451
1452 INTEGER :: ix, iy, iz, nx, ny, nz
1453
1454 cpassert(all(abs(cell) <= ncell))
1455
1456 ix = cell(1)
1457 IF (ix /= 0) THEN
1458 ix = 2*abs(ix) - (1 + sign(1, ix))/2
1459 END IF
1460 iy = cell(2)
1461 IF (iy /= 0) THEN
1462 iy = 2*abs(iy) - (1 + sign(1, iy))/2
1463 END IF
1464 iz = cell(3)
1465 IF (iz /= 0) THEN
1466 iz = 2*abs(iz) - (1 + sign(1, iz))/2
1467 END IF
1468
1469 nx = 2*ncell(1) + 1
1470 ny = 2*ncell(2) + 1
1471 nz = 2*ncell(3) + 1
1472
1473 hash = ix*ny*nz + iy*nz + iz + 1
1474
1475 END FUNCTION cellhash
1476! **************************************************************************************************
1477
1478END MODULE qs_dispersion_utils
static unsigned int hash(const dbm_task_t task)
Private hash function based on Szudzik's elegant pairing. Using unsigned int to return a positive num...
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public xc_funct_tpss
integer, parameter, public xc_funct_bp
integer, parameter, public vdw_nl_rvv10
integer, parameter, public xc_funct_pbe
integer, parameter, public vdw_pairpot_dftd3
integer, parameter, public xc_funct_no_shortcut
integer, parameter, public xc_vdw_fun_nonloc
integer, parameter, public vdw_pairpot_dftd2chg
integer, parameter, public xc_funct_pbe0
integer, parameter, public vdw_pairpot_dftd4
integer, parameter, public xc_funct_blyp
integer, parameter, public vdw_nl_drsll
integer, parameter, public vdw_nl_lmkll
integer, parameter, public vdw_pairpot_dftd2
integer, parameter, public xc_vdw_fun_pairpot
integer, parameter, public xc_funct_b3lyp
integer, parameter, public xc_none
integer, parameter, public vdw_pairpot_dftd3bj
objects that represent the structure of input sections and the data contained in an input section
recursive type(section_vals_type) function, pointer, public section_vals_get_subs_vals(section_vals, subsection_name, i_rep_section, can_return_null)
returns the values of the requested subsection
subroutine, public section_vals_val_get(section_vals, keyword_name, i_rep_section, i_rep_val, n_rep_val, val, l_val, i_val, r_val, c_val, l_vals, i_vals, r_vals, c_vals, explicit)
returns the requested value
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
integer, parameter, public default_string_length
Definition kinds.F:57
Definition of physical constants:
Definition physcon.F:68
real(kind=dp), parameter, public kjmol
Definition physcon.F:168
real(kind=dp), parameter, public bohr
Definition physcon.F:147
Definition of disperson types for DFT calculations.
Set disperson types for DFT calculations.
subroutine, public qs_dispersion_env_set(dispersion_env, xc_section)
...
subroutine, public xc_functional_to_d_name(xc_functional_name, d_functional_name)
...
integer function, public cellhash(cell, ncell)
...
subroutine, public qs_write_dispersion(qs_env, dispersion_env, ounit)
...
subroutine, public qs_scaling_dftd3(s6, sr6, s8, sr8, ref_functional)
...
subroutine, public qs_scaling_dftd3bj(s6, a1, s8, a2, ref_functional)
...
subroutine, public xc_functional_detect_expanded(xc_fun_section, xc_functional_name)
...
subroutine, public xc_functional_to_d4_name_int(xc_functional_id, xc_functional_name)
...
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, mimic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, cneo_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, hund_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, proj_shell_charge, lr_atom, do_mtlr, u_j_loop, ao_coef, init_u_ramping_each_scf, reltmat, ghost, monovalent, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
Utilities for string manipulations.
elemental subroutine, public lowercase(string)
Convert all upper case characters in a string to lower case.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
Provides all information about an atomic kind.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Provides all information about a quickstep kind.