48#include "./base/base_uses.f90"
54 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'hartree_local_methods'
70 INTEGER,
INTENT(IN) :: natom
72 CHARACTER(len=*),
PARAMETER :: routinen =
'init_coulomb_local'
77 CALL timeset(routinen, handle)
82 hartree_local%ecoul_1c => ecoul_1c
104 REAL(
dp),
DIMENSION(:, :),
INTENT(INOUT) :: vrad_h, vrad_s
106 REAL(
dp),
DIMENSION(:, :),
INTENT(IN) :: rrad_0
107 REAL(
dp),
DIMENSION(:),
INTENT(IN) :: rrad_z
110 CHARACTER(len=*),
PARAMETER :: routinen =
'calculate_Vh_1center'
112 INTEGER :: handle, ir, iso, ispin, l_ang, &
113 max_s_harm, nchannels, nr, nspins
114 REAL(
dp) :: i1_down, i1_up, i2_down, i2_up, prefactor
115 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: rho_1, rho_2
116 REAL(
dp),
DIMENSION(:),
POINTER :: wr
117 REAL(
dp),
DIMENSION(:, :),
POINTER :: oor2l, r2l
119 CALL timeset(routinen, handle)
122 max_s_harm =
SIZE(vrad_h, 2)
123 nspins =
SIZE(rrad_h, 1)
124 nchannels =
SIZE(rrad_0, 2)
126 r2l => grid_atom%rad2l
127 oor2l => grid_atom%oorad2l
130 ALLOCATE (rho_1(nr, max_s_harm), rho_2(nr, max_s_harm))
135 rho_1(:, 1) = rrad_z(:)
136 rho_2(:, 1) = rrad_0(:, 1)
138 DO iso = 2, nchannels
139 rho_2(:, iso) = rrad_0(:, iso)
142 DO iso = 1, max_s_harm
144 rho_1(:, iso) = rho_1(:, iso) + rrad_h(ispin)%r_coef(:, iso)
145 rho_2(:, iso) = rho_2(:, iso) + rrad_s(ispin)%r_coef(:, iso)
148 l_ang =
indso(1, iso)
149 prefactor =
fourpi/(2._dp*l_ang + 1._dp)
151 rho_1(:, iso) = rho_1(:, iso)*wr(:)
152 rho_2(:, iso) = rho_2(:, iso)*wr(:)
159 i1_up = r2l(nr, l_ang)*rho_1(nr, iso)
160 i2_up = r2l(nr, l_ang)*rho_2(nr, iso)
162 DO ir = nr - 1, 1, -1
163 i1_down = i1_down + oor2l(ir, l_ang + 1)*rho_1(ir, iso)
164 i2_down = i2_down + oor2l(ir, l_ang + 1)*rho_2(ir, iso)
167 vrad_h(nr, iso) = vrad_h(nr, iso) + prefactor* &
168 (oor2l(nr, l_ang + 1)*i1_up + r2l(nr, l_ang)*i1_down)
169 vrad_s(nr, iso) = vrad_s(nr, iso) + prefactor* &
170 (oor2l(nr, l_ang + 1)*i2_up + r2l(nr, l_ang)*i2_down)
172 DO ir = nr - 1, 1, -1
173 i1_up = i1_up + r2l(ir, l_ang)*rho_1(ir, iso)
174 i1_down = i1_down - oor2l(ir, l_ang + 1)*rho_1(ir, iso)
175 i2_up = i2_up + r2l(ir, l_ang)*rho_2(ir, iso)
176 i2_down = i2_down - oor2l(ir, l_ang + 1)*rho_2(ir, iso)
178 vrad_h(ir, iso) = vrad_h(ir, iso) + prefactor* &
179 (oor2l(ir, l_ang + 1)*i1_up + r2l(ir, l_ang)*i1_down)
180 vrad_s(ir, iso) = vrad_s(ir, iso) + prefactor* &
181 (oor2l(ir, l_ang + 1)*i2_up + r2l(ir, l_ang)*i2_down)
187 DEALLOCATE (rho_1, rho_2)
189 CALL timestop(handle)
210 SUBROUTINE vh_1c_gg_integrals(qs_env, energy_hartree_1c, ecoul_1c, local_rho_set, para_env, tddft, local_rho_set_2nd, &
214 REAL(kind=
dp),
INTENT(out) :: energy_hartree_1c
218 LOGICAL,
INTENT(IN) :: tddft
220 LOGICAL,
INTENT(IN),
OPTIONAL :: core_2nd
222 CHARACTER(LEN=*),
PARAMETER :: routinen =
'Vh_1c_gg_integrals'
224 INTEGER :: bo(2), handle, iat, iatom, ikind, ipgf1, is1, iset1, iso, l_ang, llmax, lmax0, &
225 lmax0_2nd, lmax_0, m1, max_iso, max_iso_not0, max_s_harm, maxl, maxso, mepos, n1, nat, &
226 nchan_0, nkind, nr, nset, nsotot, nspins, num_pe
227 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: cg_n_list
228 INTEGER,
ALLOCATABLE,
DIMENSION(:, :, :) :: cg_list
229 INTEGER,
DIMENSION(:),
POINTER :: atom_list, lmax, lmin, npgf
230 LOGICAL :: core_charge, l_2nd_local_rho, &
231 my_core_2nd, my_periodic, paw_atom
232 REAL(
dp) :: back_ch, factor
233 REAL(
dp),
ALLOCATABLE,
DIMENSION(:) :: gexp, sqrtwr
234 REAL(
dp),
ALLOCATABLE,
DIMENSION(:, :) :: avh1b_00, avh1b_hh, avh1b_ss, g0_h_w
235 REAL(
dp),
DIMENSION(:),
POINTER :: rrad_z, vrrad_z
236 REAL(
dp),
DIMENSION(:, :),
POINTER :: g0_h, g0_h_2nd, gsph, rrad_0, vh1_h, &
238 REAL(
dp),
DIMENSION(:, :, :),
POINTER :: my_cg, qlm_gg, qlm_gg_2nd
248 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
249 TYPE(
rho0_atom_type),
DIMENSION(:),
POINTER :: rho0_atom_set, rho0_atom_set_2nd
251 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho_atom_set, rho_atom_set_2nd
253 TYPE(
rhoz_type),
DIMENSION(:),
POINTER :: rhoz_set, rhoz_set_2nd
255 CALL timeset(routinen, handle)
257 NULLIFY (cell, dft_control, poisson_env, pw_env, qs_charges)
258 NULLIFY (atomic_kind_set, qs_kind_set, rho_atom_set, rho0_atom_set)
259 NULLIFY (rho0_mpole, rhoz_set)
260 NULLIFY (atom_list, grid_atom, harmonics)
261 NULLIFY (basis_1c, lmin, lmax, npgf, zet)
265 cell=cell, dft_control=dft_control, &
266 atomic_kind_set=atomic_kind_set, &
267 qs_kind_set=qs_kind_set, &
268 pw_env=pw_env, qs_charges=qs_charges)
270 CALL pw_env_get(pw_env, poisson_env=poisson_env)
273 back_ch = qs_charges%background*cell%deth
276 CALL get_local_rho(local_rho_set, rho_atom_set, rho0_atom_set, rho0_mpole, rhoz_set)
279 l_2nd_local_rho = .false.
280 IF (
PRESENT(local_rho_set_2nd))
THEN
281 l_2nd_local_rho = .true.
282 NULLIFY (rho_atom_set_2nd, rho0_atom_set_2nd, rhoz_set_2nd)
283 CALL get_local_rho(local_rho_set_2nd, rho_atom_set_2nd, rho0_atom_set_2nd, rho0_mpole_2nd, rhoz_set=rhoz_set_2nd)
286 nkind =
SIZE(atomic_kind_set, 1)
287 nspins = dft_control%nspins
289 core_charge = .NOT. tddft
291 IF (
PRESENT(core_2nd)) my_core_2nd = .NOT. core_2nd
306 energy_hartree_1c = 0.0_dp
311 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom_list, natom=nat)
313 grid_atom=grid_atom, &
314 harmonics=harmonics, ngrid_rad=nr, &
315 max_iso_not0=max_iso_not0, paw_atom=paw_atom)
317 basis_set=basis_1c, basis_type=
"GAPW_1C")
322 maxso=maxso, npgf=npgf, maxl=maxl, &
325 max_s_harm = harmonics%max_s_harm
326 llmax = harmonics%llmax
329 ALLOCATE (gsph(nr, nsotot))
331 ALLOCATE (sqrtwr(nr), g0_h_w(nr, 0:lmax_0))
333 NULLIFY (vh1_h, vh1_s)
334 ALLOCATE (vh1_h(nr, max_iso_not0))
335 ALLOCATE (vh1_s(nr, max_iso_not0))
337 ALLOCATE (avh1b_hh(nsotot, nsotot))
338 ALLOCATE (avh1b_ss(nsotot, nsotot))
339 ALLOCATE (avh1b_00(nsotot, nsotot))
340 ALLOCATE (cg_list(2,
nsoset(maxl)**2, max_s_harm), cg_n_list(max_s_harm))
342 NULLIFY (qlm_gg, g0_h)
345 qlm_gg=qlm_gg, g0_h=g0_h)
347 IF (
PRESENT(local_rho_set_2nd))
THEN
348 NULLIFY (qlm_gg_2nd, g0_h_2nd)
350 l0_ikind=lmax0_2nd, &
351 qlm_gg=qlm_gg_2nd, g0_h=g0_h_2nd)
355 IF (nchan_0 > max_iso_not0) cpabort(
"channels for rho0 > # max of spherical harmonics")
357 NULLIFY (rrad_z, my_cg)
358 my_cg => harmonics%my_CG
366 sqrtwr(1:nr) = sqrt(grid_atom%wr(1:nr))
368 g0_h_w(1:nr, l_ang) = g0_h(1:nr, l_ang)*grid_atom%wr(1:nr)
374 DO ipgf1 = 1, npgf(iset1)
375 gexp(1:nr) = exp(-zet(ipgf1, iset1)*grid_atom%rad2(1:nr))*sqrtwr(1:nr)
376 DO is1 =
nsoset(lmin(iset1) - 1) + 1,
nsoset(lmax(iset1))
377 iso = is1 + (ipgf1 - 1)*n1 + m1
378 l_ang =
indso(1, is1)
379 gsph(1:nr, iso) = grid_atom%rad2l(1:nr, l_ang)*gexp(1:nr)
386 num_pe = para_env%num_pe
387 mepos = para_env%mepos
390 DO iat = bo(1), bo(2)
391 iatom = atom_list(iat)
392 rho_atom => rho_atom_set(iatom)
394 NULLIFY (rrad_z, vrrad_z, rrad_0, vrrad_0)
395 IF (core_charge)
THEN
396 rrad_z => rhoz_set(ikind)%r_coef
398 IF (my_core_2nd)
THEN
399 IF (l_2nd_local_rho)
THEN
400 vrrad_z => rhoz_set_2nd(ikind)%vr_coef
402 vrrad_z => rhoz_set(ikind)%vr_coef
405 rrad_0 => rho0_atom_set(iatom)%rho0_rad_h%r_coef
406 vrrad_0 => rho0_atom_set(iatom)%vrho0_rad_h%r_coef
407 IF (l_2nd_local_rho)
THEN
408 rho_atom => rho_atom_set_2nd(iatom)
409 vrrad_0 => rho0_atom_set_2nd(iatom)%vrho0_rad_h%r_coef
411 IF (my_periodic .AND. back_ch .GT. 1.e-3_dp)
THEN
412 factor = -2.0_dp*
pi/3.0_dp*sqrt(
fourpi)*qs_charges%background
417 CALL vh_1c_atom_potential(rho_atom, vrrad_0, &
418 grid_atom, my_core_2nd, vrrad_z, vh1_h, vh1_s, &
419 nchan_0, nspins, max_iso_not0, factor)
421 IF (l_2nd_local_rho) rho_atom => rho_atom_set(iatom)
423 CALL vh_1c_atom_energy(energy_hartree_1c, ecoul_1c, rho_atom, rrad_0, &
424 grid_atom, iatom, core_charge, rrad_z, vh1_h, vh1_s, &
425 nchan_0, nspins, max_iso_not0)
427 IF (l_2nd_local_rho) rho_atom => rho_atom_set_2nd(iatom)
429 CALL vh_1c_atom_integrals(rho_atom, &
432 avh1b_hh, avh1b_ss, avh1b_00, vh1_h, vh1_s, max_iso_not0, &
433 max_s_harm, llmax, cg_list, cg_n_list, &
434 nset, npgf, lmin, lmax, nsotot, maxso, nspins, nchan_0, gsph, &
435 g0_h_w, my_cg, qlm_gg)
439 DEALLOCATE (avh1b_hh)
440 DEALLOCATE (avh1b_ss)
441 DEALLOCATE (avh1b_00)
442 DEALLOCATE (vh1_h, vh1_s)
443 DEALLOCATE (cg_list, cg_n_list)
446 DEALLOCATE (sqrtwr, g0_h_w)
455 CALL para_env%sum(energy_hartree_1c)
457 CALL timestop(handle)
477 SUBROUTINE vh_1c_atom_potential(rho_atom, vrrad_0, &
478 grid_atom, core_charge, vrrad_z, Vh1_h, Vh1_s, &
479 nchan_0, nspins, max_iso_not0, bfactor)
482 REAL(
dp),
DIMENSION(:, :),
POINTER :: vrrad_0
484 LOGICAL,
INTENT(IN) :: core_charge
485 REAL(
dp),
DIMENSION(:),
POINTER :: vrrad_z
486 REAL(
dp),
DIMENSION(:, :),
POINTER :: vh1_h, vh1_s
487 INTEGER,
INTENT(IN) :: nchan_0, nspins, max_iso_not0
488 REAL(
dp),
INTENT(IN) :: bfactor
490 INTEGER :: ir, iso, ispin, nr
496 CALL get_rho_atom(rho_atom=rho_atom, vrho_rad_h=vr_h, vrho_rad_s=vr_s)
501 IF (core_charge) vh1_h(:, 1) = vrrad_z(:)
504 vh1_s(:, iso) = vrrad_0(:, iso)
508 DO iso = 1, max_iso_not0
509 vh1_h(:, iso) = vh1_h(:, iso) + vr_h(ispin)%r_coef(:, iso)
510 vh1_s(:, iso) = vh1_s(:, iso) + vr_s(ispin)%r_coef(:, iso)
514 IF (bfactor /= 0._dp)
THEN
516 vh1_h(ir, 1) = vh1_h(ir, 1) + bfactor*grid_atom%rad2(ir)*grid_atom%wr(ir)
517 vh1_s(ir, 1) = vh1_s(ir, 1) + bfactor*grid_atom%rad2(ir)*grid_atom%wr(ir)
521 END SUBROUTINE vh_1c_atom_potential
541 SUBROUTINE vh_1c_atom_energy(energy_hartree_1c, ecoul_1c, rho_atom, rrad_0, &
542 grid_atom, iatom, core_charge, rrad_z, Vh1_h, Vh1_s, &
543 nchan_0, nspins, max_iso_not0)
545 REAL(
dp),
INTENT(INOUT) :: energy_hartree_1c
548 REAL(
dp),
DIMENSION(:, :),
POINTER :: rrad_0
550 INTEGER,
INTENT(IN) :: iatom
551 LOGICAL,
INTENT(IN) :: core_charge
552 REAL(
dp),
DIMENSION(:),
POINTER :: rrad_z
553 REAL(
dp),
DIMENSION(:, :),
POINTER :: vh1_h, vh1_s
554 INTEGER,
INTENT(IN) :: nchan_0, nspins, max_iso_not0
556 INTEGER :: iso, ispin, nr
557 REAL(
dp) :: ecoul_1_0, ecoul_1_h, ecoul_1_s, &
564 CALL get_rho_atom(rho_atom=rho_atom, rho_rad_h=r_h, rho_rad_s=r_s)
568 IF (core_charge)
THEN
569 ecoul_1_z = 0.5_dp*sum(vh1_h(:, 1)*rrad_z(:)*grid_atom%wr(:))
575 ecoul_1_0 = ecoul_1_0 + 0.5_dp*sum(vh1_s(:, iso)*rrad_0(:, iso)*grid_atom%wr(:))
582 DO iso = 1, max_iso_not0
583 ecoul_1_s = ecoul_1_s + 0.5_dp*sum(vh1_s(:, iso)*r_s(ispin)%r_coef(:, iso)*grid_atom%wr(:))
584 ecoul_1_h = ecoul_1_h + 0.5_dp*sum(vh1_h(:, iso)*r_h(ispin)%r_coef(:, iso)*grid_atom%wr(:))
588 CALL set_ecoul_1c(ecoul_1c, iatom, ecoul_1_z=ecoul_1_z, ecoul_1_0=ecoul_1_0)
589 CALL set_ecoul_1c(ecoul_1c=ecoul_1c, iatom=iatom, ecoul_1_h=ecoul_1_h, ecoul_1_s=ecoul_1_s)
591 energy_hartree_1c = energy_hartree_1c + ecoul_1_z - ecoul_1_0
592 energy_hartree_1c = energy_hartree_1c + ecoul_1_h - ecoul_1_s
594 END SUBROUTINE vh_1c_atom_energy
624 SUBROUTINE vh_1c_atom_integrals(rho_atom, &
625 aVh1b_hh, aVh1b_ss, aVh1b_00, Vh1_h, Vh1_s, max_iso_not0, &
626 max_s_harm, llmax, cg_list, cg_n_list, &
627 nset, npgf, lmin, lmax, nsotot, maxso, nspins, nchan_0, gsph, &
628 g0_h_w, my_CG, Qlm_gg)
631 REAL(
dp),
DIMENSION(:, :) :: avh1b_hh, avh1b_ss, avh1b_00
632 REAL(
dp),
DIMENSION(:, :),
POINTER :: vh1_h, vh1_s
633 INTEGER,
INTENT(IN) :: max_iso_not0, max_s_harm, llmax
634 INTEGER,
DIMENSION(:, :, :) :: cg_list
635 INTEGER,
DIMENSION(:) :: cg_n_list
636 INTEGER,
INTENT(IN) :: nset
637 INTEGER,
DIMENSION(:),
POINTER :: npgf, lmin, lmax
638 INTEGER,
INTENT(IN) :: nsotot, maxso, nspins, nchan_0
639 REAL(
dp),
DIMENSION(:, :),
POINTER :: gsph
640 REAL(
dp),
DIMENSION(:, 0:) :: g0_h_w
641 REAL(
dp),
DIMENSION(:, :, :),
POINTER :: my_cg, qlm_gg
643 INTEGER :: icg, ipgf1, ipgf2, ir, is1, is2, iset1, &
644 iset2, iso, iso1, iso2, ispin, l_ang, &
645 m1, m2, max_iso_not0_local, n1, n2, nr
646 REAL(
dp) :: gvg_0, gvg_h, gvg_s
647 TYPE(
rho_atom_coeff),
DIMENSION(:),
POINTER :: int_local_h, int_local_s
649 NULLIFY (int_local_h, int_local_s)
651 ga_vlocal_gb_h=int_local_h, &
652 ga_vlocal_gb_s=int_local_s)
665 CALL get_none0_cg_list(my_cg, lmin(iset1), lmax(iset1), lmin(iset2), lmax(iset2), &
666 max_s_harm, llmax, cg_list, cg_n_list, max_iso_not0_local)
669 DO ipgf1 = 1, npgf(iset1)
671 DO ipgf2 = 1, npgf(iset2)
674 l_ang =
indso(1, iso)
675 gvg_0 = sum(vh1_s(:, iso)*g0_h_w(:, l_ang))
676 DO icg = 1, cg_n_list(iso)
677 is1 = cg_list(1, icg, iso)
678 is2 = cg_list(2, icg, iso)
680 iso1 = is1 + n1*(ipgf1 - 1) + m1
681 iso2 = is2 + n2*(ipgf2 - 1) + m2
686 gvg_h = gvg_h + gsph(ir, iso1)*gsph(ir, iso2)*vh1_h(ir, iso)
687 gvg_s = gvg_s + gsph(ir, iso1)*gsph(ir, iso2)*vh1_s(ir, iso)
690 avh1b_hh(iso1, iso2) = avh1b_hh(iso1, iso2) + gvg_h*my_cg(is1, is2, iso)
691 avh1b_ss(iso1, iso2) = avh1b_ss(iso1, iso2) + gvg_s*my_cg(is1, is2, iso)
692 avh1b_00(iso1, iso2) = avh1b_00(iso1, iso2) + gvg_0*qlm_gg(iso1, iso2, iso)
697 DO iso = nchan_0 + 1, max_iso_not0
698 DO icg = 1, cg_n_list(iso)
699 is1 = cg_list(1, icg, iso)
700 is2 = cg_list(2, icg, iso)
702 iso1 = is1 + n1*(ipgf1 - 1) + m1
703 iso2 = is2 + n2*(ipgf2 - 1) + m2
708 gvg_h = gvg_h + gsph(ir, iso1)*gsph(ir, iso2)*vh1_h(ir, iso)
709 gvg_s = gvg_s + gsph(ir, iso1)*gsph(ir, iso2)*vh1_s(ir, iso)
712 avh1b_hh(iso1, iso2) = avh1b_hh(iso1, iso2) + gvg_h*my_cg(is1, is2, iso)
713 avh1b_ss(iso1, iso2) = avh1b_ss(iso1, iso2) + gvg_s*my_cg(is1, is2, iso)
724 CALL daxpy(nsotot*nsotot, 1.0_dp, avh1b_hh, 1, int_local_h(ispin)%r_coef, 1)
725 CALL daxpy(nsotot*nsotot, 1.0_dp, avh1b_ss, 1, int_local_s(ispin)%r_coef, 1)
726 CALL daxpy(nsotot*nsotot, -1.0_dp, avh1b_00, 1, int_local_h(ispin)%r_coef, 1)
727 CALL daxpy(nsotot*nsotot, -1.0_dp, avh1b_00, 1, int_local_s(ispin)%r_coef, 1)
730 END SUBROUTINE vh_1c_atom_integrals
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)
...
Handles all functions related to the CELL.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public init_coulomb_local(hartree_local, natom)
...
subroutine, public vh_1c_gg_integrals(qs_env, energy_hartree_1c, ecoul_1c, local_rho_set, para_env, tddft, local_rho_set_2nd, core_2nd)
Calculates one center GAPW Hartree energies and matrix elements Hartree potentials are input Takes po...
subroutine, public calculate_vh_1center(vrad_h, vrad_s, rrad_h, rrad_s, rrad_0, rrad_z, grid_atom)
Calculates Hartree potential for hard and soft densities (including nuclear charge and compensation c...
subroutine, public allocate_ecoul_1center(ecoul_1c, natom)
...
subroutine, public set_ecoul_1c(ecoul_1c, iatom, ecoul_1_h, ecoul_1_s, ecoul_1_z, ecoul_1_0)
...
Defines the basic variable types.
integer, parameter, public dp
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
real(kind=dp), parameter, public fourpi
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
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
functions related to the poisson solver on regular grids
integer, parameter, public pw_poisson_periodic
container for information about total charges on the grids
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.
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.
subroutine, public get_qs_kind_set(qs_kind_set, all_potential_present, tnadd_potential_present, gth_potential_present, sgp_potential_present, paw_atom_present, dft_plus_u_atom_present, maxcgf, maxsgf, maxco, maxco_proj, maxgtops, maxlgto, maxlprj, maxnset, maxsgf_set, ncgf, npgf, nset, nsgf, nshell, maxpol, maxlppl, maxlppnl, maxppnl, nelectron, maxder, max_ngrid_rad, max_sph_harm, maxg_iso_not0, lmax_rho0, basis_rcut, basis_type, total_zeff_corr, npgf_seg)
Get attributes of an atomic kind set.
subroutine, public get_local_rho(local_rho_set, rho_atom_set, rho0_atom_set, rho0_mpole, rhoz_set)
...
subroutine, public get_rho0_mpole(rho0_mpole, g0_h, vg0_h, iat, ikind, lmax_0, l0_ikind, mp_gau_ikind, mp_rho, norm_g0l_h, qlm_gg, qlm_car, qlm_tot, zet0_h, igrid_zet0_s, rpgf0_h, rpgf0_s, max_rpgf0_s, rho0_s_rs, rho0_s_gs)
...
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)
...
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 defining parameters related to the simulation cell.
stores all the informations relevant to an mpi environment
contained for different pw related things
environment for the poisson solver
Container for information about total charges on the grids.
Provides all information about a quickstep kind.