(git:ccc2433)
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-2024 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 
14  USE atomic_kind_types, ONLY: atomic_kind_type,&
17  cp_logger_type
20  USE input_constants, ONLY: vdw_nl_drsll,&
21  vdw_nl_lmkll,&
22  vdw_nl_rvv10,&
29  section_vals_type,&
31  USE kinds, ONLY: dp
32  USE physcon, ONLY: bohr,&
33  kjmol
37  USE qs_dispersion_types, ONLY: qs_atom_dispersion_type,&
38  qs_dispersion_type
39  USE qs_environment_types, ONLY: get_qs_env,&
40  qs_environment_type
41  USE qs_kind_types, ONLY: get_qs_kind,&
42  qs_kind_type
43 #include "./base/base_uses.f90"
44 
45  IMPLICIT NONE
46 
47  PRIVATE
48 
49  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_dispersion_utils'
50 
52 
53 ! **************************************************************************************************
54 CONTAINS
55 ! **************************************************************************************************
56 !> \brief ...
57 !> \param dispersion_env ...
58 !> \param xc_section ...
59 ! **************************************************************************************************
60  SUBROUTINE qs_dispersion_env_set(dispersion_env, xc_section)
61  TYPE(qs_dispersion_type), POINTER :: dispersion_env
62  TYPE(section_vals_type), POINTER :: xc_section
63 
64  LOGICAL :: exfun, explicit
65  REAL(dp), POINTER :: params(:), scal(:)
66  TYPE(section_vals_type), POINTER :: nl_section, pp_section, vdw_section, &
67  xc_fun_section
68 
69  cpassert(ASSOCIATED(dispersion_env))
70 
71  ! set general defaults
72  dispersion_env%doabc = .false.
73  dispersion_env%c9cnst = .false.
74  dispersion_env%lrc = .false.
75  dispersion_env%srb = .false.
76  dispersion_env%verbose = .false.
77  dispersion_env%nd3_exclude_pair = 0
78  NULLIFY (dispersion_env%c6ab, dispersion_env%maxci, dispersion_env%r0ab, dispersion_env%rcov, &
79  dispersion_env%r2r4, dispersion_env%cn, dispersion_env%cnkind, dispersion_env%cnlist, &
80  dispersion_env%d3_exclude_pair)
81  NULLIFY (dispersion_env%q_mesh, dispersion_env%kernel, dispersion_env%d2phi_dk2, &
82  dispersion_env%d2y_dx2)
83  NULLIFY (dispersion_env%sab_vdw, dispersion_env%sab_cn)
84  NULLIFY (dispersion_env%dftd_section)
85  NULLIFY (vdw_section, xc_fun_section)
86  vdw_section => section_vals_get_subs_vals(xc_section, "vdw_potential")
87  xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL")
88  CALL section_vals_val_get(vdw_section, "POTENTIAL_TYPE", i_val=dispersion_env%type)
89  IF (dispersion_env%type == xc_vdw_fun_pairpot) THEN
90  NULLIFY (pp_section)
91  pp_section => section_vals_get_subs_vals(vdw_section, "PAIR_POTENTIAL")
92  CALL section_vals_val_get(pp_section, "VERBOSE_OUTPUT", l_val=dispersion_env%verbose)
93  CALL section_vals_val_get(pp_section, "TYPE", i_val=dispersion_env%pp_type)
94  IF (dispersion_env%pp_type == vdw_pairpot_dftd2) THEN
95  ! functional parameters for Grimme D2 type
96  CALL section_vals_val_get(pp_section, "EXP_PRE", r_val=dispersion_env%exp_pre)
97  CALL section_vals_val_get(pp_section, "SCALING", explicit=explicit)
98  IF (.NOT. explicit) THEN
99  CALL section_vals_val_get(pp_section, "REFERENCE_FUNCTIONAL", explicit=exfun)
100  cpassert(exfun)
101  CALL qs_scaling_init(dispersion_env%scaling, vdw_section)
102  ELSE
103  CALL section_vals_val_get(pp_section, "SCALING", r_val=dispersion_env%scaling)
104  END IF
105  ELSE
106  dispersion_env%exp_pre = 0._dp
107  dispersion_env%scaling = 0._dp
108  END IF
109  IF (dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
110  dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
111  ! functional parameters for Grimme DFT-D3 type
112  CALL section_vals_val_get(pp_section, "EPS_CN", r_val=dispersion_env%eps_cn)
113  CALL section_vals_val_get(pp_section, "CALCULATE_C9_TERM", l_val=dispersion_env%doabc)
114  CALL section_vals_val_get(pp_section, "REFERENCE_C9_TERM", l_val=dispersion_env%c9cnst)
115  CALL section_vals_val_get(pp_section, "LONG_RANGE_CORRECTION", l_val=dispersion_env%lrc)
116  CALL section_vals_val_get(pp_section, "SHORT_RANGE_CORRECTION", l_val=dispersion_env%srb)
117  CALL section_vals_val_get(pp_section, "SHORT_RANGE_CORRECTION_PARAMETERS", r_vals=params)
118  dispersion_env%srb_params(1:4) = params(1:4)
119  ! KG corrections
120  CALL section_vals_val_get(pp_section, "MOLECULE_CORRECTION", l_val=dispersion_env%domol)
121  CALL section_vals_val_get(pp_section, "MOLECULE_CORRECTION_C8", r_val=dispersion_env%kgc8)
122  IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
123  CALL section_vals_val_get(pp_section, "D3_SCALING", explicit=explicit)
124  ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
125  CALL section_vals_val_get(pp_section, "D3BJ_SCALING", explicit=explicit)
126  END IF
127  IF (.NOT. explicit) THEN
128  CALL section_vals_val_get(pp_section, "REFERENCE_FUNCTIONAL", explicit=exfun)
129  cpassert(exfun)
130  IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
131  CALL qs_scaling_dftd3(dispersion_env%s6, dispersion_env%sr6, dispersion_env%s8, vdw_section)
132  ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
133  CALL qs_scaling_dftd3bj(dispersion_env%s6, dispersion_env%a1, dispersion_env%s8, &
134  dispersion_env%a2, vdw_section)
135  END IF
136  ELSE
137  IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
138  ! zero damping
139  CALL section_vals_val_get(pp_section, "D3_SCALING", r_vals=scal)
140  dispersion_env%s6 = scal(1)
141  dispersion_env%sr6 = scal(2)
142  dispersion_env%s8 = scal(3)
143  dispersion_env%a1 = 0.0_dp
144  dispersion_env%a2 = 0.0_dp
145  ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
146  ! BJ damping
147  CALL section_vals_val_get(pp_section, "D3BJ_SCALING", r_vals=scal)
148  dispersion_env%s6 = scal(1)
149  dispersion_env%a1 = scal(2)
150  dispersion_env%s8 = scal(3)
151  dispersion_env%a2 = scal(4)
152  dispersion_env%sr6 = 0.0_dp
153  END IF
154  END IF
155  ELSE
156  dispersion_env%s6 = 0._dp
157  dispersion_env%sr6 = 0._dp
158  dispersion_env%s8 = 0._dp
159  dispersion_env%a1 = 0._dp
160  dispersion_env%a2 = 0._dp
161  dispersion_env%eps_cn = 0._dp
162  END IF
163  CALL section_vals_val_get(pp_section, "R_CUTOFF", r_val=dispersion_env%rc_disp)
164  CALL section_vals_val_get(pp_section, "PARAMETER_FILE_NAME", &
165  c_val=dispersion_env%parameter_file_name)
166  ! set DFTD section for output handling
167  dispersion_env%dftd_section => pp_section
168  ELSE IF (dispersion_env%type == xc_vdw_fun_nonloc) THEN
169  NULLIFY (nl_section)
170  nl_section => section_vals_get_subs_vals(vdw_section, "NON_LOCAL")
171  CALL section_vals_val_get(nl_section, "VERBOSE_OUTPUT", l_val=dispersion_env%verbose)
172  CALL section_vals_val_get(nl_section, "KERNEL_FILE_NAME", &
173  c_val=dispersion_env%kernel_file_name)
174  CALL section_vals_val_get(nl_section, "TYPE", i_val=dispersion_env%nl_type)
175  CALL section_vals_val_get(nl_section, "CUTOFF", r_val=dispersion_env%pw_cutoff)
176  CALL section_vals_val_get(nl_section, "PARAMETERS", r_vals=params)
177  CALL section_vals_val_get(nl_section, "SCALE", r_val=dispersion_env%scale_rvv10)
178  dispersion_env%b_value = params(1)
179  dispersion_env%c_value = params(2)
180  END IF
181  END SUBROUTINE qs_dispersion_env_set
182 
183 ! **************************************************************************************************
184 
185 ! **************************************************************************************************
186 !> \brief ...
187 !> \param qs_env ...
188 !> \param dispersion_env ...
189 !> \param ounit ...
190 ! **************************************************************************************************
191  SUBROUTINE qs_write_dispersion(qs_env, dispersion_env, ounit)
192  TYPE(qs_environment_type), POINTER :: qs_env
193  TYPE(qs_dispersion_type), POINTER :: dispersion_env
194  INTEGER, INTENT(in), OPTIONAL :: ounit
195 
196  CHARACTER(LEN=2) :: symbol
197  INTEGER :: i, ikind, nkind, output_unit
198  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
199  TYPE(cp_logger_type), POINTER :: logger
200  TYPE(qs_atom_dispersion_type), POINTER :: disp
201  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
202  TYPE(section_vals_type), POINTER :: dft_section
203 
204  IF (PRESENT(ounit)) THEN
205  output_unit = ounit
206  ELSE
207  NULLIFY (logger)
208  logger => cp_get_default_logger()
209 
210  dft_section => section_vals_get_subs_vals(qs_env%input, "DFT")
211  output_unit = cp_print_key_unit_nr(logger, dft_section, &
212  "PRINT%DFT_CONTROL_PARAMETERS", extension=".Log")
213  END IF
214 
215  IF (output_unit > 0) THEN
216  ! vdW type specific output
217  IF (dispersion_env%type == xc_vdw_fun_pairpot) THEN
218  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T67,'Pair Potential')")
219  ! Pair potentials
220  IF (dispersion_env%pp_type == vdw_pairpot_dftd2) THEN
221  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'DFT-D2')")
222  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Potential Form: S. Grimme, JCC 27: 1787 (2006)')")
223  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Cutoff Radius [Bohr]:',T73,F8.2)") dispersion_env%rc_disp
224  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Scaling Factor:',T73,F8.4)") dispersion_env%scaling
225  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T35,'Exp Prefactor for Damping:',T73,F8.1)") dispersion_env%exp_pre
226  CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set)
227  nkind = SIZE(atomic_kind_set)
228  DO ikind = 1, nkind
229  CALL get_atomic_kind(atomic_kind_set(ikind), element_symbol=symbol)
230  CALL get_qs_kind(qs_kind_set(ikind), dispersion=disp)
231  IF (disp%defined) THEN
232  WRITE (output_unit, fmt="(' vdW PARAMETER| ',T18,'Atom=',A2, "// &
233  "T28,'C6[J*nm^6*mol^-1]=',F8.4,T63,'r(vdW)[A]=',F8.4)") &
234  symbol, disp%c6/(1000._dp*bohr**6/kjmol), disp%vdw_radii/bohr
235  ELSE
236  WRITE (output_unit, fmt="(' vdW PARAMETER| ',T20,'Atom=',A2,T70,'not defined')")
237  END IF
238  END DO
239  ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3) THEN
240  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D3 (Version 3.1)')")
241  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Potential Form: S. Grimme et al, JCP 132: 154104 (2010)')")
242  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Zero Damping')")
243  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff Radius [Bohr]:',T73,F8.2)") dispersion_env%rc_disp
244  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s6 Scaling Factor:',T73,F8.4)") dispersion_env%s6
245  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'sr6 Scaling Factor:',T73,F8.4)") dispersion_env%sr6
246  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s8 Scaling Factor:',T73,F8.4)") dispersion_env%s8
247  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff for CN calculation:',T69,E12.4)") dispersion_env%eps_cn
248  IF (dispersion_env%nd3_exclude_pair > 0) THEN
249  DO i = 1, dispersion_env%nd3_exclude_pair
250  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Excluded Pairs: ',T76,I2,' ',I2)") &
251  dispersion_env%d3_exclude_pair(i, :)
252  END DO
253  END IF
254  ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj) THEN
255  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'DFT-D3 (Version 3.1)')")
256  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Potential Form: S. Grimme et al, JCP 132: 154104 (2010)')")
257  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'BJ Damping: S. Grimme et al, JCC 32: 1456 (2011)')")
258  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff Radius [Bohr]:',T73,F8.2)") dispersion_env%rc_disp
259  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s6 Scaling Factor:',T73,F8.4)") dispersion_env%s6
260  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'a1 Damping Factor:',T73,F8.4)") dispersion_env%a1
261  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'s8 Scaling Factor:',T73,F8.4)") dispersion_env%s8
262  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'a2 Damping Factor:',T73,F8.4)") dispersion_env%a2
263  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Cutoff for CN calculation:',T69,E12.4)") dispersion_env%eps_cn
264  IF (dispersion_env%nd3_exclude_pair > 0) THEN
265  DO i = 1, dispersion_env%nd3_exclude_pair
266  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T26,'Excluded Kind Pairs: ',T76,I2,' ',I2)") &
267  dispersion_env%d3_exclude_pair(i, :)
268  END DO
269  END IF
270  END IF
271  ELSE IF (dispersion_env%type == xc_vdw_fun_nonloc) THEN
272  WRITE (output_unit, fmt="(' vdW POTENTIAL| ',T61,'Non-local Functional')")
273  WRITE (output_unit, &
274  fmt="(' vdW POTENTIAL| ','Implementation: G. Roman-Perez, J. Soler, PRL 103: 096102 (2009)')")
275  WRITE (output_unit, &
276  fmt="(' vdW POTENTIAL| ',T38,' T. Thonhauser et al, PRB 76: 125112 (2007)')")
277  WRITE (output_unit, &
278  fmt="(' vdW POTENTIAL| ',T22,' R. Sabatini et al, J.Phys:Condens Matter 24: 424209 (2012)')")
279  WRITE (output_unit, &
280  fmt="(' vdW POTENTIAL| ',T16,' Based on QE implementation by Brian Kolb, Timo Thonhauser (2009)')")
281  SELECT CASE (dispersion_env%nl_type)
282  CASE DEFAULT
283  ! unknown functional
284  cpabort("")
285  CASE (vdw_nl_drsll)
286  WRITE (output_unit, &
287  fmt="(' vdW POTENTIAL| ','DRSLL Functional: M. Dion et al, PRL 92: 246401 (2004)')")
288  CASE (vdw_nl_lmkll)
289  WRITE (output_unit, &
290  fmt="(' vdW POTENTIAL| ','LMKLL Functional: K. Lee et al, PRB 82: 081101 (2010)')")
291  CASE (vdw_nl_rvv10)
292  WRITE (output_unit, &
293  fmt="(' vdW POTENTIAL| ','RVV10 Functional: R. Sabatini et al, PRB 87: 041108(R) (2013)')")
294  END SELECT
295  IF (dispersion_env%verbose) THEN
296  WRITE (output_unit, &
297  fmt="(' vdW POTENTIAL| ',' Carrying out vdW-DF run using the following parameters:')")
298  WRITE (output_unit, fmt="(' vdW POTENTIAL| ','Nqs =',I8,' Nr_points =',I8,' r_max =',F10.3)") &
299  dispersion_env%nqs, dispersion_env%nr_points, dispersion_env%r_max
300  WRITE (output_unit, fmt="(' vdW POTENTIAL| ','q_mesh =')")
301  WRITE (output_unit, fmt="(8X,4F18.8)") (dispersion_env%q_mesh(i), i=1, dispersion_env%nqs)
302  WRITE (output_unit, &
303  fmt="(' vdW POTENTIAL| ','Density cutoff for convolution [a.u.]:',T71,F10.1)") &
304  dispersion_env%pw_cutoff
305  END IF
306  END IF
307  END IF
308  IF (.NOT. PRESENT(ounit)) THEN
309  CALL cp_print_key_finished_output(output_unit, logger, dft_section, &
310  "PRINT%DFT_CONTROL_PARAMETERS")
311  END IF
312 
313  END SUBROUTINE qs_write_dispersion
314 
315 ! **************************************************************************************************
316 
317 END MODULE qs_dispersion_utils
318 
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 vdw_nl_rvv10
integer, parameter, public vdw_pairpot_dftd3
integer, parameter, public xc_vdw_fun_nonloc
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 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
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
Calculation of dispersion using pair potentials.
subroutine, public qs_scaling_dftd3bj(s6, a1, s8, a2, vdw_section)
...
subroutine, public qs_scaling_init(scaling, vdw_section)
...
subroutine, public qs_scaling_dftd3(s6, sr6, s8, vdw_section)
...
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 qs_write_dispersion(qs_env, dispersion_env, ounit)
...
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, 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_nonbond, sab_almo, sab_kp, sab_kp_nosym, 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, 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, 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, ecoul_1c, rho0_s_rs, rho0_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, 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, rhs)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
Definition: qs_kind_types.F:23
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, 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_r3d_rs_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, 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, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.