89#include "./base/base_uses.f90"
98 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dcdr_ao'
114 CHARACTER(len=*),
PARAMETER :: routinen =
'apply_op_constant_term'
116 INTEGER :: handle, ispin
117 REAL(kind=
dp) :: energy_hartree
118 TYPE(
cp_fm_type) :: rho_ao_fm, rho_ao_s1, rho_ao_s1_rho_ao, &
120 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: rho1_ao, rho_ao
127 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rho1_r, rho_r, tau1_r, v_rspace_new, &
129 TYPE(
qs_rho_type),
POINTER :: perturbed_density, rho
152 CALL timeset(routinen, handle)
154 NULLIFY (auxbas_pw_pool, pw_env, rho1_r, rho1_g_pw, &
155 v_xc, poisson_env, input, rho, rho1_g, v_xc_tau)
159 CALL cp_fm_create(rho_ao_s1_rho_ao, dcdr_env%aoao_fm_struct)
162 IF (
PRESENT(overlap1))
THEN
168 DO ispin = 1, dcdr_env%nspins
169 CALL dbcsr_set(dcdr_env%perturbed_dm_correction(ispin)%matrix, 0._dp)
170 CALL dbcsr_set(dcdr_env%matrix_apply_op_constant(ispin)%matrix, 0.0_dp)
172 CALL parallel_gemm(
'N',
'T', dcdr_env%nao, dcdr_env%nao, dcdr_env%nmo(ispin), &
173 1.0_dp, dcdr_env%mo_coeff(ispin), dcdr_env%mo_coeff(ispin), &
176 CALL parallel_gemm(
'N',
'N', dcdr_env%nao, dcdr_env%nao, dcdr_env%nao, &
177 1.0_dp, rho_ao_fm, s1_ao, &
180 CALL parallel_gemm(
'N',
'N', dcdr_env%nao, dcdr_env%nao, dcdr_env%nao, &
181 -1._dp, rho_ao_s1, rho_ao_fm, &
182 0.0_dp, rho_ao_s1_rho_ao)
184 CALL copy_fm_to_dbcsr(rho_ao_s1_rho_ao, dcdr_env%perturbed_dm_correction(ispin)%matrix)
194 NULLIFY (perturbed_density)
195 ALLOCATE (perturbed_density)
200 CALL qs_rho_get(perturbed_density, rho_ao=rho1_ao)
201 DO ispin = 1, dcdr_env%nspins
202 CALL dbcsr_copy(rho1_ao(ispin)%matrix, dcdr_env%perturbed_dm_correction(ispin)%matrix)
212 CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r)
214 energy_hartree = 0.0_dp
221 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
222 poisson_env=poisson_env)
228 rho_r, auxbas_pw_pool, &
229 xc_section=xc_section)
233 ALLOCATE (v_rspace_new(dcdr_env%nspins))
234 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
235 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
238 CALL auxbas_pw_pool%create_pw(rho1_tot_gspace)
240 CALL qs_rho_get(perturbed_density, rho_g=rho1_g, rho_r=rho1_r, tau_r=tau1_r)
241 CALL pw_copy(rho1_g(1), rho1_tot_gspace)
242 DO ispin = 2, dcdr_env%nspins
243 CALL pw_axpy(rho1_g(ispin), rho1_tot_gspace)
249 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
251 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
255 rho1_r, rho1_g_pw, tau1_r, auxbas_pw_pool, xc_section, gapw=.false.)
257 DO ispin = 1, dcdr_env%nspins
258 v_rspace_new(ispin) = v_xc(ispin)
267 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
268 DO ispin = 1, dcdr_env%nspins
269 CALL pw_scale(v_rspace_new(ispin), v_rspace_new(ispin)%pw_grid%dvol)
272 DO ispin = 1, dcdr_env%nspins
273 CALL dbcsr_set(dcdr_env%matrix_apply_op_constant(ispin)%matrix, 0.0_dp)
274 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
275 IF (dcdr_env%nspins == 1)
THEN
276 CALL pw_scale(v_rspace_new(1), 2.0_dp)
279 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
280 hmat=dcdr_env%matrix_apply_op_constant(ispin), &
282 calculate_forces=.false.)
285 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
286 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
287 DO ispin = 1, dcdr_env%nspins
288 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
290 DEALLOCATE (v_rspace_new)
292 IF (
ASSOCIATED(v_xc_tau))
THEN
293 CALL pw_scale(v_xc_tau(1), 2._dp*v_xc_tau(1)%pw_grid%dvol)
294 CALL integrate_v_rspace(v_rspace=v_xc_tau(1), &
295 hmat=dcdr_env%matrix_apply_op_constant(1), &
297 compute_tau=.true., &
298 calculate_forces=.false.)
300 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(1))
301 DEALLOCATE (v_xc_tau)
305 DEALLOCATE (perturbed_density)
309 CALL timestop(handle)
326 CHARACTER(len=*),
PARAMETER :: routinen =
'd_core_charge_density_dR'
328 INTEGER :: beta, handle
339 CALL timeset(routinen, handle)
343 NULLIFY (pw_env, auxbas_pw_pool, pw_pools, poisson_env, dft_control, &
346 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho=rho, &
347 dft_control=dft_control)
349 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, poisson_env=poisson_env, &
353 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
354 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
356 CALL auxbas_pw_pool%create_pw(drho_g)
365 beta=beta, lambda=dcdr_env%lambda)
367 vhartree=v_hartree_gspace)
368 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
369 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
372 CALL integrate_v_rspace(v_rspace=v_hartree_rspace, &
373 hmat=dcdr_env%matrix_core_charge_1(beta), &
375 calculate_forces=.false.)
378 CALL auxbas_pw_pool%give_back_pw(drho_g)
379 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
380 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
382 CALL timestop(handle)
395 CHARACTER(LEN=*),
PARAMETER :: routinen =
'core_dR'
397 CHARACTER(LEN=default_string_length) :: my_basis_type
398 INTEGER :: handle, nder
399 LOGICAL :: calculate_forces
401 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p_pass
405 CALL timeset(routinen, handle)
412 calculate_forces = .false.
414 my_basis_type =
"ORB"
417 matrix_p_pass(1:1, 1:1) => rho_ao(1:1)
418 CALL core_matrices(qs_env, matrix_h, matrix_p_pass, calculate_forces, nder, &
421 CALL timestop(handle)
435 CHARACTER(len=*),
PARAMETER :: routinen =
'd_vhxc_dR'
437 INTEGER :: handle, idir, ispin
446 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: drho_r, dtau_r, rho_r, v_xc, v_xc_tau
452 CALL timeset(routinen, handle)
458 CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r)
463 ALLOCATE (drho_r(dcdr_env%nspins))
464 ALLOCATE (drho_g(dcdr_env%nspins))
466 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
467 pw_pools=pw_pools, poisson_env=poisson_env)
468 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
469 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
471 DO ispin = 1, dcdr_env%nspins
472 CALL auxbas_pw_pool%create_pw(drho_r(ispin))
473 CALL auxbas_pw_pool%create_pw(drho_g(ispin))
475 CALL auxbas_pw_pool%create_pw(drho_g_total)
476 CALL auxbas_pw_pool%create_pw(drho_r_total)
484 DO ispin = 1, dcdr_env%nspins
490 drho=drho_r(ispin), &
491 drho_gspace=drho_g(ispin), &
493 beta=idir, lambda=dcdr_env%lambda)
495 CALL pw_axpy(drho_g(ispin), drho_g_total)
496 CALL pw_axpy(drho_r(ispin), drho_r_total)
500 vhartree=v_hartree_gspace)
501 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
505 rho_r, auxbas_pw_pool, &
506 xc_section=xc_section)
510 drho_r, drho_g, dtau_r, auxbas_pw_pool, xc_section, gapw=.false.)
511 IF (
ASSOCIATED(v_xc_tau)) cpabort(
"Meta functionals are not supported!")
519 DO ispin = 1, dcdr_env%nspins
521 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
522 CALL pw_axpy(v_hartree_rspace, v_xc(ispin), v_hartree_rspace%pw_grid%dvol)
524 CALL integrate_v_rspace(v_rspace=v_xc(ispin), &
525 hmat=dcdr_env%matrix_d_vhxc_dR(idir, ispin), &
527 calculate_forces=.false.)
530 CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
535 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
536 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
537 CALL auxbas_pw_pool%give_back_pw(drho_g_total)
538 CALL auxbas_pw_pool%give_back_pw(drho_r_total)
540 DO ispin = 1, dcdr_env%nspins
541 CALL auxbas_pw_pool%give_back_pw(drho_g(ispin))
542 CALL auxbas_pw_pool%give_back_pw(drho_r(ispin))
548 CALL timestop(handle)
563 CHARACTER(LEN=*),
PARAMETER :: routinen =
'vhxc_R_perturbed_basis_functions'
565 INTEGER :: handle, ispin
566 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_vhxc_dbasis
567 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_p
570 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: v_hxc_r, v_tau_rspace
577 CALL timeset(routinen, handle)
579 NULLIFY (rho_struct, energy, input, ks_env, pw_env, matrix_p)
586 v_hartree_rspace=v_hartree_r)
587 CALL qs_rho_get(rho_struct, rho_ao_kp=matrix_p)
590 NULLIFY (auxbas_pw_pool)
591 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
596 NULLIFY (v_hxc_r, v_tau_rspace)
597 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=xc_section, &
598 vxc_rho=v_hxc_r, vxc_tau=v_tau_rspace, exc=energy%exc)
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, ldsab, mepos, nkind, nseta, &
645 INTEGER,
DIMENSION(3) :: cell
646 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, lb_max, lb_min, npgfa, &
648 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgfa, first_sgfb
649 LOGICAL :: do_symmetric, found
650 REAL(kind=
dp),
DIMENSION(3) :: rab
651 REAL(kind=
dp),
DIMENSION(:),
POINTER :: set_radius_a, set_radius_b
652 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: k_block, rpgfa, rpgfb, scon_a, scon_b, &
657 DIMENSION(:),
POINTER :: nl_iterator
659 CALL timeset(routinen, handle)
661 nkind =
SIZE(qs_kind_set)
664 cpassert(
SIZE(sab_nl) > 0)
668 ALLOCATE (basis_set_list(nkind))
694 iatom=iatom, jatom=jatom, r=rab, cell=cell)
695 basis_set_a => basis_set_list(ikind)%gto_basis_set
696 IF (.NOT.
ASSOCIATED(basis_set_a)) cycle
697 basis_set_b => basis_set_list(jkind)%gto_basis_set
698 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
700 first_sgfa => basis_set_a%first_sgf
701 la_max => basis_set_a%lmax
702 la_min => basis_set_a%lmin
703 npgfa => basis_set_a%npgf
704 nseta = basis_set_a%nset
705 nsgfa => basis_set_a%nsgf_set
706 rpgfa => basis_set_a%pgf_radius
707 set_radius_a => basis_set_a%set_radius
708 scon_a => basis_set_a%scon
709 zeta => basis_set_a%zet
711 first_sgfb => basis_set_b%first_sgf
712 lb_max => basis_set_b%lmax
713 lb_min => basis_set_b%lmin
714 npgfb => basis_set_b%npgf
715 nsetb = basis_set_b%nset
716 nsgfb => basis_set_b%nsgf_set
717 rpgfb => basis_set_b%pgf_radius
718 set_radius_b => basis_set_b%set_radius
719 scon_b => basis_set_b%scon
720 zetb => basis_set_b%zet
722 IF (do_symmetric)
THEN
723 IF (iatom <= jatom)
THEN
739 IF (direction_or)
THEN
740 IF (jatom /= lambda) k_block(:, :) = 0._dp
741 ELSE IF (.NOT. direction_or)
THEN
742 IF (iatom /= lambda) k_block(:, :) = 0._dp
749 DEALLOCATE (basis_set_list)
751 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)
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, use_sp)
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
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public ncoset
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, 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, 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, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
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, 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_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, 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, 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_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)
calculates and allocates the xc potential, already reducing it to the dependence on rho and the one o...
represent a group ofunctional derivatives
subroutine, public xc_dset_release(derivative_set)
releases a derivative set
subroutine, public xc_rho_set_release(rho_set, pw_pool)
releases the given rho_set
Exchange and Correlation functional calculations.
subroutine, public xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, rho1_r, rho1_g, tau1_r, pw_pool, xc_section, gapw, vxg, do_excitations, do_triplet, compute_virial, virial_xc)
Caller routine to calculate the second order potential in the direction of rho1_r.
subroutine, public xc_prep_2nd_deriv(deriv_set, rho_set, rho_r, pw_pool, xc_section, tau_r)
Prepare objects for the calculation of the 2nd derivatives of the density functional....
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.
A derivative set contains the different derivatives of a xc-functional in form of a linked list.
represent a density, with all the representation and data needed to perform a functional evaluation