40#include "./base/base_uses.f90"
46 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dispersion_utils'
60 CHARACTER(len=*),
INTENT(IN) :: xc_functional_name
61 CHARACTER(len=*),
INTENT(OUT) :: d_functional_name
63 IF (trim(adjustl(xc_functional_name)) ==
"BP")
THEN
64 d_functional_name =
"bp86"
66 d_functional_name = trim(adjustl(xc_functional_name))
78 INTEGER,
INTENT(IN) :: xc_functional_id
79 CHARACTER(len=*),
INTENT(OUT) :: xc_functional_name
81 SELECT CASE (xc_functional_id)
83 xc_functional_name =
"PBE"
85 xc_functional_name =
"PBE0"
87 xc_functional_name =
"B3LYP"
89 xc_functional_name =
"BLYP"
91 xc_functional_name =
"BP"
93 xc_functional_name =
"TPSS"
95 xc_functional_name =
"NONE"
107 CHARACTER(len=*),
INTENT(OUT) :: xc_functional_name
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
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.
122 ALLOCATE (sub_names(xc_fun_section%section%n_subsections))
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.
143 IF (abs(scal_x_pbe - 0.75_dp) < 0.01_dp) has_pbe0_13 = .true.
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)
165 xc_functional_name =
"NONE"
178 CHARACTER(len=default_string_length) :: xc_functional_name
179 INTEGER :: xc_functional_id
180 LOGICAL :: exfun, explicit
181 REAL(
dp),
POINTER :: params(:), scal(:)
185 cpassert(
ASSOCIATED(dispersion_env))
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)
218 CALL section_vals_val_get(pp_section,
"EXP_PRE", r_val=dispersion_env%exp_pre, explicit=explicit)
220 IF (explicit) cpabort(
"D2_EXP_PRE is not applicable to DFTD2(CHG)")
221 dispersion_env%exp_pre = 0._dp
224 IF (.NOT. explicit)
THEN
226 IF (.NOT. exfun)
THEN
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")
237 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
238 c_val=dispersion_env%ref_functional)
241 xc_functional_name = dispersion_env%ref_functional
243 SELECT CASE (trim(xc_functional_name))
244 CASE (
"WB97X-D",
"WB97XD")
245 dispersion_env%scaling = 1._dp
247 CALL cp_abort(__location__, &
248 "DFTD2(CHG): set REFERENCE_FUNCTIONAL WB97X-D or D2_SCALING explicitly")
251 CALL qs_scaling_dftd2(dispersion_env%scaling, dispersion_env%ref_functional)
257 dispersion_env%exp_pre = 0._dp
258 dispersion_env%scaling = 0._dp
269 dispersion_env%srb_params(1:4) = params(1:4)
278 IF (.NOT. explicit)
THEN
280 IF (.NOT. exfun)
THEN
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")
291 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
292 c_val=dispersion_env%ref_functional)
295 l_val=dispersion_env%d3_reference_code)
296 IF (.NOT. dispersion_env%d3_reference_code)
THEN
298 CALL qs_scaling_dftd3(dispersion_env%s6, dispersion_env%sr6, dispersion_env%s8, &
299 dispersion_env%sr8, dispersion_env%ref_functional)
302 dispersion_env%a2, dispersion_env%ref_functional)
306 dispersion_env%d3_scaling_explicit = .true.
308 IF (.NOT. exfun)
THEN
310 IF (dispersion_env%ref_functional ==
"none")
THEN
311 dispersion_env%ref_functional =
""
315 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
316 c_val=dispersion_env%ref_functional)
319 l_val=dispersion_env%d3_reference_code)
320 IF (.NOT. dispersion_env%d3_reference_code)
THEN
322 CALL qs_scaling_dftd3(dispersion_env%s6, dispersion_env%sr6, dispersion_env%s8, &
323 dispersion_env%sr8, dispersion_env%ref_functional)
326 dispersion_env%a2, dispersion_env%ref_functional)
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
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
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
356 IF (.NOT. explicit)
THEN
358 IF (.NOT. exfun)
THEN
362 "PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", &
363 c_val=dispersion_env%ref_functional)
365 IF (trim(adjustl(dispersion_env%ref_functional)) ==
"none")
THEN
366 cpabort(
"D4: XC_FUNCTIONAL not supported. Set REFERENCE_FUNCTIONAL explicitly.")
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"
379 l_val=dispersion_env%d4_reference_code)
382 l_val=dispersion_env%d3_reference_code)
385 r_val=dispersion_env%d4_cutoff_width)
387 r_val=dispersion_env%d4_3b_cutoff_width)
395 dispersion_env%doabc = .true.
400 c_val=dispersion_env%parameter_file_name)
402 dispersion_env%dftd_section => pp_section
408 c_val=dispersion_env%kernel_file_name)
413 dispersion_env%b_value = params(1)
414 dispersion_env%c_value = params(2)
427 INTEGER,
INTENT(in),
OPTIONAL :: ounit
429 CHARACTER(LEN=2) :: symbol
430 INTEGER :: i, ikind, nkind, output_unit
434 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
437 IF (
PRESENT(ounit))
THEN
445 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
448 IF (output_unit > 0)
THEN
451 WRITE (output_unit, fmt=
"(' vdW POTENTIAL| ',T67,'Pair Potential')")
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')")
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)')")
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
466 WRITE (output_unit, fmt=
"(' vdW POTENTIAL| ',T35,'Exp Prefactor for Damping:',T73,F8.1)") &
467 dispersion_env%exp_pre
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)
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
479 WRITE (output_unit, fmt=
"(' vdW PARAMETER| ',T20,'Atom=',A2,T70,'not defined')")
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, :)
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, :)
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)')")
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)
533 cpabort(
"Unknown vdW nonlocal functional")
535 WRITE (output_unit, &
536 fmt=
"(' vdW POTENTIAL| ','DRSLL Functional: M. Dion et al, PRL 92: 246401 (2004)')")
538 WRITE (output_unit, &
539 fmt=
"(' vdW POTENTIAL| ','LMKLL Functional: K. Lee et al, PRB 82: 081101 (2010)')")
541 WRITE (output_unit, &
542 fmt=
"(' vdW POTENTIAL| ','RVV10 Functional: R. Sabatini et al, PRB 87: 041108(R) (2013)')")
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
557 IF (.NOT.
PRESENT(ounit))
THEN
559 "PRINT%DFT_CONTROL_PARAMETERS")
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
573 CHARACTER(LEN=default_string_length) :: functional
575 functional = ref_functional
577 SELECT CASE (trim(functional))
580 cpabort(
"No DFT-D2 s6 value available for this functional:"//trim(functional))
599 END SUBROUTINE qs_scaling_dftd2
611 REAL(kind=
dp),
INTENT(inout) :: s6, sr6, s8, sr8
612 CHARACTER(LEN=default_string_length),
INTENT(in) :: ref_functional
614 CHARACTER(LEN=default_string_length) :: functional
616 functional = ref_functional
624 SELECT CASE (trim(functional))
626 cpabort(
"No DFT-D3 values available for this functional:"//trim(ref_functional))
992 REAL(kind=
dp),
INTENT(inout) :: s6, a1, s8, a2
993 CHARACTER(LEN=default_string_length),
INTENT(in) :: ref_functional
995 CHARACTER(LEN=default_string_length) :: functional
997 functional = ref_functional
1005 SELECT CASE (trim(functional))
1007 cpabort(
"No DFT-D3(BJ) values available for this functional:"//trim(functional))
1168 CASE (
"B3LYP",
"SKALA",
"SKALA-1.1",
"SKALA1.1")
1449 INTEGER,
DIMENSION(3),
INTENT(IN) :: cell, ncell
1452 INTEGER :: ix, iy, iz, nx, ny, nz
1454 cpassert(all(abs(cell) <= ncell))
1458 ix = 2*abs(ix) - (1 + sign(1, ix))/2
1462 iy = 2*abs(iy) - (1 + sign(1, iy))/2
1466 iz = 2*abs(iz) - (1 + sign(1, iz))/2
1473 hash = ix*ny*nz + iy*nz + iz + 1
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,...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of physical constants:
real(kind=dp), parameter, public kjmol
real(kind=dp), parameter, public bohr
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.