(git:e7e05ae)
qs_epr_hyp.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 Calculates hyperfine values
10 !> \par History
11 !> created 04-2006 [RD]
12 !> adapted 02-2007 [JGH]
13 !> \author R. Declerck (Reinout.Declerck@UGent.be)
14 ! **************************************************************************************************
15 MODULE qs_epr_hyp
16  USE atomic_kind_types, ONLY: atomic_kind_type,&
18  USE cell_types, ONLY: cell_type,&
19  pbc
20  USE cp_control_types, ONLY: dft_control_type
22  cp_logger_type
25  section_vals_type,&
27  USE kinds, ONLY: dp
28  USE mathconstants, ONLY: fourpi
29  USE message_passing, ONLY: mp_para_env_type
30  USE particle_types, ONLY: particle_type
31  USE periodic_table, ONLY: ptable
32  USE physcon, ONLY: a_bohr,&
33  a_fine,&
34  e_charge,&
35  e_gfactor,&
36  e_mass,&
37  h_bar,&
38  mu_perm
39  USE pw_env_types, ONLY: pw_env_get,&
40  pw_env_type
41  USE pw_grid_types, ONLY: pw_grid_type
42  USE pw_methods, ONLY: pw_axpy,&
43  pw_dr2_gg,&
44  pw_zero
45  USE pw_pool_types, ONLY: pw_pool_type
46  USE pw_types, ONLY: pw_c1d_gs_type
47  USE qs_environment_types, ONLY: get_qs_env,&
48  qs_environment_type
49  USE qs_grid_atom, ONLY: grid_atom_type
50  USE qs_harmonics_atom, ONLY: harmonics_atom_type
51  USE qs_kind_types, ONLY: get_qs_kind,&
52  qs_kind_type
53  USE qs_rho_atom_types, ONLY: get_rho_atom,&
54  rho_atom_coeff,&
55  rho_atom_type
56  USE qs_rho_types, ONLY: qs_rho_get,&
57  qs_rho_type
58  USE util, ONLY: get_limit
59 #include "./base/base_uses.f90"
60 
61  IMPLICIT NONE
62 
63  PRIVATE
64  PUBLIC :: qs_epr_hyp_calc
65 
66  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_epr_hyp'
67 
68 CONTAINS
69 
70 ! **************************************************************************************************
71 !> \brief ...
72 !> \param qs_env ...
73 ! **************************************************************************************************
74  SUBROUTINE qs_epr_hyp_calc(qs_env)
75 
76  TYPE(qs_environment_type), POINTER :: qs_env
77 
78  CHARACTER(LEN=2) :: element_symbol
79  INTEGER :: bo(2), ia, iat, iatom, idir1, idir2, ig, &
80  ikind, ir, iso, jatom, mepos, natom, &
81  natomkind, nkind, num_pe, output_unit, &
82  z
83  INTEGER, DIMENSION(:), POINTER :: atom_list
84  LOGICAL :: lsd, paw_atom
85  REAL(dp) :: arg, esum, hard_radius, hypanisotemp, &
86  hypfactor, int_radius, rab2, rtemp
87  REAL(kind=dp), ALLOCATABLE, DIMENSION(:) :: hypiso, hypiso_one
88  REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :, :) :: hypaniso
89  REAL(kind=dp), DIMENSION(3) :: ra, rab
90  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
91  TYPE(cell_type), POINTER :: cell
92  TYPE(cp_logger_type), POINTER :: logger
93  TYPE(dft_control_type), POINTER :: dft_control
94  TYPE(grid_atom_type), POINTER :: grid_atom
95  TYPE(harmonics_atom_type), POINTER :: harmonics
96  TYPE(mp_para_env_type), POINTER :: para_env
97  TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
98  TYPE(pw_c1d_gs_type) :: hypaniso_gspace, rhototspin_elec_gspace
99  TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho_g
100  TYPE(pw_env_type), POINTER :: pw_env
101  TYPE(pw_grid_type), POINTER :: pw_grid
102  TYPE(pw_pool_type), POINTER :: auxbas_pw_pool
103  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
104  TYPE(qs_rho_type), POINTER :: rho
105  TYPE(rho_atom_coeff), DIMENSION(:), POINTER :: rho_rad_h, rho_rad_s
106  TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho_atom_set
107  TYPE(rho_atom_type), POINTER :: rho_atom
108  TYPE(section_vals_type), POINTER :: dft_section
109 
110  NULLIFY (pw_env, cell, atomic_kind_set, qs_kind_set, auxbas_pw_pool, dft_control, &
111  logger, dft_section, para_env, particle_set, rho, rho_atom, &
112  rho_atom_set, rho_g)
113 
114  logger => cp_get_default_logger()
115  dft_section => section_vals_get_subs_vals(qs_env%input, "DFT")
116  output_unit = cp_print_key_unit_nr(logger, dft_section, &
117  "PRINT%HYPERFINE_COUPLING_TENSOR", &
118  extension=".eprhyp", log_filename=.false.)
119  CALL section_vals_val_get(dft_section, &
120  "PRINT%HYPERFINE_COUPLING_TENSOR%INTERACTION_RADIUS", &
121  r_val=int_radius)
122  CALL section_vals_val_get(dft_section, "LSD", l_val=lsd)
123 
124  IF (.NOT. lsd) THEN
125  ! EPR calculation only for LSD
126  IF (output_unit > 0) THEN
127  WRITE (unit=output_unit, fmt="(/,T2,A)") &
128  "Calculation of EPR hyperfine coupling tensors only for LSD"
129  END IF
130  NULLIFY (logger, dft_section)
131  RETURN
132  END IF
133 
134  hypfactor = -1.0_dp*mu_perm*e_charge*h_bar*e_gfactor/(2.0_dp*e_mass*a_bohr**3)
135 
136  CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, cell=cell, &
137  rho=rho, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set, &
138  rho_atom_set=rho_atom_set, pw_env=pw_env, &
139  particle_set=particle_set, para_env=para_env)
140 
141  IF (output_unit > 0) THEN
142  WRITE (unit=output_unit, fmt="(/,T2,A,/,T2,A)") &
143  "Calculation of EPR hyperfine coupling tensors", &
144  repeat("-", 79)
145  END IF
146 
147  ! allocate hyperfine matrices
148  natom = SIZE(particle_set, 1)
149  ALLOCATE (hypaniso(3, 3, natom))
150  ALLOCATE (hypiso(natom))
151  ALLOCATE (hypiso_one(natom))
152 
153  ! set the matrices to zero
154  hypiso = 0.0_dp
155  hypiso_one = 0.0_dp
156  hypaniso = 0.0_dp
157 
158  nkind = SIZE(atomic_kind_set) ! nkind = number of atom types
159 
160  DO ikind = 1, nkind ! loop over atom types
161  NULLIFY (atom_list, grid_atom, harmonics)
162  CALL get_atomic_kind(atomic_kind_set(ikind), &
163  atom_list=atom_list, natom=natomkind, z=z)
164 
165  CALL get_qs_kind(qs_kind_set(ikind), harmonics=harmonics, &
166  grid_atom=grid_atom, paw_atom=paw_atom, hard_radius=hard_radius)
167 
168  IF (.NOT. paw_atom) cycle ! skip the rest and go to next atom type
169 
170  num_pe = para_env%num_pe
171  mepos = para_env%mepos
172  bo = get_limit(natomkind, num_pe, mepos)
173 
174  DO iat = bo(1), bo(2) ! natomkind = # atoms for ikind
175  iatom = atom_list(iat)
176  rho_atom => rho_atom_set(iatom)
177  NULLIFY (rho_rad_h, rho_rad_s)
178  CALL get_rho_atom(rho_atom=rho_atom, rho_rad_h=rho_rad_h, &
179  rho_rad_s=rho_rad_s)
180  ! Non-relativistic isotropic hyperfine value (hypiso_one)
181  DO ia = 1, grid_atom%ng_sphere
182  DO iso = 1, harmonics%max_iso_not0
183  hypiso_one(iatom) = hypiso_one(iatom) + &
184  (rho_rad_h(1)%r_coef(grid_atom%nr, iso) - &
185  rho_rad_h(2)%r_coef(grid_atom%nr, iso))* &
186  harmonics%slm(ia, iso)*grid_atom%wa(ia)/fourpi
187  END DO
188  END DO
189  ! First calculate hard-soft contributions for the own nucleus
190  ! + scalar relativistic isotropic hyperfine value (hypiso)
191  DO ir = 1, grid_atom%nr
192  IF (grid_atom%rad(ir) <= hard_radius) THEN
193  DO ia = 1, grid_atom%ng_sphere
194  hypanisotemp = 0.0_dp
195  DO iso = 1, harmonics%max_iso_not0
196  hypiso(iatom) = hypiso(iatom) + &
197  (rho_rad_h(1)%r_coef(ir, iso) - rho_rad_h(2)%r_coef(ir, iso))* &
198  harmonics%slm(ia, iso)*grid_atom%wr(ir)*grid_atom%wa(ia)* &
199  2._dp/(real(z, kind=dp)*a_fine**2* &
200  (1._dp + 2._dp*grid_atom%rad(ir)/(real(z, kind=dp)*a_fine**2))**2* &
201  fourpi*grid_atom%rad(ir)**2)
202  hypanisotemp = hypanisotemp + &
203  (rho_rad_h(1)%r_coef(ir, iso) - rho_rad_h(2)%r_coef(ir, iso) &
204  - (rho_rad_s(1)%r_coef(ir, iso) - rho_rad_s(2)%r_coef(ir, iso)))* &
205  harmonics%slm(ia, iso)*grid_atom%wr(ir)*grid_atom%wa(ia)/ &
206  grid_atom%rad(ir)**3
207  END DO ! iso
208  hypaniso(1, 1, iatom) = hypaniso(1, 1, iatom) + hypanisotemp* &
209  (3._dp*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia)* &
210  grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia) - 1._dp)
211  hypaniso(1, 2, iatom) = hypaniso(1, 2, iatom) + hypanisotemp* &
212  (3._dp*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia)* &
213  grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia) - 0._dp)
214  hypaniso(1, 3, iatom) = hypaniso(1, 3, iatom) + hypanisotemp* &
215  (3._dp*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia)* &
216  grid_atom%cos_pol(ia) - 0._dp)
217  hypaniso(2, 2, iatom) = hypaniso(2, 2, iatom) + hypanisotemp* &
218  (3._dp*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia)* &
219  grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia) - 1._dp)
220  hypaniso(2, 3, iatom) = hypaniso(2, 3, iatom) + hypanisotemp* &
221  (3._dp*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia)* &
222  grid_atom%cos_pol(ia) - 0._dp)
223  hypaniso(3, 3, iatom) = hypaniso(3, 3, iatom) + hypanisotemp* &
224  (3._dp*grid_atom%cos_pol(ia)* &
225  grid_atom%cos_pol(ia) - 1._dp)
226  END DO ! ia
227  END IF ! hard_radius
228  END DO ! ir
229 
230  ! Now calculate hard-soft anisotropic contributions for the other nuclei
231  DO jatom = 1, natom
232  IF (jatom .EQ. iatom) cycle ! iatom already done
233  rab = pbc(particle_set(iatom)%r, particle_set(jatom)%r, cell)
234  rab2 = dot_product(rab, rab)
235  ! SQRT(rab2) <= int_radius
236  IF (rab2 <= (int_radius*int_radius)) THEN
237  DO ir = 1, grid_atom%nr
238  IF (grid_atom%rad(ir) <= hard_radius) THEN
239  DO ia = 1, grid_atom%ng_sphere
240  hypanisotemp = 0.0_dp
241  rtemp = sqrt(rab2 + grid_atom%rad(ir)**2 + 2.0_dp*grid_atom%rad(ir)* &
242  (rab(1)*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia) + &
243  rab(2)*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia) + &
244  rab(3)*grid_atom%cos_pol(ia)))
245  DO iso = 1, harmonics%max_iso_not0
246  hypanisotemp = hypanisotemp + &
247  (rho_rad_h(1)%r_coef(ir, iso) - rho_rad_h(2)%r_coef(ir, iso) &
248  - (rho_rad_s(1)%r_coef(ir, iso) - rho_rad_s(2)%r_coef(ir, iso)))* &
249  harmonics%slm(ia, iso)*grid_atom%wr(ir)*grid_atom%wa(ia)/ &
250  rtemp**5
251  END DO ! iso
252  hypaniso(1, 1, jatom) = hypaniso(1, 1, jatom) + hypanisotemp* &
253  (3._dp*(rab(1) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia))* &
254  (rab(1) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia)) - rtemp**2)
255  hypaniso(1, 2, jatom) = hypaniso(1, 2, jatom) + hypanisotemp* &
256  (3._dp*(rab(1) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia))* &
257  (rab(2) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia)) - 0._dp)
258  hypaniso(1, 3, jatom) = hypaniso(1, 3, jatom) + hypanisotemp* &
259  (3._dp*(rab(1) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%cos_azi(ia))* &
260  (rab(3) + grid_atom%rad(ir)*grid_atom%cos_pol(ia)) - 0._dp)
261  hypaniso(2, 2, jatom) = hypaniso(2, 2, jatom) + hypanisotemp* &
262  (3._dp*(rab(2) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia))* &
263  (rab(2) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia)) - rtemp**2)
264  hypaniso(2, 3, jatom) = hypaniso(2, 3, jatom) + hypanisotemp* &
265  (3._dp*(rab(2) + grid_atom%rad(ir)*grid_atom%sin_pol(ia)*grid_atom%sin_azi(ia))* &
266  (rab(3) + grid_atom%rad(ir)*grid_atom%cos_pol(ia)) - 0._dp)
267  hypaniso(3, 3, jatom) = hypaniso(3, 3, jatom) + hypanisotemp* &
268  (3._dp*(rab(3) + grid_atom%rad(ir)*grid_atom%cos_pol(ia))* &
269  (rab(3) + grid_atom%rad(ir)*grid_atom%cos_pol(ia)) - rtemp**2)
270  END DO ! ia
271  END IF ! hard_radius
272  END DO ! ir
273  END IF ! rab2
274  END DO ! jatom
275  END DO ! iat
276  END DO ! ikind
277 
278  ! Now calculate the soft electronic spin density in reciprocal space (g-space)
279  ! Plane waves grid to assemble the soft electronic spin density
280  CALL pw_env_get(pw_env=pw_env, &
281  auxbas_pw_pool=auxbas_pw_pool)
282 
283  CALL auxbas_pw_pool%create_pw(rhototspin_elec_gspace)
284  CALL pw_zero(rhototspin_elec_gspace)
285 
286  pw_grid => rhototspin_elec_gspace%pw_grid
287 
288  ! Load the contribution of the soft electronic density
289  CALL qs_rho_get(rho, rho_g=rho_g)
290  cpassert(SIZE(rho_g) > 1)
291  CALL pw_axpy(rho_g(1), rhototspin_elec_gspace)
292  CALL pw_axpy(rho_g(2), rhototspin_elec_gspace, alpha=-1._dp)
293  ! grid to assemble anisotropic hyperfine terms
294  CALL auxbas_pw_pool%create_pw(hypaniso_gspace)
295 
296  DO idir1 = 1, 3
297  DO idir2 = idir1, 3 ! tensor symmetry
298  CALL pw_zero(hypaniso_gspace)
299  CALL pw_dr2_gg(rhototspin_elec_gspace, hypaniso_gspace, &
300  idir1, idir2)
301  DO iatom = 1, natom
302  esum = 0.0_dp
303  ra(:) = pbc(particle_set(iatom)%r, cell)
304  DO ig = 1, SIZE(hypaniso_gspace%array)
305  arg = dot_product(pw_grid%g(:, ig), ra)
306  esum = esum + cos(arg)*real(hypaniso_gspace%array(ig), dp) &
307  - sin(arg)*aimag(hypaniso_gspace%array(ig))
308  END DO
309  ! Actually, we need -1.0 * fourpi * hypaniso_gspace
310  esum = esum*fourpi*(-1.0_dp)
311  hypaniso(idir1, idir2, iatom) = hypaniso(idir1, idir2, iatom) + esum
312  END DO
313  END DO ! idir2
314  END DO ! idir1
315 
316  CALL auxbas_pw_pool%give_back_pw(rhototspin_elec_gspace)
317  CALL auxbas_pw_pool%give_back_pw(hypaniso_gspace)
318 
319  ! Multiply hyperfine matrices with constant*gyromagnetic ratio's
320  ! to have it in units of Mhz.
321 
322  DO iatom = 1, natom
323  CALL get_atomic_kind(atomic_kind=particle_set(iatom)%atomic_kind, &
324  z=z)
325  hypiso(iatom) = hypiso(iatom)* &
326  2.0_dp/3.0_dp*hypfactor*ptable(z)%gyrom_ratio
327  hypiso_one(iatom) = hypiso_one(iatom)* &
328  2.0_dp/3.0_dp*hypfactor*ptable(z)%gyrom_ratio
329  DO idir1 = 1, 3
330  DO idir2 = idir1, 3
331  hypaniso(idir1, idir2, iatom) = hypaniso(idir1, idir2, iatom)* &
332  hypfactor/fourpi*ptable(z)%gyrom_ratio
333  IF (idir1 /= idir2) THEN
334  hypaniso(idir2, idir1, iatom) = hypaniso(idir1, idir2, iatom)
335  END IF
336  END DO
337  END DO
338  END DO
339 
340  ! Global sum
341  CALL para_env%sync()
342  CALL para_env%sum(hypaniso)
343  CALL para_env%sum(hypiso)
344  CALL para_env%sum(hypiso_one)
345 
346  ! Print hyperfine matrices
347  IF (output_unit > 0) THEN
348  DO iatom = 1, natom
349  CALL get_atomic_kind(atomic_kind=particle_set(iatom)%atomic_kind, &
350  element_symbol=element_symbol, z=z)
351  WRITE (unit=output_unit, fmt="(T1,I5,T7,A,T10,I3,T14,F16.10,T31,A,T60,F20.10)") &
352  iatom, element_symbol, ptable(z)%gyrom_ratio_isotope, ptable(z)%gyrom_ratio, &
353  "[Mhz/T] Sca-Rel A_iso [Mhz]", hypiso(iatom)
354  WRITE (unit=output_unit, fmt="(T31,A,T60,F20.10)") &
355  " Non-Rel A_iso [Mhz]", hypiso_one(iatom)
356  WRITE (unit=output_unit, fmt="(T4,A,T18,F20.10,1X,F20.10,1X,F20.10)") &
357  " ", hypaniso(1, 1, iatom), hypaniso(1, 2, iatom), hypaniso(1, 3, iatom), &
358  " A_ani [Mhz]", hypaniso(2, 1, iatom), hypaniso(2, 2, iatom), hypaniso(2, 3, iatom), &
359  " ", hypaniso(3, 1, iatom), hypaniso(3, 2, iatom), hypaniso(3, 3, iatom)
360  END DO
361  END IF
362 
363  ! Deallocate the remainings ...
364  DEALLOCATE (hypiso)
365  DEALLOCATE (hypiso_one)
366  DEALLOCATE (hypaniso)
367 
368  END SUBROUTINE qs_epr_hyp_calc
369 
370 END MODULE qs_epr_hyp
371 
subroutine pbc(r, r_pbc, s, s_pbc, a, b, c, alpha, beta, gamma, debug, info, pbc0, h, hinv)
...
Definition: dumpdcd.F:1203
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.
Handles all functions related to the CELL.
Definition: cell_types.F:15
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
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)
...
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 mathematical constants and functions.
Definition: mathconstants.F:16
real(kind=dp), parameter, public fourpi
Interface to the message passing library MPI.
Define the data structure for the particle information.
Periodic Table related data definitions.
type(atom), dimension(0:nelem), public ptable
Definition of physical constants:
Definition: physcon.F:68
real(kind=dp), parameter, public mu_perm
Definition: physcon.F:93
real(kind=dp), parameter, public a_bohr
Definition: physcon.F:136
real(kind=dp), parameter, public a_fine
Definition: physcon.F:119
real(kind=dp), parameter, public e_charge
Definition: physcon.F:106
real(kind=dp), parameter, public h_bar
Definition: physcon.F:103
real(kind=dp), parameter, public e_mass
Definition: physcon.F:109
real(kind=dp), parameter, public e_gfactor
Definition: physcon.F:115
container for various plainwaves related things
Definition: pw_env_types.F:14
subroutine, public pw_env_get(pw_env, pw_pools, cube_info, gridlevel_info, auxbas_pw_pool, auxbas_grid, auxbas_rs_desc, auxbas_rs_grid, rs_descs, rs_grids, xc_pw_pool, vdw_pw_pool, poisson_env, interp_section)
returns the various attributes of the pw env
Definition: pw_env_types.F:113
subroutine, public pw_dr2_gg(pw, pwdr2_gg, i, j)
Calculate the tensorial 2nd derivative of a plane wave vector and divides by |G|^2....
Definition: pw_methods.F:10252
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Definition: pw_pool_types.F:24
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.
Calculates hyperfine values.
Definition: qs_epr_hyp.F:15
subroutine, public qs_epr_hyp_calc(qs_env)
...
Definition: qs_epr_hyp.F:75
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.
subroutine, public get_rho_atom(rho_atom, cpc_h, cpc_s, rho_rad_h, rho_rad_s, drho_rad_h, drho_rad_s, vrho_rad_h, vrho_rad_s, rho_rad_h_d, rho_rad_s_d, ga_Vlocal_gb_h, ga_Vlocal_gb_s, int_scr_h, int_scr_s)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
Definition: qs_rho_types.F:18
subroutine, public qs_rho_get(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
returns info about the density described by this object. If some representation is not available an e...
Definition: qs_rho_types.F:229
All kind of helpful little routines.
Definition: util.F:14
pure integer function, dimension(2), public get_limit(m, n, me)
divide m entries into n parts, return size of part me
Definition: util.F:333