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, &
130 TYPE(
qs_rho_type),
POINTER :: perturbed_density, rho
153 CALL timeset(routinen, handle)
155 NULLIFY (auxbas_pw_pool, pw_env, rho1_r, rho1_g_pw, &
156 v_xc, poisson_env, input, rho, rho1_g, v_xc_tau)
160 CALL cp_fm_create(rho_ao_s1_rho_ao, dcdr_env%aoao_fm_struct)
163 IF (
PRESENT(overlap1))
THEN
169 DO ispin = 1, dcdr_env%nspins
170 CALL dbcsr_set(dcdr_env%perturbed_dm_correction(ispin)%matrix, 0._dp)
171 CALL dbcsr_set(dcdr_env%matrix_apply_op_constant(ispin)%matrix, 0.0_dp)
173 CALL parallel_gemm(
'N',
'T', dcdr_env%nao, dcdr_env%nao, dcdr_env%nmo(ispin), &
174 1.0_dp, dcdr_env%mo_coeff(ispin), dcdr_env%mo_coeff(ispin), &
177 CALL parallel_gemm(
'N',
'N', dcdr_env%nao, dcdr_env%nao, dcdr_env%nao, &
178 1.0_dp, rho_ao_fm, s1_ao, &
181 CALL parallel_gemm(
'N',
'N', dcdr_env%nao, dcdr_env%nao, dcdr_env%nao, &
182 -1._dp, rho_ao_s1, rho_ao_fm, &
183 0.0_dp, rho_ao_s1_rho_ao)
185 CALL copy_fm_to_dbcsr(rho_ao_s1_rho_ao, dcdr_env%perturbed_dm_correction(ispin)%matrix)
195 NULLIFY (perturbed_density)
196 ALLOCATE (perturbed_density)
201 CALL qs_rho_get(perturbed_density, rho_ao=rho1_ao)
202 DO ispin = 1, dcdr_env%nspins
203 CALL dbcsr_copy(rho1_ao(ispin)%matrix, dcdr_env%perturbed_dm_correction(ispin)%matrix)
213 CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r)
215 energy_hartree = 0.0_dp
219 xcint_weights=weights, &
223 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
224 poisson_env=poisson_env)
230 rho_r, auxbas_pw_pool, weights, &
231 xc_section=xc_section)
235 ALLOCATE (v_rspace_new(dcdr_env%nspins))
236 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
237 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
240 CALL auxbas_pw_pool%create_pw(rho1_tot_gspace)
242 CALL qs_rho_get(perturbed_density, rho_g=rho1_g, rho_r=rho1_r, tau_r=tau1_r)
243 CALL pw_copy(rho1_g(1), rho1_tot_gspace)
244 DO ispin = 2, dcdr_env%nspins
245 CALL pw_axpy(rho1_g(ispin), rho1_tot_gspace)
251 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
253 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
257 rho1_r, rho1_g_pw, tau1_r, auxbas_pw_pool, &
258 weights, xc_section, gapw=.false.)
260 DO ispin = 1, dcdr_env%nspins
261 v_rspace_new(ispin) = v_xc(ispin)
270 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
271 DO ispin = 1, dcdr_env%nspins
272 CALL pw_scale(v_rspace_new(ispin), v_rspace_new(ispin)%pw_grid%dvol)
275 DO ispin = 1, dcdr_env%nspins
276 CALL dbcsr_set(dcdr_env%matrix_apply_op_constant(ispin)%matrix, 0.0_dp)
277 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
278 IF (dcdr_env%nspins == 1)
THEN
279 CALL pw_scale(v_rspace_new(1), 2.0_dp)
282 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
283 hmat=dcdr_env%matrix_apply_op_constant(ispin), &
285 calculate_forces=.false.)
288 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
289 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
290 DO ispin = 1, dcdr_env%nspins
291 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
293 DEALLOCATE (v_rspace_new)
295 IF (
ASSOCIATED(v_xc_tau))
THEN
296 CALL pw_scale(v_xc_tau(1), 2._dp*v_xc_tau(1)%pw_grid%dvol)
297 CALL integrate_v_rspace(v_rspace=v_xc_tau(1), &
298 hmat=dcdr_env%matrix_apply_op_constant(1), &
300 compute_tau=.true., &
301 calculate_forces=.false.)
303 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(1))
304 DEALLOCATE (v_xc_tau)
308 DEALLOCATE (perturbed_density)
312 CALL timestop(handle)
329 CHARACTER(len=*),
PARAMETER :: routinen =
'd_core_charge_density_dR'
331 INTEGER :: beta, handle
342 CALL timeset(routinen, handle)
346 NULLIFY (pw_env, auxbas_pw_pool, pw_pools, poisson_env, dft_control, &
349 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env, rho=rho, &
350 dft_control=dft_control)
352 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, poisson_env=poisson_env, &
356 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
357 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
359 CALL auxbas_pw_pool%create_pw(drho_g)
368 beta=beta, lambda=dcdr_env%lambda)
370 vhartree=v_hartree_gspace)
371 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
372 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
375 CALL integrate_v_rspace(v_rspace=v_hartree_rspace, &
376 hmat=dcdr_env%matrix_core_charge_1(beta), &
378 calculate_forces=.false.)
381 CALL auxbas_pw_pool%give_back_pw(drho_g)
382 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
383 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
385 CALL timestop(handle)
398 CHARACTER(LEN=*),
PARAMETER :: routinen =
'core_dR'
400 CHARACTER(LEN=default_string_length) :: my_basis_type
401 INTEGER :: handle, nder
402 LOGICAL :: calculate_forces
404 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p_pass
408 CALL timeset(routinen, handle)
415 calculate_forces = .false.
417 my_basis_type =
"ORB"
420 matrix_p_pass(1:1, 1:1) => rho_ao(1:1)
421 CALL core_matrices(qs_env, matrix_h, matrix_p_pass, calculate_forces, nder, &
424 CALL timestop(handle)
438 CHARACTER(len=*),
PARAMETER :: routinen =
'd_vhxc_dR'
440 INTEGER :: handle, idir, ispin
449 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: drho_r, dtau_r, rho_r, v_xc, v_xc_tau
456 CALL timeset(routinen, handle)
461 xcint_weights=weights, &
463 CALL qs_rho_get(rho, rho_ao=rho_ao, rho_r=rho_r)
468 ALLOCATE (drho_r(dcdr_env%nspins))
469 ALLOCATE (drho_g(dcdr_env%nspins))
471 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
472 pw_pools=pw_pools, poisson_env=poisson_env)
473 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
474 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
476 DO ispin = 1, dcdr_env%nspins
477 CALL auxbas_pw_pool%create_pw(drho_r(ispin))
478 CALL auxbas_pw_pool%create_pw(drho_g(ispin))
480 CALL auxbas_pw_pool%create_pw(drho_g_total)
481 CALL auxbas_pw_pool%create_pw(drho_r_total)
489 DO ispin = 1, dcdr_env%nspins
495 drho=drho_r(ispin), &
496 drho_gspace=drho_g(ispin), &
498 beta=idir, lambda=dcdr_env%lambda)
500 CALL pw_axpy(drho_g(ispin), drho_g_total)
501 CALL pw_axpy(drho_r(ispin), drho_r_total)
505 vhartree=v_hartree_gspace)
506 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
510 rho_r, auxbas_pw_pool, weights, &
511 xc_section=xc_section)
515 drho_r, drho_g, dtau_r, auxbas_pw_pool, &
516 weights, xc_section, gapw=.false.)
517 IF (
ASSOCIATED(v_xc_tau)) cpabort(
"Meta functionals are not supported!")
525 DO ispin = 1, dcdr_env%nspins
527 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
528 CALL pw_axpy(v_hartree_rspace, v_xc(ispin), v_hartree_rspace%pw_grid%dvol)
530 CALL integrate_v_rspace(v_rspace=v_xc(ispin), &
531 hmat=dcdr_env%matrix_d_vhxc_dR(idir, ispin), &
533 calculate_forces=.false.)
536 CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
541 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
542 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
543 CALL auxbas_pw_pool%give_back_pw(drho_g_total)
544 CALL auxbas_pw_pool%give_back_pw(drho_r_total)
546 DO ispin = 1, dcdr_env%nspins
547 CALL auxbas_pw_pool%give_back_pw(drho_g(ispin))
548 CALL auxbas_pw_pool%give_back_pw(drho_r(ispin))
554 CALL timestop(handle)
569 CHARACTER(LEN=*),
PARAMETER :: routinen =
'vhxc_R_perturbed_basis_functions'
571 INTEGER :: handle, ispin
572 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_vhxc_dbasis
573 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_p
576 TYPE(
pw_r3d_rs_type),
DIMENSION(:),
POINTER :: v_hxc_r, v_tau_rspace
583 CALL timeset(routinen, handle)
585 NULLIFY (rho_struct, energy, input, ks_env, pw_env, matrix_p)
592 v_hartree_rspace=v_hartree_r)
593 CALL qs_rho_get(rho_struct, rho_ao_kp=matrix_p)
596 NULLIFY (auxbas_pw_pool)
597 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
602 NULLIFY (v_hxc_r, v_tau_rspace)
603 CALL qs_vxc_create(ks_env=ks_env, rho_struct=rho_struct, xc_section=xc_section, &
604 vxc_rho=v_hxc_r, vxc_tau=v_tau_rspace, exc=energy%exc)
606 DO ispin = 1, dcdr_env%nspins
607 CALL pw_scale(v_hxc_r(ispin), v_hxc_r(ispin)%pw_grid%dvol)
610 CALL pw_axpy(v_hartree_r, v_hxc_r(ispin), 1._dp)
612 matrix_vhxc_dbasis => dcdr_env%matrix_vhxc_perturbed_basis(ispin, :)
613 CALL integrate_v_dbasis(v_rspace=v_hxc_r(ispin), &
614 matrix_p=matrix_p(ispin, 1)%matrix, &
615 matrix_vhxc_dbasis=matrix_vhxc_dbasis, &
617 lambda=dcdr_env%lambda)
619 CALL auxbas_pw_pool%give_back_pw(v_hxc_r(ispin))
624 CALL timestop(handle)
639 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
640 CHARACTER(LEN=*),
INTENT(IN) :: basis_type
643 INTEGER,
INTENT(IN) :: lambda
644 LOGICAL,
INTENT(IN) :: direction_or
646 CHARACTER(len=*),
PARAMETER :: routinen =
'hr_mult_by_delta_1d'
648 INTEGER :: handle, iatom, icol, ikind, irow, jatom, &
649 jkind, ldsab, mepos, nkind, nseta, &
651 INTEGER,
DIMENSION(3) :: cell
652 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, lb_max, lb_min, npgfa, &
654 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgfa, first_sgfb
655 LOGICAL :: do_symmetric, found
656 REAL(kind=
dp),
DIMENSION(3) :: rab
657 REAL(kind=
dp),
DIMENSION(:),
POINTER :: set_radius_a, set_radius_b
658 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: k_block, rpgfa, rpgfb, scon_a, scon_b, &
663 DIMENSION(:),
POINTER :: nl_iterator
665 CALL timeset(routinen, handle)
667 nkind =
SIZE(qs_kind_set)
670 cpassert(
SIZE(sab_nl) > 0)
674 ALLOCATE (basis_set_list(nkind))
700 iatom=iatom, jatom=jatom, r=rab, cell=cell)
701 basis_set_a => basis_set_list(ikind)%gto_basis_set
702 IF (.NOT.
ASSOCIATED(basis_set_a)) cycle
703 basis_set_b => basis_set_list(jkind)%gto_basis_set
704 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
706 first_sgfa => basis_set_a%first_sgf
707 la_max => basis_set_a%lmax
708 la_min => basis_set_a%lmin
709 npgfa => basis_set_a%npgf
710 nseta = basis_set_a%nset
711 nsgfa => basis_set_a%nsgf_set
712 rpgfa => basis_set_a%pgf_radius
713 set_radius_a => basis_set_a%set_radius
714 scon_a => basis_set_a%scon
715 zeta => basis_set_a%zet
717 first_sgfb => basis_set_b%first_sgf
718 lb_max => basis_set_b%lmax
719 lb_min => basis_set_b%lmin
720 npgfb => basis_set_b%npgf
721 nsetb = basis_set_b%nset
722 nsgfb => basis_set_b%nsgf_set
723 rpgfb => basis_set_b%pgf_radius
724 set_radius_b => basis_set_b%set_radius
725 scon_b => basis_set_b%scon
726 zetb => basis_set_b%zet
728 IF (do_symmetric)
THEN
729 IF (iatom <= jatom)
THEN
745 IF (direction_or)
THEN
746 IF (jatom /= lambda) k_block(:, :) = 0._dp
747 ELSE IF (.NOT. direction_or)
THEN
748 IF (iatom /= lambda) k_block(:, :) = 0._dp
755 DEALLOCATE (basis_set_list)
757 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, 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
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, 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, 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.
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_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_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_prep_2nd_deriv(deriv_set, rho_set, rho_r, pw_pool, weights, xc_section, tau_r)
Prepare objects for the calculation of the 2nd derivatives of the density functional....
subroutine, public xc_calc_2nd_deriv(v_xc, v_xc_tau, deriv_set, rho_set, rho1_r, rho1_g, tau1_r, pw_pool, weights, xc_section, gapw, vxg, do_excitations, do_sf, do_triplet, compute_virial, virial_xc)
Caller routine to calculate the second order potential in the direction of rho1_r.
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