(git:744416f)
Loading...
Searching...
No Matches
qs_2nd_kernel_ao.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief Routines to calculate 2nd order kernels from a given response density in ao basis
10!> linear response scf
11!> \par History
12!> created 08-2020 [Frederick Stein], Code by M. Iannuzzi
13!> \author Frederick Stein
14! **************************************************************************************************
16 USE admm_types, ONLY: admm_type,&
19 USE cp_dbcsr_api, ONLY: dbcsr_add,&
28 USE cp_fm_types, ONLY: cp_fm_get_info,&
38 USE kinds, ONLY: dp
39 USE pw_env_types, ONLY: pw_env_get,&
41 USE pw_methods, ONLY: pw_scale
43 USE pw_types, ONLY: pw_r3d_rs_type
46 USE qs_fxc, ONLY: qs_fxc_create
47 USE qs_integrate_potential, ONLY: integrate_v_rspace
53 USE qs_rho_types, ONLY: qs_rho_get,&
56#include "./base/base_uses.f90"
57
58 IMPLICIT NONE
59
60 PRIVATE
61
62 ! *** Public subroutines ***
63 PUBLIC :: build_dm_response
65 PUBLIC :: apply_hfx_ao
66 PUBLIC :: apply_xc_admm_ao
67
68 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_2nd_kernel_ao'
69
70! **************************************************************************************************
71
72CONTAINS
73
74! **************************************************************************************************
75!> \brief This routine builds response density in dbcsr format
76!> \param c0 coefficients of unperturbed system (not changed)
77!> \param c1 coefficients of response (not changed)
78!> \param dm response density matrix
79! **************************************************************************************************
80 SUBROUTINE build_dm_response(c0, c1, dm)
81 !
82 TYPE(cp_fm_type), DIMENSION(:), INTENT(IN) :: c0, c1
83 TYPE(dbcsr_p_type), DIMENSION(:), INTENT(INOUT) :: dm
84
85 INTEGER :: ispin, ncol, nspins
86
87 nspins = SIZE(dm, 1)
88
89 DO ispin = 1, nspins
90 CALL dbcsr_set(dm(ispin)%matrix, 0.0_dp)
91 CALL cp_fm_get_info(c0(ispin), ncol_global=ncol)
92 CALL cp_dbcsr_plus_fm_fm_t(dm(ispin)%matrix, &
93 matrix_v=c0(ispin), &
94 matrix_g=c1(ispin), &
95 ncol=ncol, alpha=2.0_dp, &
96 keep_sparsity=.true., &
97 symmetry_mode=1)
98 END DO
99
100 END SUBROUTINE build_dm_response
101
102! **************************************************************************************************
103!> \brief Calculate a second order kernel (DFT, HF, ADMM correction) for a given density
104!> \param qs_env ...
105!> \param p_env perturbation environment containing the correct density matrices p_env%p1, p_env%p1_admm,
106!> the kernel will be saved in p_env%kpp1, p_env%kpp1_admm
107!> \param recalc_hfx_integrals whether to recalculate the HFX integrals
108!> \param calc_forces whether to calculate forces
109!> \param calc_virial whether to calculate virials
110!> \param virial collect the virial terms from the XC + ADMM parts (terms from integration will be added to pv_virial)
111! **************************************************************************************************
112 SUBROUTINE apply_2nd_order_kernel(qs_env, p_env, recalc_hfx_integrals, calc_forces, calc_virial, virial)
113 TYPE(qs_environment_type), INTENT(IN), POINTER :: qs_env
114 TYPE(qs_p_env_type) :: p_env
115 LOGICAL, INTENT(IN), OPTIONAL :: recalc_hfx_integrals, calc_forces, &
116 calc_virial
117 REAL(kind=dp), DIMENSION(3, 3), INTENT(INOUT), &
118 OPTIONAL :: virial
119
120 CHARACTER(LEN=*), PARAMETER :: routinen = 'apply_2nd_order_kernel'
121
122 INTEGER :: handle, ispin
123 LOGICAL :: do_hfx, my_calc_forces, my_calc_virial, &
124 my_recalc_hfx_integrals
125 TYPE(admm_type), POINTER :: admm_env
126 TYPE(dft_control_type), POINTER :: dft_control
127 TYPE(linres_control_type), POINTER :: linres_control
128 TYPE(section_vals_type), POINTER :: hfx_sections, input, xc_section
129
130 CALL timeset(routinen, handle)
131
132 my_recalc_hfx_integrals = .false.
133 IF (PRESENT(recalc_hfx_integrals)) my_recalc_hfx_integrals = recalc_hfx_integrals
134
135 my_calc_forces = .false.
136 IF (PRESENT(calc_forces)) my_calc_forces = calc_forces
137
138 my_calc_virial = .false.
139 IF (PRESENT(calc_virial)) my_calc_virial = calc_virial
140
141 CALL get_qs_env(qs_env, dft_control=dft_control)
142
143 DO ispin = 1, SIZE(p_env%kpp1)
144 CALL dbcsr_set(p_env%kpp1(ispin)%matrix, 0.0_dp)
145 IF (dft_control%do_admm) CALL dbcsr_set(p_env%kpp1_admm(ispin)%matrix, 0.0_dp)
146 END DO
147
148 CALL get_qs_env(qs_env=qs_env, &
149 input=input, &
150 linres_control=linres_control)
151
152 IF (dft_control%do_admm) THEN
153 CALL get_qs_env(qs_env, admm_env=admm_env)
154 xc_section => admm_env%xc_section_primary
155 ELSE
156 xc_section => section_vals_get_subs_vals(input, "DFT%XC")
157 END IF
158
159 CALL calc_kpp1(p_env%rho1_xc, p_env%rho1, xc_section, &
160 dft_control%qs_control%lrigpw, qs_env, p_env, &
161 calc_forces=my_calc_forces, calc_virial=my_calc_virial, virial=virial)
162
163 ! hfx section
164 NULLIFY (hfx_sections)
165 hfx_sections => section_vals_get_subs_vals(input, "DFT%XC%HF")
166 CALL section_vals_get(hfx_sections, explicit=do_hfx)
167 IF (do_hfx) THEN
168 CALL apply_hfx_ao(qs_env, p_env, my_recalc_hfx_integrals)
169
170 IF (dft_control%do_admm) THEN
171 CALL apply_xc_admm_ao(qs_env, p_env, my_calc_forces, my_calc_virial, virial)
172 CALL p_env_finish_kpp1(qs_env, p_env)
173 END IF
174 END IF
175
176 CALL timestop(handle)
177
178 END SUBROUTINE apply_2nd_order_kernel
179
180! **************************************************************************************************
181!> \brief This routine applies the Hartree-Fock Exchange kernel to a perturbation density matrix considering ADMM
182!> \param qs_env the Quickstep environment
183!> \param p_env perturbation environment from which p1/p1_admm and kpp1/kpp1_admm are taken
184!> \param recalc_integrals whether the integrals are to be recalculated (default: no)
185! **************************************************************************************************
186 SUBROUTINE apply_hfx_ao(qs_env, p_env, recalc_integrals)
187 TYPE(qs_environment_type), INTENT(IN), POINTER :: qs_env
188 TYPE(qs_p_env_type), INTENT(IN) :: p_env
189 LOGICAL, INTENT(IN), OPTIONAL :: recalc_integrals
190
191 CHARACTER(LEN=*), PARAMETER :: routinen = 'apply_hfx_ao'
192
193 INTEGER :: handle, ispin, nspins
194 LOGICAL :: my_recalc_integrals
195 REAL(kind=dp) :: alpha
196 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: h1_mat, rho1, work_hmat
197 TYPE(dft_control_type), POINTER :: dft_control
198
199 CALL timeset(routinen, handle)
200
201 my_recalc_integrals = .false.
202 IF (PRESENT(recalc_integrals)) my_recalc_integrals = recalc_integrals
203
204 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
205
206 IF (dft_control%do_admm) THEN
207 IF (dft_control%admm_control%purification_method /= do_admm_purify_none) THEN
208 cpabort("ADMM: Linear Response needs purification_method=none")
209 END IF
210 IF (dft_control%admm_control%scaling_model /= do_admm_exch_scaling_none) THEN
211 cpabort("ADMM: Linear Response needs scaling_model=none")
212 END IF
213 IF (dft_control%admm_control%method /= do_admm_basis_projection) THEN
214 cpabort("ADMM: Linear Response needs admm_method=basis_projection")
215 END IF
216 !
217 END IF
218
219 nspins = dft_control%nspins
220
221 IF (dft_control%do_admm) THEN
222 rho1 => p_env%p1_admm
223 h1_mat => p_env%kpp1_admm
224 ELSE
225 rho1 => p_env%p1
226 h1_mat => p_env%kpp1
227 END IF
228
229 DO ispin = 1, nspins
230 cpassert(ASSOCIATED(rho1(ispin)%matrix))
231 cpassert(ASSOCIATED(h1_mat(ispin)%matrix))
232 END DO
233
234 NULLIFY (work_hmat)
235 CALL dbcsr_allocate_matrix_set(work_hmat, nspins)
236 DO ispin = 1, nspins
237 ALLOCATE (work_hmat(ispin)%matrix)
238 CALL dbcsr_create(work_hmat(ispin)%matrix, template=rho1(ispin)%matrix)
239 CALL dbcsr_copy(work_hmat(ispin)%matrix, rho1(ispin)%matrix)
240 CALL dbcsr_set(work_hmat(ispin)%matrix, 0.0_dp)
241 END DO
242
243 ! Calculate kernel
244 CALL tddft_hfx_matrix(work_hmat, rho1, qs_env, .false., my_recalc_integrals)
245
246 alpha = 2.0_dp
247 IF (nspins == 2) alpha = 1.0_dp
248
249 DO ispin = 1, nspins
250 CALL dbcsr_add(h1_mat(ispin)%matrix, work_hmat(ispin)%matrix, 1.0_dp, alpha)
251 END DO
252
253 CALL dbcsr_deallocate_matrix_set(work_hmat)
254
255 CALL timestop(handle)
256
257 END SUBROUTINE apply_hfx_ao
258
259! **************************************************************************************************
260!> \brief apply the kernel from the ADMM exchange correction
261!> \param qs_env ...
262!> \param p_env perturbation environment
263!> \param calc_forces whether to calculate forces
264!> \param calc_virial whether to calculate gradients
265!> \param virial collects the virial terms from the XC functional (virial terms from integration are collected in pv_virial)
266! **************************************************************************************************
267 SUBROUTINE apply_xc_admm_ao(qs_env, p_env, calc_forces, calc_virial, virial)
268 TYPE(qs_environment_type), INTENT(IN), POINTER :: qs_env
269 TYPE(qs_p_env_type) :: p_env
270 LOGICAL, INTENT(IN), OPTIONAL :: calc_forces, calc_virial
271 REAL(kind=dp), DIMENSION(3, 3), INTENT(INOUT), &
272 OPTIONAL :: virial
273
274 CHARACTER(len=*), PARAMETER :: routinen = 'apply_xc_admm_ao'
275
276 INTEGER :: handle, ispin, nao, nao_aux, nspins
277 LOGICAL :: my_calc_forces
278 REAL(kind=dp) :: alpha
279 TYPE(admm_type), POINTER :: admm_env
280 TYPE(dbcsr_p_type) :: work_hmat
281 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: rho_ao_aux
282 TYPE(dft_control_type), POINTER :: dft_control
283 TYPE(linres_control_type), POINTER :: linres_control
284 TYPE(pw_env_type), POINTER :: pw_env
285 TYPE(pw_pool_type), POINTER :: auxbas_pw_pool
286 TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: v_xc, v_xc_tau
287 TYPE(qs_rho_type), POINTER :: rho_aux
288 TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho0_atom_set, rho1_atom_set
289 TYPE(section_vals_type), POINTER :: xc_section
290 TYPE(task_list_type), POINTER :: task_list_aux_fit
291
292 CALL timeset(routinen, handle)
293
294 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
295
296 IF (qs_env%admm_env%aux_exch_func /= do_admm_aux_exch_func_none) THEN
297 CALL get_qs_env(qs_env=qs_env, linres_control=linres_control)
298 cpassert(.NOT. dft_control%qs_control%gapw)
299 cpassert(.NOT. dft_control%qs_control%gapw_xc)
300 cpassert(.NOT. dft_control%qs_control%lrigpw)
301 cpassert(.NOT. linres_control%lr_triplet)
302 IF (.NOT. ASSOCIATED(p_env%kpp1_admm)) THEN
303 cpabort("kpp1_admm has to be associated if ADMM kernel calculations are requested")
304 END IF
305
306 nspins = dft_control%nspins
307
308 my_calc_forces = .false.
309 IF (PRESENT(calc_forces)) my_calc_forces = calc_forces
310
311 ! AUX basis contribution
312 ! calculate the xc potential
313 NULLIFY (v_xc, v_xc_tau)
314 CALL get_qs_env(qs_env=qs_env, admm_env=admm_env)
315 xc_section => admm_env%xc_section_aux
316 CALL get_admm_env(admm_env, rho_aux_fit=rho_aux)
317 CALL qs_fxc_create(qs_env, rho_aux, p_env%rho1_admm, rho0_atom_set, xc_section, &
318 .false., v_xc, v_xc_tau, rho1_atom_set, &
319 compute_virial=calc_virial, virial_xc=virial)
320
321 NULLIFY (work_hmat%matrix)
322 ALLOCATE (work_hmat%matrix)
323 CALL dbcsr_copy(work_hmat%matrix, p_env%kpp1_admm(1)%matrix)
324
325 alpha = 1.0_dp
326 IF (nspins == 1) alpha = 2.0_dp
327
328 CALL qs_rho_get(rho_aux, rho_ao=rho_ao_aux)
329 CALL get_admm_env(admm_env, task_list_aux_fit=task_list_aux_fit)
330
331 CALL cp_fm_get_info(admm_env%A, nrow_global=nao_aux, ncol_global=nao)
332 DO ispin = 1, nspins
333 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
334 CALL dbcsr_set(work_hmat%matrix, 0.0_dp)
335 CALL integrate_v_rspace(v_rspace=v_xc(ispin), hmat=work_hmat, qs_env=qs_env, &
336 calculate_forces=my_calc_forces, basis_type="AUX_FIT", &
337 task_list_external=task_list_aux_fit, pmat=rho_ao_aux(ispin))
338 IF (ASSOCIATED(v_xc_tau)) THEN
339 CALL pw_scale(v_xc_tau(ispin), v_xc_tau(ispin)%pw_grid%dvol)
340 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), hmat=work_hmat, qs_env=qs_env, &
341 compute_tau=.true., &
342 calculate_forces=my_calc_forces, basis_type="AUX_FIT", &
343 task_list_external=task_list_aux_fit, pmat=rho_ao_aux(ispin))
344 END IF
345 CALL dbcsr_add(p_env%kpp1_admm(ispin)%matrix, work_hmat%matrix, 1.0_dp, alpha)
346
347 END DO
348
349 CALL dbcsr_release(work_hmat%matrix)
350 DEALLOCATE (work_hmat%matrix)
351
352 CALL get_qs_env(qs_env=qs_env, pw_env=pw_env)
353 cpassert(ASSOCIATED(pw_env))
354 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
355
356 DO ispin = 1, nspins
357 CALL auxbas_pw_pool%give_back_pw(v_xc(ispin))
358 END DO
359 DEALLOCATE (v_xc)
360 IF (ASSOCIATED(v_xc_tau)) THEN
361 DO ispin = 1, nspins
362 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
363 END DO
364 DEALLOCATE (v_xc_tau)
365 END IF
366
367 END IF
368
369 CALL timestop(handle)
370
371 END SUBROUTINE apply_xc_admm_ao
372
373END MODULE qs_2nd_kernel_ao
Types and set/get functions for auxiliary density matrix methods.
Definition admm_types.F:15
subroutine, public get_admm_env(admm_env, mo_derivs_aux_fit, mos_aux_fit, sab_aux_fit, sab_aux_fit_asymm, sab_aux_fit_vs_orb, matrix_s_aux_fit, matrix_s_aux_fit_kp, matrix_s_aux_fit_vs_orb, matrix_s_aux_fit_vs_orb_kp, task_list_aux_fit, matrix_ks_aux_fit, matrix_ks_aux_fit_kp, matrix_ks_aux_fit_im, matrix_ks_aux_fit_dft, matrix_ks_aux_fit_hfx, matrix_ks_aux_fit_dft_kp, matrix_ks_aux_fit_hfx_kp, rho_aux_fit, rho_aux_fit_buffer, admm_dm)
Get routine for the ADMM env.
Definition admm_types.F:599
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_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_plus_fm_fm_t(sparse_matrix, matrix_v, matrix_g, ncol, alpha, keep_sparsity, symmetry_mode)
performs the multiplication sparse_matrix+dense_mat*dens_mat^T if matrix_g is not explicitly given,...
represent a full matrix distributed on many processors
Definition cp_fm_types.F:15
subroutine, public cp_fm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
Utilities for hfx and admm methods.
subroutine, public tddft_hfx_matrix(matrix_ks, rho_ao, qs_env, update_energy, recalc_integrals, external_hfx_sections, external_x_data, external_para_env)
Add the hfx contributions to the Hamiltonian.
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_admm_purify_none
integer, parameter, public do_admm_basis_projection
integer, parameter, public do_admm_aux_exch_func_none
integer, parameter, public do_admm_exch_scaling_none
objects that represent the structure of input sections and the data contained in an input section
recursive type(section_vals_type) function, pointer, public section_vals_get_subs_vals(section_vals, subsection_name, i_rep_section, can_return_null)
returns the values of the requested subsection
subroutine, public section_vals_get(section_vals, ref_count, n_repetition, n_subs_vals_rep, section, explicit)
returns various attributes about the section_vals
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
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 ...
Routines to calculate 2nd order kernels from a given response density in ao basis linear response scf...
subroutine, public apply_2nd_order_kernel(qs_env, p_env, recalc_hfx_integrals, calc_forces, calc_virial, virial)
Calculate a second order kernel (DFT, HF, ADMM correction) for a given density.
subroutine, public build_dm_response(c0, c1, dm)
This routine builds response density in dbcsr format.
subroutine, public apply_xc_admm_ao(qs_env, p_env, calc_forces, calc_virial, virial)
apply the kernel from the ADMM exchange correction
subroutine, public apply_hfx_ao(qs_env, p_env, recalc_integrals)
This routine applies the Hartree-Fock Exchange kernel to a perturbation density matrix considering AD...
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.
Definition qs_fxc.F:29
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, compute_virial, virial_xc)
...
Definition qs_fxc.F:118
Integrate single or product functions over a potential on a RS grid.
module that builds the second order perturbation kernel kpp1 = delta_rho|_P delta_rho|_P E drho(P1) d...
subroutine, public calc_kpp1(rho1_xc, rho1, xc_section, lrigpw, qs_env, p_env, calc_forces, calc_virial, virial)
...
Type definitiona for linear response calculations.
Utility functions for the perturbation calculations.
subroutine, public p_env_finish_kpp1(qs_env, p_env)
...
basis types for the calculation of the perturbation of density theory.
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...
types for task lists
stores some data used in wavefunction fitting
Definition admm_types.F:120
represent a full matrix
contained for different pw related things
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
General settings for linear response calculations.
Represent a qs system that is perturbed. Can calculate the linear operator and the rhs of the system ...
keeps the density in various representations, keeping track of which ones are valid.