66#include "./base/base_uses.f90"
74 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_rho0_ggrid'
91 SUBROUTINE put_rho0_on_grid(qs_env, rho0, tot_rs_int, my_pools, my_rs_grids, my_rs_descs)
95 REAL(kind=
dp),
INTENT(OUT) :: tot_rs_int
99 OPTIONAL,
POINTER :: my_rs_grids
101 OPTIONAL,
POINTER :: my_rs_descs
103 CHARACTER(LEN=*),
PARAMETER :: routinen =
'put_rho0_on_grid'
105 INTEGER :: auxbas_grid, handle, iat, iatom, igrid, &
106 ikind, ithread, j, l0_ikind, lmax0, &
107 nat, nch_ik, nch_max, npme
108 INTEGER,
DIMENSION(:),
POINTER :: atom_list, cores
110 REAL(kind=
dp) :: eps_rho_rspace, rpgf0, zet0
111 REAL(kind=
dp),
DIMENSION(3) :: ra
112 REAL(kind=
dp),
DIMENSION(:),
POINTER :: qlm_c
113 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pab
126 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
133 CALL timeset(routinen, handle)
135 NULLIFY (atomic_kind_set, qs_kind_set, cores, pab, qlm_c)
137 NULLIFY (dft_control, pw_env, particle_set, para_env, cell, rho0_s_gs, rho0_s_rs)
138 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control, &
139 particle_set=particle_set, &
140 atomic_kind_set=atomic_kind_set, &
141 qs_kind_set=qs_kind_set, &
143 pw_env=pw_env, cell=cell)
144 eps_rho_rspace = dft_control%qs_control%eps_rho_rspace
146 NULLIFY (descs, pw_pools)
147 CALL pw_env_get(pw_env=pw_env, rs_descs=descs, rs_grids=grids, pw_pools=pw_pools)
148 auxbas_grid = pw_env%auxbas_grid
150 NULLIFY (rho0_s_gs, rho0_s_rs)
152 zet0_h=zet0, igrid_zet0_s=igrid, &
153 rho0_s_gs=rho0_s_gs, &
157 NULLIFY (rs_grid, desc, pw_pool)
159 IF (
PRESENT(my_pools))
THEN
160 desc => my_rs_descs(igrid)%rs_desc
161 rs_grid => my_rs_grids(igrid)
162 pw_pool => my_pools(igrid)%pool
164 desc => descs(igrid)%rs_desc
165 rs_grid => grids(igrid)
166 pw_pool => pw_pools(igrid)%pool
169 cpassert(
ASSOCIATED(desc))
170 cpassert(
ASSOCIATED(pw_pool))
172 IF (igrid /= auxbas_grid)
THEN
173 CALL pw_pool%create_pw(coeff_rspace)
174 CALL pw_pool%create_pw(coeff_gspace)
180 ALLOCATE (pab(nch_max, 1))
182 DO ikind = 1,
SIZE(atomic_kind_set)
183 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom_list, natom=nat)
184 CALL get_qs_kind(qs_kind_set(ikind), paw_atom=paw_atom)
186 IF (.NOT. paw_atom .AND. dft_control%qs_control%gapw_control%nopaw_as_gpw) cycle
188 CALL get_rho0_mpole(rho0_mpole=rho0, ikind=ikind, l0_ikind=l0_ikind, &
199 iatom = atom_list(iat)
200 ra(:) =
pbc(particle_set(iatom)%r, cell)
201 IF (rs_grid%desc%parallel .AND. .NOT. rs_grid%desc%distributed)
THEN
203 IF (
modulo(nat, rs_grid%desc%group_size) == rs_grid%desc%my_pos)
THEN
218 iatom = atom_list(iat)
222 pab(1:nch_ik, 1) = qlm_c(1:nch_ik)
224 ra(:) =
pbc(particle_set(iatom)%r, cell)
227 l0_ikind, zet0, 0, 0, 0.0_dp, 0, &
228 ra, (/0.0_dp, 0.0_dp, 0.0_dp/), 1.0_dp, pab, 0, 0, &
230 use_subpatch=.true., subpatch_pattern=0)
236 IF (
ASSOCIATED(cores))
THEN
242 IF (igrid /= auxbas_grid)
THEN
246 CALL pw_axpy(coeff_gspace, rho0_s_gs)
250 CALL pw_pool%give_back_pw(coeff_rspace)
251 CALL pw_pool%give_back_pw(coeff_gspace)
254 CALL pw_pool%create_pw(rho0_r_tmp)
261 CALL pw_pool%give_back_pw(rho0_r_tmp)
266 CALL timestop(handle)
280 CHARACTER(len=*),
PARAMETER :: routinen =
'rho0_s_grid_create'
285 CALL timeset(routinen, handle)
287 cpassert(
ASSOCIATED(pw_env))
289 NULLIFY (auxbas_pw_pool)
290 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
291 cpassert(
ASSOCIATED(auxbas_pw_pool))
294 cpassert(
ASSOCIATED(rho0_mpole))
297 IF (
ASSOCIATED(rho0_mpole%rho0_s_rs))
THEN
298 CALL rho0_mpole%rho0_s_rs%release()
300 ALLOCATE (rho0_mpole%rho0_s_rs)
302 CALL auxbas_pw_pool%create_pw(rho0_mpole%rho0_s_rs)
305 IF (
ASSOCIATED(rho0_mpole%rho0_s_gs))
THEN
306 CALL rho0_mpole%rho0_s_gs%release()
308 ALLOCATE (rho0_mpole%rho0_s_gs)
310 CALL auxbas_pw_pool%create_pw(rho0_mpole%rho0_s_gs)
313 rho0_mpole%igrid_zet0_s =
gaussian_gridlevel(pw_env%gridlevel_info, 2.0_dp*rho0_mpole%zet0_h)
315 CALL timestop(handle)
333 local_rho_set_2nd, atener, kforce, my_pools, my_rs_descs)
338 LOGICAL,
INTENT(IN) :: calculate_forces
339 TYPE(
local_rho_type),
OPTIONAL,
POINTER :: local_rho_set, local_rho_set_2nd
340 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL :: atener
341 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: kforce
345 OPTIONAL,
POINTER :: my_rs_descs
347 CHARACTER(LEN=*),
PARAMETER :: routinen =
'integrate_vhg0_rspace'
349 INTEGER :: auxbas_grid, bo(2), handle, i, iat, iatom, ic, icg, ico, ig1, ig2, igrid, ii, &
350 ikind, ipgf1, ipgf2, is, iset1, iset2, iso, iso1, iso2, ispin, j, l0_ikind, llmax, lmax0, &
351 lshell, lx, ly, lz, m1, m2, max_iso_not0_local, max_s_harm, maxl, maxso, mepos, n1, n2, &
352 nat, nch_ik, nch_max, ncurr, nset, nsotot, nspins, num_pe
353 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: cg_n_list
354 INTEGER,
ALLOCATABLE,
DIMENSION(:, :, :) :: cg_list
355 INTEGER,
DIMENSION(:),
POINTER :: atom_list, lmax, lmin, npgf
356 LOGICAL :: grid_distributed, paw_atom, use_virial
357 REAL(kind=
dp) :: eps_rho_rspace, force_tmp(3), fscale, &
359 REAL(kind=
dp),
DIMENSION(3, 3) :: my_virial_a, my_virial_b
360 REAL(kind=
dp),
DIMENSION(:),
POINTER :: hab_sph, norm_l, qlm
361 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: hab, hdab_sph, intloc, pab
362 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: a_hdab_sph, hdab, qlm_gg
363 REAL(kind=
dp),
DIMENSION(:, :, :, :),
POINTER :: a_hdab
376 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
382 TYPE(
rho_atom_coeff),
DIMENSION(:),
POINTER :: int_local_h, int_local_s
387 CALL timeset(routinen, handle)
398 NULLIFY (atomic_kind_set, qs_kind_set, dft_control, particle_set)
399 NULLIFY (cell, force, pw_env, rho0_mpole, rho_atom_set)
402 atomic_kind_set=atomic_kind_set, &
403 qs_kind_set=qs_kind_set, &
405 dft_control=dft_control, &
406 force=force, pw_env=pw_env, &
407 rho0_mpole=rho0_mpole, &
408 rho_atom_set=rho_atom_set, &
409 particle_set=particle_set, &
412 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
414 nspins = dft_control%nspins
429 IF (
PRESENT(local_rho_set)) &
430 CALL get_local_rho(local_rho_set, rho0_mpole=rho0_mpole, rho_atom_set=rho_atom_set)
434 IF (
PRESENT(local_rho_set_2nd))
THEN
435 CALL get_local_rho(local_rho_set_2nd, rho_atom_set=rho_atom_set)
438 zet0_h=zet0, igrid_zet0_s=igrid, &
442 NULLIFY (rs_descs, pw_pools)
443 cpassert(
ASSOCIATED(pw_env))
444 CALL pw_env_get(pw_env, rs_descs=rs_descs, pw_pools=pw_pools)
447 auxbas_grid = pw_env%auxbas_grid
451 IF (
PRESENT(my_pools))
THEN
452 rs_desc => my_rs_descs(igrid)%rs_desc
453 pw_pool => my_pools(igrid)%pool
455 rs_desc => rs_descs(igrid)%rs_desc
456 pw_pool => pw_pools(igrid)%pool
459 CALL pw_pool%create_pw(coeff_gspace)
460 CALL pw_pool%create_pw(coeff_rspace)
462 IF (igrid /= auxbas_grid)
THEN
463 pw_aux => pw_pools(auxbas_grid)%pool
464 CALL pw_aux%create_pw(coeff_gaux)
466 CALL pw_copy(coeff_gaux, coeff_gspace)
468 CALL pw_aux%give_back_pw(coeff_gaux)
469 CALL pw_aux%create_pw(coeff_raux)
470 fscale = coeff_rspace%pw_grid%dvol/coeff_raux%pw_grid%dvol
472 CALL pw_aux%give_back_pw(coeff_raux)
475 IF (coeff_gspace%pw_grid%spherical)
THEN
479 CALL pw_copy(v_rspace, coeff_rspace)
482 CALL pw_pool%give_back_pw(coeff_gspace)
489 CALL pw_pool%give_back_pw(coeff_rspace)
493 eps_rho_rspace = dft_control%qs_control%eps_rho_rspace
497 NULLIFY (hab, hab_sph, hdab, hdab_sph, pab, a_hdab, a_hdab_sph)
503 CALL reallocate(a_hdab, 1, 3, 1, 3, 1, nch_max, 1, 1)
504 CALL reallocate(a_hdab_sph, 1, 3, 1, 3, 1, nch_max)
509 grid_distributed = rs_v%desc%distributed
512 IF (
PRESENT(kforce))
THEN
516 DO ikind = 1,
SIZE(atomic_kind_set, 1)
517 NULLIFY (basis_1c_set, atom_list, harmonics)
518 CALL get_atomic_kind(atomic_kind_set(ikind), atom_list=atom_list, natom=nat)
520 basis_set=basis_1c_set, basis_type=
"GAPW_1C", &
524 IF (.NOT. paw_atom) cycle
526 NULLIFY (qlm_gg, lmax, npgf)
528 l0_ikind=l0_ikind, qlm_gg=qlm_gg, &
532 lmax=lmax, lmin=lmin, &
533 maxso=maxso, maxl=maxl, &
534 nset=nset, npgf=npgf)
537 ALLOCATE (intloc(nsotot, nsotot))
543 max_s_harm = harmonics%max_s_harm
544 llmax = harmonics%llmax
546 ALLOCATE (cg_list(2,
nsoset(maxl)**2, max_s_harm), cg_n_list(max_s_harm))
548 num_pe = para_env%num_pe
549 mepos = para_env%mepos
552 IF (.NOT. grid_distributed .AND. j /= mepos) cycle
554 DO iat = bo(1), bo(2)
555 iatom = atom_list(iat)
556 ra(:) =
pbc(particle_set(iatom)%r, cell)
559 CALL get_rho0_mpole(rho0_mpole=rho0_mpole, iat=iatom, qlm_tot=qlm)
571 l0_ikind, zet0, 0, 0, 0.0_dp, 0, &
572 ra, (/0.0_dp, 0.0_dp, 0.0_dp/), rs_v, &
573 hab, pab, o1=0, o2=0, &
575 calculate_forces=calculate_forces, &
576 use_virial=use_virial, my_virial_a=my_virial_a, my_virial_b=my_virial_b, &
577 hdab=hdab, a_hdab=a_hdab, use_subpatch=.true., subpatch_pattern=0)
580 DO lshell = 0, l0_ikind
581 DO is = 1,
nso(lshell)
582 iso = is +
nsoset(lshell - 1)
583 hab_sph(iso) = 0.0_dp
584 hdab_sph(1:3, iso) = 0.0_dp
585 a_hdab_sph(1:3, 1:3, iso) = 0.0_dp
586 DO ic = 1,
nco(lshell)
587 ico = ic +
ncoset(lshell - 1)
591 hab_sph(iso) = hab_sph(iso) + &
595 IF (calculate_forces)
THEN
596 hdab_sph(1:3, iso) = hdab_sph(1:3, iso) + &
604 a_hdab_sph(i, ii, iso) = a_hdab_sph(i, ii, iso) + &
607 a_hdab(i, ii, ico, 1)
621 CALL get_none0_cg_list(harmonics%my_CG, lmin(iset1), lmax(iset1), lmin(iset2), lmax(iset2), &
622 max_s_harm, llmax, cg_list, cg_n_list, max_iso_not0_local)
624 DO ipgf1 = 1, npgf(iset1)
626 DO ipgf2 = 1, npgf(iset2)
628 DO iso = 1, min(
nsoset(l0_ikind), max_iso_not0_local)
629 DO icg = 1, cg_n_list(iso)
630 iso1 = cg_list(1, icg, iso)
631 iso2 = cg_list(2, icg, iso)
633 ig1 = iso1 + n1*(ipgf1 - 1) + m1
634 ig2 = iso2 + n2*(ipgf2 - 1) + m2
636 intloc(ig1, ig2) = intloc(ig1, ig2) + qlm_gg(ig1, ig2, iso)*hab_sph(iso)
648 IF (grid_distributed)
THEN
650 CALL para_env%sum(intloc)
654 rho_atom => rho_atom_set(iatom)
655 CALL get_rho_atom(rho_atom=rho_atom, ga_vlocal_gb_h=int_local_h, ga_vlocal_gb_s=int_local_s)
657 int_local_h(ispin)%r_coef = int_local_h(ispin)%r_coef + intloc
658 int_local_s(ispin)%r_coef = int_local_s(ispin)%r_coef + intloc
662 IF (
PRESENT(atener))
THEN
663 DO iso = 1,
nsoset(l0_ikind)
664 atener(iatom) = atener(iatom) + 0.5_dp*qlm(iso)*hab_sph(iso)
668 IF (calculate_forces)
THEN
669 force_tmp(1:3) = 0.0_dp
670 DO iso = 1,
nsoset(l0_ikind)
671 force_tmp(1) = force_tmp(1) + qlm(iso)*hdab_sph(1, iso)
672 force_tmp(2) = force_tmp(2) + qlm(iso)*hdab_sph(2, iso)
673 force_tmp(3) = force_tmp(3) + qlm(iso)*hdab_sph(3, iso)
675 force(ikind)%g0s_Vh_elec(1:3, iat) = force(ikind)%g0s_Vh_elec(1:3, iat) + fscale*force_tmp(1:3)
679 DO iso = 1,
nsoset(l0_ikind)
683 virial%pv_gapw(i, ii) = virial%pv_gapw(i, ii) + fscale*qlm(iso)*a_hdab_sph(i, ii, iso)
684 virial%pv_virial(i, ii) = virial%pv_virial(i, ii) + fscale*qlm(iso)*a_hdab_sph(i, ii, iso)
694 DEALLOCATE (cg_list, cg_n_list)
700 DEALLOCATE (hab, hdab, hab_sph, hdab_sph, pab, a_hdab, a_hdab_sph)
702 CALL timestop(handle)
static GRID_HOST_DEVICE int modulo(int a, int m)
Equivalent of Fortran's MODULO, which always return a positive number. https://gcc....
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...
integer function, public gaussian_gridlevel(gridlevel_info, exponent)
...
Fortran API for the grid package, which is written in C.
integer, parameter, public grid_func_ab
subroutine, public integrate_pgf_product(la_max, zeta, la_min, lb_max, zetb, lb_min, ra, rab, rsgrid, hab, pab, o1, o2, radius, calculate_forces, force_a, force_b, compute_tau, use_virial, my_virial_a, my_virial_b, hdab, hadb, a_hdab, use_subpatch, subpatch_pattern)
low level function to compute matrix elements of primitive gaussian functions
subroutine, public collocate_pgf_product(la_max, zeta, la_min, lb_max, zetb, lb_min, ra, rab, scale, pab, o1, o2, rsgrid, ga_gb_function, radius, use_subpatch, subpatch_pattern)
low level collocation of primitive gaussian functions
Defines the basic variable types.
integer, parameter, public dp
Utility routines for the memory handling.
Interface to the message passing library MPI.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public nco
integer, dimension(:), allocatable, public nsoset
integer, dimension(:), allocatable, public ncoset
integer, dimension(:, :), allocatable, public indco
integer, dimension(:), allocatable, public nso
Define the data structure for the particle information.
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
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_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.
Integrate single or product functions over a potential on a RS grid.
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_local_rho(local_rho_set, rho_atom_set, rho0_atom_set, rho0_mpole, rhoz_set)
...
subroutine, public put_rho0_on_grid(qs_env, rho0, tot_rs_int, my_pools, my_rs_grids, my_rs_descs)
...
subroutine, public rho0_s_grid_create(pw_env, rho0_mpole)
...
subroutine, public integrate_vhg0_rspace(qs_env, v_rspace, para_env, calculate_forces, local_rho_set, local_rho_set_2nd, atener, kforce, my_pools, my_rs_descs)
...
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)
...
subroutine, public rs_grid_create(rs, desc)
...
subroutine, public transfer_pw2rs(rs, pw)
...
subroutine, public transfer_rs2pw(rs, pw)
...
subroutine, public rs_grid_release(rs_grid)
releases the given rs grid (see doc/ReferenceCounting.html)
subroutine, public rs_grid_zero(rs)
Initialize grid to zero.
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
to create arrays of pools
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.