68#include "./base/base_uses.f90"
75 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_electric_field_gradient'
87 CHARACTER(LEN=*),
PARAMETER :: routinen =
'qs_efg_calc'
89 CHARACTER(LEN=2) :: element_symbol
90 INTEGER :: aint_precond, handle, i, iat, iatom, ij, &
91 ikind, j, max_iter, natom, natomkind, &
92 nkind, nspins, precond_kind, unit_nr
93 INTEGER,
DIMENSION(:),
POINTER :: atom_list
94 LOGICAL :: efg_debug, efg_interpolation, gapw, &
95 paw_atom, smoothing, success
96 REAL(kind=
dp) :: chk_spl, ecut, efg_units, efg_val, &
97 ehartree, eps_r, eps_x, f1, f2, sigma
98 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: efg_diagval, vh0
99 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: efg_pw, efg_tensor
100 REAL(kind=
dp),
DIMENSION(3) :: eigenvalues, ra
101 REAL(kind=
dp),
DIMENSION(3, 3) :: eigenvectors
102 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rvals
117 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
122 NULLIFY (atomic_kind_set, qs_kind_set, dft_control, para_env, particle_set, rho, &
123 rho_atom_set, input, dft_section, interp_section)
125 CALL timeset(routinen, handle)
134 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, &
135 rho=rho, qs_kind_set=qs_kind_set, &
136 atomic_kind_set=atomic_kind_set, &
137 rho_atom_set=rho_atom_set, pw_env=pw_env, &
138 particle_set=particle_set, para_env=para_env, &
144 keyword_name=
"PRINT%ELECTRIC_FIELD_GRADIENT%INTERPOLATION")
146 keyword_name=
"PRINT%ELECTRIC_FIELD_GRADIENT%DEBUG")
148 "PRINT%ELECTRIC_FIELD_GRADIENT%GSPACE_SMOOTHING", &
152 IF (ecut == 0._dp .AND. sigma <= 0._dp)
THEN
156 ELSEIF (ecut == -1._dp .AND. sigma == -1._dp)
THEN
158 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
159 CALL auxbas_pw_pool%create_pw(dvr2rs)
160 ecut = 2._dp*dvr2rs%pw_grid%cutoff*0.875_dp
161 sigma = 2._dp*dvr2rs%pw_grid%cutoff*0.125_dp
162 CALL auxbas_pw_pool%give_back_pw(dvr2rs)
166 cpassert(ecut > 0._dp)
167 cpassert(sigma > 0._dp)
170 extension=
".efg", log_filename=.false.)
172 IF (unit_nr > 0)
THEN
173 WRITE (unit_nr,
"(/,A,/)")
" ELECTRIC FIELD GRADIENTS [10**21 V/m^2]"
174 IF (efg_interpolation)
THEN
175 WRITE (unit_nr,
"(T16,A)") &
176 " Smooth potential contribution calculated by spline interpolation"
178 WRITE (unit_nr,
"(T12,A)") &
179 " Smooth potential contribution calculated by plane wave interpolation"
182 WRITE (unit_nr,
"(T36,A)") &
183 " G-Space potential smoothed by Fermi function"
184 WRITE (unit_nr,
"(T36,A,T71,F10.4)")
" Cutoff (eV) ", ecut
185 WRITE (unit_nr,
"(T36,A,T71,F10.4)")
" Width (eV) ", sigma
190 gapw = dft_control%qs_control%gapw
191 nspins = dft_control%nspins
193 natom =
SIZE(particle_set, 1)
194 ALLOCATE (efg_tensor(3, 3, natom))
197 ALLOCATE (efg_pw(3, 3, natom))
200 ALLOCATE (efg_diagval(3, natom))
203 ALLOCATE (vh0(1:natom, -2:2))
207 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
208 poisson_env=poisson_env)
212 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
213 CALL auxbas_pw_pool%create_pw(rho_tot_gspace)
218 CALL auxbas_pw_pool%give_back_pw(rho_tot_gspace)
221 IF (smoothing)
CALL pw_smoothing(v_hartree_gspace, ecut, sigma)
225 ij = (i*(i - 1))/2 + j
226 CALL auxbas_pw_pool%create_pw(dvr2(ij))
227 CALL pw_dr2(v_hartree_gspace, dvr2(ij), i, j)
231 IF (.NOT. efg_interpolation)
THEN
232 CALL auxbas_pw_pool%create_pw(structure_factor)
236 "PRINT%ELECTRIC_FIELD_GRADIENT%INTERPOLATOR")
244 CALL auxbas_pw_pool%create_pw(dvr2rs)
246 CALL auxbas_pw_pool%create_pw(dvspl(i))
250 pool=auxbas_pw_pool, pbc=.true., transpose=.false.)
253 success =
find_coeffs(values=dvr2rs, coeffs=dvspl(i), &
255 eps_r=eps_r, eps_x=eps_x, max_iter=max_iter)
258 CALL auxbas_pw_pool%give_back_pw(dvr2(i))
260 CALL auxbas_pw_pool%give_back_pw(dvr2rs)
263 nkind =
SIZE(qs_kind_set)
267 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom_list, natom=natomkind)
268 CALL get_qs_kind(qs_kind_set(ikind), paw_atom=paw_atom)
269 DO iat = 1, natomkind
270 iatom = atom_list(iat)
271 ra = particle_set(iatom)%r
272 IF (efg_interpolation)
THEN
275 ij = (i*(i - 1))/2 + j
277 efg_tensor(i, j, iatom) = -efg_val
278 efg_tensor(j, i, iatom) = efg_tensor(i, j, iatom)
280 chk_spl = chk_spl + efg_val + &
289 ij = (i*(i - 1))/2 + j
290 efg_tensor(i, j, iatom) = -
pw_integral_ab(dvr2(ij), structure_factor)
291 efg_tensor(j, i, iatom) = efg_tensor(i, j, iatom)
294 efg_tensor(:, :, iatom) = efg_tensor(:, :, iatom)/structure_factor%pw_grid%vol
297 efg_pw(:, :, iatom) = efg_tensor(:, :, iatom)
302 CALL vlimit_atom(para_env, vh0, rho_atom_set, qs_kind_set(ikind), &
303 atom_list, natomkind, nspins)
304 DO iat = 1, natomkind
305 iatom = atom_list(iat)
306 efg_tensor(1, 1, iatom) = efg_tensor(1, 1, iatom) &
307 + f1*(vh0(iatom, 2)) - f2*(vh0(iatom, 0))
308 efg_tensor(2, 2, iatom) = efg_tensor(2, 2, iatom) &
309 - f1*(vh0(iatom, 2)) - f2*(vh0(iatom, 0))
310 efg_tensor(3, 3, iatom) = efg_tensor(3, 3, iatom) + 2._dp*f2*(vh0(iatom, 0))
311 efg_tensor(1, 2, iatom) = efg_tensor(1, 2, iatom) + f1*(vh0(iatom, -2))
312 efg_tensor(2, 1, iatom) = efg_tensor(2, 1, iatom) + f1*(vh0(iatom, -2))
313 efg_tensor(1, 3, iatom) = efg_tensor(1, 3, iatom) + f1*(vh0(iatom, 1))
314 efg_tensor(3, 1, iatom) = efg_tensor(3, 1, iatom) + f1*(vh0(iatom, 1))
315 efg_tensor(2, 3, iatom) = efg_tensor(2, 3, iatom) + f1*(vh0(iatom, -1))
316 efg_tensor(3, 2, iatom) = efg_tensor(3, 2, iatom) + f1*(vh0(iatom, -1))
320 DO iat = 1, natomkind
321 iatom = atom_list(iat)
322 CALL diagonalise(efg_tensor(:, :, iatom), 3,
"U", &
323 eigenvalues, eigenvectors)
324 CALL efgsort(eigenvalues, efg_diagval(:, iatom))
328 efg_tensor(:, :, :) = efg_tensor(:, :, :)*efg_units
329 efg_diagval(:, :) = efg_diagval(:, :)*efg_units
332 efg_pw(:, :, :) = efg_pw(:, :, :)*efg_units
334 IF (unit_nr > 0)
THEN
336 element_symbol=element_symbol)
337 WRITE (unit=unit_nr, fmt=
"(T2,I5,T8,A,T12,A,T15,6F11.5)") &
338 iatom, element_symbol,
"PW", ((efg_pw(i, j, iatom), i=1, j), j=1, 3)
339 WRITE (unit=unit_nr, fmt=
"(T12,A,T15,6F11.5)") &
340 "AT", ((efg_tensor(i, j, iatom) - efg_pw(i, j, iatom), i=1, j), j=1, 3)
343 IF (unit_nr > 0)
THEN
344 WRITE (unit=unit_nr, fmt=*)
346 IF (efg_interpolation)
THEN
347 IF (unit_nr > 0)
THEN
348 WRITE (unit=unit_nr, fmt=
"(T2,A,E24.16)")
"CheckSum splines =", &
350 WRITE (unit=unit_nr, fmt=*)
356 IF (unit_nr > 0)
THEN
358 element_symbol=element_symbol)
359 WRITE (unit=unit_nr, fmt=
"(T2,I5,T8,A,T12,A,3(T39,3F14.7,/))") &
360 iatom, element_symbol,
"EFG Tensor", (efg_tensor(i, :, iatom), i=1, 3)
361 WRITE (unit=unit_nr, fmt=
"(T12,A,T39,3F14.7)") &
362 "EFG Tensor eigenvalues", efg_diagval(:, iatom)
363 WRITE (unit=unit_nr, fmt=
"(T12,A,T67,F14.7)")
"EFG Tensor anisotropy", &
364 (efg_diagval(1, iatom) - efg_diagval(2, iatom))/efg_diagval(3, iatom)
365 WRITE (unit=unit_nr, fmt=*)
369 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
370 IF (.NOT. efg_interpolation)
THEN
371 CALL auxbas_pw_pool%give_back_pw(structure_factor)
373 CALL auxbas_pw_pool%give_back_pw(dvr2(i))
377 CALL auxbas_pw_pool%give_back_pw(dvspl(i))
381 DEALLOCATE (efg_tensor)
388 CALL timestop(handle)
402 SUBROUTINE vlimit_atom(para_env, vlimit, rho_atom_set, qs_kind, &
403 atom_list, natom, nspins)
408 REAL(
dp),
DIMENSION(:, -2:),
INTENT(inout) :: vlimit
411 INTEGER,
DIMENSION(:),
INTENT(IN) :: atom_list
412 INTEGER,
INTENT(IN) :: natom, nspins
414 INTEGER :: i, i1, i2, iat, iatom, icg, ipgf1, ipgf2, iset1, iset2, iso, iso1, iso1_first, &
415 iso1_last, iso2, iso2_first, iso2_last, l, l_iso, llmax, m1s, m2s, m_iso, max_iso_not0, &
416 max_iso_not0_local, max_s_harm, maxl, maxso, mepos, n1s, n2s, nset, num_pe, size1, size2
417 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: cg_n_list
418 INTEGER,
ALLOCATABLE,
DIMENSION(:, :, :) :: cg_list
419 INTEGER,
DIMENSION(2) :: bo
420 INTEGER,
DIMENSION(:),
POINTER :: lmax, lmin, npgf, o2nindex
422 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: cpc_sphere
423 REAL(
dp),
DIMENSION(20) :: vgg
424 REAL(
dp),
DIMENSION(:, :),
POINTER :: coeff, zet
425 REAL(
dp),
DIMENSION(:, :, :),
POINTER :: my_cg
431 NULLIFY (lmin, lmax, npgf, zet, my_cg, coeff)
433 CALL get_qs_kind(qs_kind=qs_kind, basis_set=basis_1c, basis_type=
"GAPW_1C", &
437 maxl=maxl, npgf=npgf, nset=nset, zet=zet, &
441 max_iso_not0 = harmonics%max_iso_not0
442 max_s_harm = harmonics%max_s_harm
443 llmax = harmonics%llmax
446 num_pe = para_env%num_pe
447 mepos = para_env%mepos
450 my_cg => harmonics%my_CG
453 ALLOCATE (cg_list(2,
nsoset(maxl)**2, max_s_harm), cg_n_list(max_s_harm))
459 CALL get_none0_cg_list(my_cg, lmin(iset1), lmax(iset1), lmin(iset2), lmax(iset2), &
460 max_s_harm, llmax, cg_list, cg_n_list, max_iso_not0_local)
461 cpassert(max_iso_not0_local .LE. max_iso_not0)
464 DO ipgf1 = 1, npgf(iset1)
465 iso1_first =
nsoset(lmin(iset1) - 1) + 1 + n1s*(ipgf1 - 1) + m1s
466 iso1_last =
nsoset(lmax(iset1)) + n1s*(ipgf1 - 1) + m1s
467 size1 = iso1_last - iso1_first + 1
468 iso1_first = o2nindex(iso1_first)
469 iso1_last = o2nindex(iso1_last)
470 i1 = iso1_last - iso1_first + 1
471 cpassert(size1 == i1)
472 i1 =
nsoset(lmin(iset1) - 1) + 1
475 DO ipgf2 = 1, npgf(iset2)
476 iso2_first =
nsoset(lmin(iset2) - 1) + 1 + n2s*(ipgf2 - 1) + m2s
477 iso2_last =
nsoset(lmax(iset2)) + n2s*(ipgf2 - 1) + m2s
478 size2 = iso2_last - iso2_first + 1
479 iso2_first = o2nindex(iso2_first)
480 iso2_last = o2nindex(iso2_last)
481 i2 = iso2_last - iso2_first + 1
482 cpassert(size2 == i2)
483 i2 =
nsoset(lmin(iset2) - 1) + 1
485 zet12 = zet(ipgf1, iset1) + zet(ipgf2, iset2)
489 DO iso = 1, max_iso_not0_local
490 l_iso =
indso(1, iso)
491 IF (l_iso /= 2) cycle
492 DO icg = 1, cg_n_list(iso)
493 iso1 = cg_list(1, icg, iso)
494 iso2 = cg_list(2, icg, iso)
496 IF (mod(l, 2) == 0 .AND. l > 0)
THEN
497 vgg(l/2) =
fourpi/10._dp*
fac(l - 2)/zet12**(l/2)
502 DO iat = bo(1), bo(2)
503 iatom = atom_list(iat)
507 coeff => rho_atom_set(iatom)%cpc_h(i)%r_coef
508 cpc_sphere(i1:i1 + size1 - 1, i2:i2 + size2 - 1) = &
509 cpc_sphere(i1:i1 + size1 - 1, i2:i2 + size2 - 1) + &
510 coeff(iso1_first:iso1_last, iso2_first:iso2_last)
511 coeff => rho_atom_set(iatom)%cpc_s(i)%r_coef
512 cpc_sphere(i1:i1 + size1 - 1, i2:i2 + size2 - 1) = &
513 cpc_sphere(i1:i1 + size1 - 1, i2:i2 + size2 - 1) - &
514 coeff(iso1_first:iso1_last, iso2_first:iso2_last)
517 DO iso = 1, max_iso_not0_local
518 l_iso =
indso(1, iso)
519 m_iso =
indso(1, iso)
520 IF (l_iso /= 2) cycle
521 DO icg = 1, cg_n_list(iso)
522 iso1 = cg_list(1, icg, iso)
523 iso2 = cg_list(2, icg, iso)
525 IF (mod(l, 2) == 0 .AND. l > 0)
THEN
526 vlimit(iatom, m_iso) = vlimit(iatom, m_iso) + &
527 vgg(l/2)*cpc_sphere(iso1, iso2)*my_cg(iso1, iso2, iso)
541 CALL para_env%sum(vlimit)
543 DEALLOCATE (o2nindex)
544 DEALLOCATE (cpc_sphere)
545 DEALLOCATE (cg_list, cg_n_list)
547 END SUBROUTINE vlimit_atom
554 SUBROUTINE efgsort(ein, eout)
555 REAL(
dp),
DIMENSION(3),
INTENT(in) :: ein
556 REAL(
dp),
DIMENSION(3),
INTENT(inout) :: eout
559 INTEGER,
DIMENSION(3) :: ind
560 REAL(
dp),
DIMENSION(3) :: eab
563 CALL sort(eab, 3, ind)
565 eout(i) = ein(ind(i))
568 END SUBROUTINE efgsort
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.
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
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)
...
Provides interfaces to LAPACK eigenvalue/SVD routines.
Defines the basic variable types.
integer, parameter, public dp
Definition of mathematical constants and functions.
real(kind=dp), parameter, public fourpi
real(kind=dp), dimension(0:maxfac), parameter, public fac
Interface to the message passing library MPI.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public nsoset
integer, dimension(:, :), allocatable, public indso
Define the data structure for the particle information.
subroutine, public get_paw_basis_info(basis_1c, o2nindex, n2oindex, nsatbas)
Return some info on the PAW basis derived from a GTO basis set.
Definition of physical constants:
real(kind=dp), parameter, public a_bohr
real(kind=dp), parameter, public e_charge
real(kind=dp), parameter, public joule
computes preconditioners, and implements methods to apply them currently used in qs_ot
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_smoothing(pw, ecut, sigma)
Multiplies a G-space function with a smoothing factor of the form f(|G|) = exp((ecut - G^2)/sigma)/(1...
subroutine, public pw_structure_factor(sf, r)
Calculate the structure factor for point r.
subroutine, public pw_dr2(pw, pwdr2, i, j)
Calculate the tensorial 2nd derivative of a plane wave vector.
functions related to the poisson solver on regular grids
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
different utils that are useful to manipulate splines on the regular grid of a pw
subroutine, public pw_spline_precond_release(preconditioner)
releases the preconditioner
subroutine, public pw_spline_precond_create(preconditioner, precond_kind, pool, pbc, transpose)
...
subroutine, public pw_spline_do_precond(preconditioner, in_v, out_v)
applies the preconditioner to the system of equations to find the coefficients of the spline
subroutine, public pw_spline_precond_set_kind(preconditioner, precond_kind, pbc, transpose)
switches the types of precoditioner to use
real(kind=dp) function, dimension(3), public eval_d_interp_spl3_pbc(vec, pw)
Evaluates the derivatives of the PBC interpolated Spline (pw) function on the generic input vector (v...
real(kind=dp) function, public eval_interp_spl3_pbc(vec, pw)
Evaluates the PBC interpolated Spline (pw) function on the generic input vector (vec)
logical function, public find_coeffs(values, coeffs, linop, preconditioner, pool, eps_r, eps_x, max_iter, sumtype)
solves iteratively (CG) a systmes of linear equations linOp(coeffs)=values (for example those needed ...
subroutine, public spl3_pbc(pw_in, pw_out)
...
Calculates electric field gradients H.M. Petrili, P.E. Blochl, P. Blaha, K. Schwarz,...
subroutine, public qs_efg_calc(qs_env)
...
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_pp, 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, 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)
Get the QUICKSTEP environment.
subroutine, public prepare_gapw_den(qs_env, local_rho_set, do_rho0, kind_set_external, pw_env_sub)
...
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, 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, 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_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
routines that build the Kohn-Sham matrix (i.e calculate the coulomb and xc parts
subroutine, public calc_rho_tot_gspace(rho_tot_gspace, qs_env, rho, skip_nuclear_density)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
All kind of helpful little routines.
pure integer function, dimension(2), public get_limit(m, n, me)
divide m entries into n parts, return size of part me
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...
stores all the informations relevant to an mpi environment
contained for different pw related things
environment for the poisson solver
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
stores information for the preconditioner used to calculate the coeffs of splines
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.