(git:374b731)
Loading...
Searching...
No Matches
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! **************************************************************************************************
18 USE cell_types, ONLY: cell_type,&
19 pbc
27 USE kinds, ONLY: dp
28 USE mathconstants, ONLY: fourpi
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,&
39 USE pw_env_types, ONLY: pw_env_get,&
42 USE pw_methods, ONLY: pw_axpy,&
43 pw_dr2_gg,&
46 USE pw_types, ONLY: pw_c1d_gs_type
51 USE qs_kind_types, ONLY: get_qs_kind,&
56 USE qs_rho_types, ONLY: qs_rho_get,&
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
68CONTAINS
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
370END MODULE qs_epr_hyp
371
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.
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
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
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....
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
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.
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...
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...
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
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
Definition cell_types.F:55
type of a logger, at the moment it contains just a print level starting at which level it should be l...
stores all the informations relevant to an mpi environment
contained for different pw related things
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.