84#include "./base/base_uses.f90"
93 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dcdr_ao'
94 CHARACTER(len=*),
PARAMETER,
PRIVATE :: dcdr_meta_gga_error = &
95 "Analytical DCDR is not implemented for functionals that depend on the kinetic energy density. "// &
96 "Use PROPERTIES%LINRES%DCDR%APT_FD T to calculate APTs by finite differences."
112 CHARACTER(len=*),
PARAMETER :: routinen =
'apply_op_constant_term'
114 INTEGER :: handle, ispin
115 REAL(kind=
dp) :: energy_hartree
116 TYPE(
cp_fm_type) :: rho_ao_fm, rho_ao_s1, rho_ao_s1_rho_ao, &
118 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho1_ao, rho_ao
125 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho_r, v_rspace_new, v_xc, v_xc_tau
126 TYPE(
qs_rho_type),
POINTER :: perturbed_density, rho
127 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho0_atom_set, rho1_atom_set
148 CALL timeset(routinen, handle)
150 NULLIFY (auxbas_pw_pool, pw_env, v_xc, poisson_env, input, rho, &
155 CALL cp_fm_create(rho_ao_s1_rho_ao, dcdr_env%aoao_fm_struct)
158 IF (
PRESENT(overlap1))
THEN
164 DO ispin = 1, dcdr_env%nspins
165 CALL dbcsr_set(dcdr_env%perturbed_dm_correction(ispin)%matrix, 0._dp)
166 CALL dbcsr_set(dcdr_env%matrix_apply_op_constant(ispin)%matrix, 0.0_dp)
168 CALL parallel_gemm(
'N',
'T', dcdr_env%nao, dcdr_env%nao, dcdr_env%nmo(ispin), &
169 1.0_dp, dcdr_env%mo_coeff(ispin), dcdr_env%mo_coeff(ispin), &
172 CALL parallel_gemm(
'N',
'N', dcdr_env%nao, dcdr_env%nao, dcdr_env%nao, &
173 1.0_dp, rho_ao_fm, s1_ao, &
176 CALL parallel_gemm(
'N',
'N', dcdr_env%nao, dcdr_env%nao, dcdr_env%nao, &
177 -1._dp, rho_ao_s1, rho_ao_fm, &
178 0.0_dp, rho_ao_s1_rho_ao)
180 CALL copy_fm_to_dbcsr(rho_ao_s1_rho_ao, dcdr_env%perturbed_dm_correction(ispin)%matrix)
190 NULLIFY (perturbed_density)
191 ALLOCATE (perturbed_density)
196 CALL qs_rho_get(perturbed_density, rho_ao=rho1_ao)
197 DO ispin = 1, dcdr_env%nspins
198 CALL dbcsr_copy(rho1_ao(ispin)%matrix, dcdr_env%perturbed_dm_correction(ispin)%matrix)
208 CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r)
210 energy_hartree = 0.0_dp
217 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
218 poisson_env=poisson_env)
222 ALLOCATE (v_rspace_new(dcdr_env%nspins))
223 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
224 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
227 CALL auxbas_pw_pool%create_pw(rho1_tot_gspace)
229 CALL qs_rho_get(perturbed_density, rho_g=rho1_g)
230 CALL pw_copy(rho1_g(1), rho1_tot_gspace)
231 DO ispin = 2, dcdr_env%nspins
232 CALL pw_axpy(rho1_g(ispin), rho1_tot_gspace)
238 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
240 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
243 CALL qs_fxc_create(qs_env, rho, perturbed_density, rho0_atom_set, xc_section, &
244 .false., v_xc, v_xc_tau, rho1_atom_set, &
245 dispersion_env=qs_env%dispersion_env)
248 DO ispin = 1, dcdr_env%nspins
249 v_rspace_new(ispin) = v_xc(ispin)
258 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
259 DO ispin = 1, dcdr_env%nspins
260 CALL pw_scale(v_rspace_new(ispin), v_rspace_new(ispin)%pw_grid%dvol)
263 DO ispin = 1, dcdr_env%nspins
264 CALL dbcsr_set(dcdr_env%matrix_apply_op_constant(ispin)%matrix, 0.0_dp)
265 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
266 IF (dcdr_env%nspins == 1)
THEN
267 CALL pw_scale(v_rspace_new(1), 2.0_dp)
270 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
271 hmat=dcdr_env%matrix_apply_op_constant(ispin), &
273 calculate_forces=.false.)
276 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
277 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
278 DO ispin = 1, dcdr_env%nspins
279 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
281 DEALLOCATE (v_rspace_new)
283 IF (
ASSOCIATED(v_xc_tau))
THEN
284 CALL pw_scale(v_xc_tau(1), 2._dp*v_xc_tau(1)%pw_grid%dvol)
285 CALL integrate_v_rspace(v_rspace=v_xc_tau(1), &
286 hmat=dcdr_env%matrix_apply_op_constant(1), &
288 compute_tau=.true., &
289 calculate_forces=.false.)
291 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(1))
292 DEALLOCATE (v_xc_tau)
296 DEALLOCATE (perturbed_density)
298 CALL timestop(handle)
315 CHARACTER(len=*),
PARAMETER :: routinen =
'd_core_charge_density_dR'
317 INTEGER :: beta, handle
328 CALL timeset(routinen, handle)
332 NULLIFY (pw_env, auxbas_pw_pool, pw_pools, poisson_env, dft_control, &
335 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho=rho, &
336 dft_control=dft_control)
338 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, poisson_env=poisson_env, &
342 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
343 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
345 CALL auxbas_pw_pool%create_pw(drho_g)
354 beta=beta, lambda=dcdr_env%lambda)
356 vhartree=v_hartree_gspace)
357 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
358 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
361 CALL integrate_v_rspace(v_rspace=v_hartree_rspace, &
362 hmat=dcdr_env%matrix_core_charge_1(beta), &
364 calculate_forces=.false.)
367 CALL auxbas_pw_pool%give_back_pw(drho_g)
368 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
369 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
371 CALL timestop(handle)
384 CHARACTER(LEN=*),
PARAMETER :: routinen =
'core_dR'
386 CHARACTER(LEN=default_string_length) :: my_basis_type
387 INTEGER :: handle, nder
388 LOGICAL :: calculate_forces
390 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p_pass
394 CALL timeset(routinen, handle)
401 calculate_forces = .false.
403 my_basis_type =
"ORB"
406 matrix_p_pass(1:1, 1:1) => rho_ao(1:1)
407 CALL core_matrices(qs_env, matrix_h, matrix_p_pass, calculate_forces, nder, &
410 CALL timestop(handle)
424 CHARACTER(len=*),
PARAMETER :: routinen =
'd_vhxc_dR'
426 INTEGER :: handle, idir, ispin
435 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: drho_r, dtau_r, rho_r, v_xc, v_xc_tau
437 TYPE(
rho_atom_type),
DIMENSION(:),
POINTER :: rho0_atom_set, rho1_atom_set
440 CALL timeset(routinen, handle)
446 CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r)
451 ALLOCATE (drho_r(dcdr_env%nspins))
452 ALLOCATE (drho_g(dcdr_env%nspins))
454 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
455 pw_pools=pw_pools, poisson_env=poisson_env)
456 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
457 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
459 DO ispin = 1, dcdr_env%nspins
460 CALL auxbas_pw_pool%create_pw(drho_r(ispin))
461 CALL auxbas_pw_pool%create_pw(drho_g(ispin))
463 CALL auxbas_pw_pool%create_pw(drho_g_total)
464 CALL auxbas_pw_pool%create_pw(drho_r_total)
472 DO ispin = 1, dcdr_env%nspins
478 drho=drho_r(ispin), &
479 drho_gspace=drho_g(ispin), &
481 beta=idir, lambda=dcdr_env%lambda)
483 CALL pw_axpy(drho_g(ispin), drho_g_total)
484 CALL pw_axpy(drho_r(ispin), drho_r_total)
488 vhartree=v_hartree_gspace)
489 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
493 IF (
ASSOCIATED(drho_r))
THEN
494 CALL qs_rho_set(drho, rho_r=drho_r, rho_r_valid=.true.)
496 IF (
ASSOCIATED(drho_g))
THEN
497 CALL qs_rho_set(drho, rho_g=drho_g, rho_g_valid=.true.)
499 IF (
ASSOCIATED(dtau_r))
THEN
500 CALL qs_rho_set(drho, tau_r=dtau_r, tau_r_valid=.true.)
503 NULLIFY (v_xc, v_xc_tau)
504 CALL qs_fxc_create(qs_env, rho, drho, rho0_atom_set, xc_section, .false., &
505 v_xc, v_xc_tau, rho1_atom_set, &
506 dispersion_env=qs_env%dispersion_env)
510 IF (
ASSOCIATED(v_xc_tau))
THEN
511 cpabort(dcdr_meta_gga_error)
517 DO ispin = 1, dcdr_env%nspins
519 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
520 CALL pw_axpy(v_hartree_rspace, v_xc(ispin), v_hartree_rspace%pw_grid%dvol)
522 CALL integrate_v_rspace(v_rspace=v_xc(ispin), &
523 hmat=dcdr_env%matrix_d_vhxc_dR(idir, ispin), &
525 calculate_forces=.false.)
528 CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
533 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
534 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
535 CALL auxbas_pw_pool%give_back_pw(drho_g_total)
536 CALL auxbas_pw_pool%give_back_pw(drho_r_total)
538 DO ispin = 1, dcdr_env%nspins
539 CALL auxbas_pw_pool%give_back_pw(drho_g(ispin))
540 CALL auxbas_pw_pool%give_back_pw(drho_r(ispin))
546 CALL timestop(handle)
561 CHARACTER(LEN=*),
PARAMETER :: routinen =
'vhxc_R_perturbed_basis_functions'
563 INTEGER :: handle, ispin
564 REAL(kind=
dp) :: edisp
565 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_vhxc_dbasis
566 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_p
569 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: v_hxc_r, v_tau_rspace
576 CALL timeset(routinen, handle)
578 NULLIFY (rho_struct, energy, input, ks_env, pw_env, matrix_p)
585 v_hartree_rspace=v_hartree_r)
586 CALL qs_rho_get(rho_struct, rho_ao_kp=matrix_p)
589 NULLIFY (auxbas_pw_pool)
590 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
595 NULLIFY (v_hxc_r, v_tau_rspace)
596 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=xc_section, &
597 vxc_rho=v_hxc_r, vxc_tau=v_tau_rspace, exc=energy%exc, &
598 edisp=edisp, dispersion_env=qs_env%dispersion_env)
600 DO ispin = 1, dcdr_env%nspins
601 CALL pw_scale(v_hxc_r(ispin), v_hxc_r(ispin)%pw_grid%dvol)
604 CALL pw_axpy(v_hartree_r, v_hxc_r(ispin), 1._dp)
606 matrix_vhxc_dbasis => dcdr_env%matrix_vhxc_perturbed_basis(ispin, :)
607 CALL integrate_v_dbasis(v_rspace=v_hxc_r(ispin), &
608 matrix_p=matrix_p(ispin, 1)%matrix, &
609 matrix_vhxc_dbasis=matrix_vhxc_dbasis, &
611 lambda=dcdr_env%lambda)
613 CALL auxbas_pw_pool%give_back_pw(v_hxc_r(ispin))
618 CALL timestop(handle)
633 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
634 CHARACTER(LEN=*),
INTENT(IN) :: basis_type
637 INTEGER,
INTENT(IN) :: lambda
638 LOGICAL,
INTENT(IN) :: direction_or
640 CHARACTER(len=*),
PARAMETER :: routinen =
'hr_mult_by_delta_1d'
642 INTEGER :: handle, iatom, icol, ikind, irow, jatom, &
643 jkind, mepos, nkind, nthread
644 LOGICAL :: do_symmetric, found
645 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: k_block
649 DIMENSION(:),
POINTER :: nl_iterator
651 CALL timeset(routinen, handle)
653 nkind =
SIZE(qs_kind_set)
656 cpassert(
SIZE(sab_nl) > 0)
660 ALLOCATE (basis_set_list(nkind))
681 iatom=iatom, jatom=jatom)
682 basis_set_a => basis_set_list(ikind)%gto_basis_set
683 IF (.NOT.
ASSOCIATED(basis_set_a)) cycle
684 basis_set_b => basis_set_list(jkind)%gto_basis_set
685 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
686 IF (do_symmetric)
THEN
687 IF (iatom <= jatom)
THEN
703 IF (direction_or)
THEN
704 IF (jatom /= lambda) k_block(:, :) = 0._dp
705 ELSE IF (.NOT. direction_or)
THEN
706 IF (iatom /= lambda) k_block(:, :) = 0._dp
713 DEALLOCATE (basis_set_list)
715 CALL timestop(handle)
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public dbcsr_set(matrix, alpha)
...
DBCSR operations in CP2K.
subroutine, public copy_dbcsr_to_fm(matrix, fm, plan, check_plan)
Copy a DBCSR matrix to a BLACS matrix.
subroutine, public copy_fm_to_dbcsr(fm, matrix, keep_sparsity)
Copy a BLACS matrix to a dbcsr matrix.
represent a full matrix distributed on many processors
subroutine, public cp_fm_create(matrix, matrix_struct, name, nrow, ncol, set_zero)
creates a new full matrix with the given structure
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
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
basic linear algebra operations for full matrixes
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
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Calculate the plane wave density by collocating the primitive Gaussian functions (pgf).
subroutine, public calculate_drho_elec_dr(matrix_p, matrix_p_kp, drho, drho_gspace, qs_env, soft_valid, basis_type, beta, lambda)
Computes the gradient wrt. nuclear coordinates of a density on the grid The density is given in terms...
subroutine, public calculate_drho_core(drho_core, qs_env, beta, lambda)
Computes the derivative of the density of the core charges with respect to the nuclear coordinates on...
Calculation of the core Hamiltonian integral matrix <a|H|b> over Cartesian Gaussian-type functions.
subroutine, public core_matrices(qs_env, matrix_h, matrix_p, calculate_forces, nder, ec_env, dcdr_env, ec_env_matrices, ext_kpoints, basis_type, debug_forces, debug_stress, atcore)
...
Calculate the derivatives of the MO coefficients wrt nuclear coordinates.
subroutine, public core_dr(qs_env, dcdr_env)
Core Hamiltonian contributions to the operator (the pseudopotentials).
subroutine, public apply_op_constant_term(qs_env, dcdr_env, overlap1)
Build the perturbed density matrix correction depending on the overlap derivative.
subroutine, public hr_mult_by_delta_1d(matrix, qs_kind_set, basis_type, sab_nl, lambda, direction_or)
Enforce that one of the basis functions in < a | O | b > is centered on atom lambda.
subroutine, public vhxc_r_perturbed_basis_functions(qs_env, dcdr_env)
The derivatives of the basis functions over which the HXC potential is integrated,...
subroutine, public d_vhxc_dr(qs_env, dcdr_env)
The derivatives of the basis functions going into the HXC potential wrt nuclear positions.
subroutine, public d_core_charge_density_dr(qs_env, dcdr_env)
Calculate the derivative of the Hartree term due to the core charge density.
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, mimic, 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, sab_cneo, 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, matrix_vhxc, 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, xcint_weights, 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, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_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, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
Setup Routine for Fxc Potentials.
subroutine, public qs_fxc_create(qs_env, rho0_struct, rho1_struct, rho0_atom_set, xc_section, do_onecenter, fxc_rho, fxc_tau, rho1_atom_set, do_scale, is_triplet, spinflip, no_weights, uf_grid_results, pw_env_ext, kind_set_external, para_env_external, dispersion_env, compute_virial, virial_xc)
...
Some utility functions for the calculation of integrals.
subroutine, public basis_set_list_setup(basis_set_list, basis_type, qs_kind_set)
Set up an easy accessible list of the basis sets for all kinds.
Integrate single or product functions over a potential on a RS grid.
Define the quickstep kind type and their sub types.
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
Type definitiona for linear response calculations.
Define the neighbor list data types and the corresponding functionality.
subroutine, public neighbor_list_iterator_create(iterator_set, nl, search, nthread)
Neighbor list iterator functions.
subroutine, public neighbor_list_iterator_release(iterator_set)
...
subroutine, public get_neighbor_list_set_p(neighbor_list_sets, nlist, symmetric)
Return the components of the first neighbor list set.
integer function, public neighbor_list_iterate(iterator_set, mepos)
...
subroutine, public get_iterator_info(iterator_set, mepos, ikind, jkind, nkind, ilist, nlist, inode, nnode, iatom, jatom, r, cell)
...
methods of the rho structure (defined in qs_rho_types)
subroutine, public qs_rho_update_rho(rho_struct, qs_env, rho_xc_external, local_rho_set, task_list_external, task_list_external_soft, pw_env_external, para_env_external)
updates rho_r and rho_g to the rhorho_ao. if use_kinetic_energy_density also computes tau_r and tau_g...
subroutine, public qs_rho_rebuild(rho, qs_env, rebuild_ao, rebuild_grids, admm, pw_env_external)
rebuilds rho (if necessary allocating and initializing it)
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_set(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)
...
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...
subroutine, public qs_rho_create(rho)
Allocates a new instance of rho.
subroutine, public qs_rho_release(rho_struct)
releases a rho_struct by decreasing the reference count by one and deallocating if it reaches 0 (to b...
subroutine, public qs_vxc_create(ks_env, rho_struct, xc_section, vxc_rho, vxc_tau, exc, just_energy, edisp, dispersion_env, adiabatic_rescale_factor, pw_env_external, native_skala_atom_force, qs_env_external, native_gapw_composite_override, native_skala_defer_to_atom_composite)
calculates and allocates the xc potential, already reducing it to the dependence on rho and the one o...
type of a logger, at the moment it contains just a print level starting at which level it should be l...
contained for different pw related things
environment for the poisson solver
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.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.