(git:0a7030e)
Loading...
Searching...
No Matches
qs_kpp1_env_methods.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 module that builds the second order perturbation kernel
10!> kpp1 = delta_rho|_P delta_rho|_P E drho(P1) drho
11!> \par History
12!> 07.2002 created [fawzi]
13!> \author Fawzi Mohamed
14! **************************************************************************************************
16 USE admm_types, ONLY: admm_type,&
20 USE cp_dbcsr_api, ONLY: dbcsr_add,&
29 USE kahan_sum, ONLY: accurate_sum
30 USE kinds, ONLY: dp
36 USE pw_env_types, ONLY: pw_env_get,&
38 USE pw_methods, ONLY: pw_axpy,&
39 pw_copy,&
41 pw_scale,&
47 USE pw_types, ONLY: pw_c1d_gs_type,&
51 USE qs_fxc, ONLY: qs_fxc_apply,&
54 USE qs_integrate_potential, ONLY: integrate_v_rspace,&
55 integrate_v_rspace_diagonal,&
56 integrate_v_rspace_one_center
58 USE qs_ks_atom, ONLY: update_ks_atom
62 USE qs_rho_types, ONLY: qs_rho_get,&
64#include "./base/base_uses.f90"
65
66 IMPLICIT NONE
67
68 PRIVATE
69
70 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .true.
71 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_kpp1_env_methods'
72
74
75CONTAINS
76
77! **************************************************************************************************
78!> \brief allocates and initializes a kpp1_env
79!> \param kpp1_env the environment to initialize
80!> \par History
81!> 07.2002 created [fawzi]
82!> \author Fawzi Mohamed
83! **************************************************************************************************
84 SUBROUTINE kpp1_create(kpp1_env)
85 TYPE(qs_kpp1_env_type) :: kpp1_env
86
87 NULLIFY (kpp1_env%v_ao)
88
89 END SUBROUTINE kpp1_create
90
91! **************************************************************************************************
92!> \brief ...
93!> \param rho1_xc ...
94!> \param rho1 ...
95!> \param xc_section ...
96!> \param lrigpw ...
97!> \param qs_env ...
98!> \param p_env ...
99!> \param calc_forces ...
100!> \param calc_virial ...
101!> \param virial ...
102! **************************************************************************************************
103 SUBROUTINE calc_kpp1(rho1_xc, rho1, xc_section, lrigpw, qs_env, p_env, &
104 calc_forces, calc_virial, virial)
105
106 TYPE(qs_rho_type), POINTER :: rho1_xc, rho1
107 TYPE(section_vals_type), POINTER :: xc_section
108 LOGICAL, INTENT(IN) :: lrigpw
109 TYPE(qs_environment_type), POINTER :: qs_env
110 TYPE(qs_p_env_type) :: p_env
111 LOGICAL, INTENT(IN), OPTIONAL :: calc_forces, calc_virial
112 REAL(kind=dp), DIMENSION(3, 3), INTENT(INOUT), &
113 OPTIONAL :: virial
114
115 CHARACTER(len=*), PARAMETER :: routinen = 'calc_kpp1'
116
117 INTEGER :: handle, ikind, ispin, nkind, ns, nspins
118 LOGICAL :: do_onecenter, gapw, gapw_xc, &
119 my_calc_forces
120 REAL(kind=dp) :: alpha, energy_hartree, energy_hartree_1c
121 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
122 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: k1mat, rho_ao
123 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: ksmat, psmat
124 TYPE(dft_control_type), POINTER :: dft_control
125 TYPE(lri_density_type), POINTER :: lri_density
126 TYPE(lri_environment_type), POINTER :: lri_env
127 TYPE(lri_kind_type), DIMENSION(:), POINTER :: lri_v_int
128 TYPE(mp_para_env_type), POINTER :: para_env
129 TYPE(pw_c1d_gs_type) :: rho1_tot_gspace
130 TYPE(pw_c1d_gs_type), DIMENSION(:), POINTER :: rho1_g
131 TYPE(pw_env_type), POINTER :: pw_env
132 TYPE(pw_poisson_type), POINTER :: poisson_env
133 TYPE(pw_pool_type), POINTER :: auxbas_pw_pool
134 TYPE(pw_r3d_rs_type) :: v_hartree_rspace
135 TYPE(pw_r3d_rs_type), DIMENSION(:), POINTER :: v_rspace_new, v_xc, v_xc_tau
136 TYPE(qs_kpp1_env_type), POINTER :: kpp1_env
137 TYPE(qs_rho_type), POINTER :: rho, rho0_fxc, rho1_fxc
138 TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho1_atom_set, rho_atom_set
139
140 CALL timeset(routinen, handle)
141
142 cpassert(ASSOCIATED(p_env%kpp1))
143 cpassert(ASSOCIATED(p_env%kpp1_env))
144 cpassert(ASSOCIATED(rho1))
145
146 my_calc_forces = .false.
147 IF (PRESENT(calc_forces)) my_calc_forces = calc_forces
148
149 CALL get_qs_env(qs_env, &
150 pw_env=pw_env, &
151 dft_control=dft_control, &
152 para_env=para_env, &
153 rho=rho)
154
155 IF (lrigpw) THEN
156 CALL get_qs_env(qs_env, &
157 lri_env=lri_env, &
158 lri_density=lri_density, &
159 atomic_kind_set=atomic_kind_set)
160 END IF
161
162 gapw = dft_control%qs_control%gapw
163 gapw_xc = dft_control%qs_control%gapw_xc
164 IF (gapw_xc) THEN
165 cpassert(ASSOCIATED(rho1_xc))
166 END IF
167 do_onecenter = gapw .OR. gapw_xc
168 nspins = dft_control%nspins
169
170 kpp1_env => p_env%kpp1_env
171 CALL kpp1_check_i_alloc(kpp1_env, qs_env, xc_section)
172
173 CALL qs_rho_get(rho, rho_ao=rho_ao)
174 CALL qs_rho_get(rho1, rho_g=rho1_g)
175
176 ! gets the tmp grids
177 cpassert(ASSOCIATED(pw_env))
178 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool, &
179 poisson_env=poisson_env)
180 CALL auxbas_pw_pool%create_pw(v_hartree_rspace)
181
182 IF (gapw .OR. gapw_xc) THEN
183 CALL prepare_gapw_den(qs_env, p_env%local_rho_set, do_rho0=(.NOT. gapw_xc))
184 END IF
185
186 ! *** calculate the hartree potential on the total density ***
187 CALL auxbas_pw_pool%create_pw(rho1_tot_gspace)
188 CALL pw_zero(rho1_tot_gspace)
189 DO ispin = 1, nspins
190 CALL pw_axpy(rho1_g(ispin), rho1_tot_gspace)
191 END DO
192 IF (gapw) THEN
193 CALL pw_axpy(p_env%local_rho_set%rho0_mpole%rho0_s_gs, rho1_tot_gspace)
194 IF (ASSOCIATED(p_env%local_rho_set%rho0_mpole%rhoz_cneo_s_gs)) THEN
195 CALL pw_axpy(p_env%local_rho_set%rho0_mpole%rhoz_cneo_s_gs, rho1_tot_gspace)
196 END IF
197 END IF
198 !
199 block
200 TYPE(pw_c1d_gs_type) :: v_hartree_gspace
201 CALL auxbas_pw_pool%create_pw(v_hartree_gspace)
202 CALL pw_poisson_solve(poisson_env, rho1_tot_gspace, &
203 energy_hartree, &
204 v_hartree_gspace)
205 CALL pw_transfer(v_hartree_gspace, v_hartree_rspace)
206 CALL auxbas_pw_pool%give_back_pw(v_hartree_gspace)
207 END block
208 !
209 CALL pw_scale(v_hartree_rspace, v_hartree_rspace%pw_grid%dvol)
210
211 CALL auxbas_pw_pool%give_back_pw(rho1_tot_gspace)
212
213 ! *** calculate the xc potential ***
214 NULLIFY (v_xc, v_xc_tau)
215 IF (gapw_xc) THEN
216 CALL get_qs_env(qs_env, rho_xc=rho0_fxc)
217 rho1_fxc => rho1_xc
218 ELSE
219 CALL get_qs_env(qs_env, rho=rho0_fxc)
220 rho1_fxc => rho1
221 END IF
222
223 NULLIFY (rho_atom_set, rho1_atom_set)
224 IF (do_onecenter) THEN
225 CALL get_qs_env(qs_env, rho_atom_set=rho_atom_set)
226 rho1_atom_set => p_env%local_rho_set%rho_atom_set
227 END IF
228 CALL qs_fxc_apply(qs_env, kpp1_env%deriv_set, kpp1_env%rho_set, &
229 rho1_fxc, rho_atom_set, xc_section, &
230 do_onecenter, v_xc, v_xc_tau, rho1_atom_set, &
231 compute_virial=calc_virial, virial_xc=virial)
232
233 DO ispin = 1, nspins
234 CALL pw_scale(v_xc(ispin), v_xc(ispin)%pw_grid%dvol)
235 END DO
236 v_rspace_new => v_xc
237 IF (SIZE(v_xc) /= nspins) THEN
238 CALL auxbas_pw_pool%give_back_pw(v_xc(2))
239 END IF
240 NULLIFY (v_xc)
241 IF (ASSOCIATED(v_xc_tau)) THEN
242 DO ispin = 1, nspins
243 CALL pw_scale(v_xc_tau(ispin), v_xc_tau(ispin)%pw_grid%dvol)
244 END DO
245 IF (SIZE(v_xc_tau) /= nspins) THEN
246 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(2))
247 END IF
248 END IF
249
250 alpha = 1.0_dp
251 IF (nspins == 1) alpha = 2.0_dp
252
253 !-------------------------------!
254 ! Add both hartree and xc terms !
255 !-------------------------------!
256 DO ispin = 1, nspins
257 CALL dbcsr_set(kpp1_env%v_ao(ispin)%matrix, 0.0_dp)
258
259 IF (gapw_xc) THEN
260 ! XC and Hartree are integrated separatedly
261 ! XC uses the soft basis set only
262 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
263 pmat=rho_ao(ispin), &
264 hmat=kpp1_env%v_ao(ispin), &
265 qs_env=qs_env, &
266 calculate_forces=my_calc_forces, gapw=gapw_xc)
267 IF (ASSOCIATED(v_xc_tau)) THEN
268 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
269 pmat=rho_ao(ispin), &
270 hmat=kpp1_env%v_ao(ispin), &
271 qs_env=qs_env, &
272 compute_tau=.true., &
273 calculate_forces=my_calc_forces, gapw=gapw_xc)
274 END IF
275 ! add Hartree for SINGLETS
276 CALL pw_copy(v_hartree_rspace, v_rspace_new(1))
277 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
278 pmat=rho_ao(ispin), &
279 hmat=kpp1_env%v_ao(ispin), &
280 qs_env=qs_env, &
281 calculate_forces=my_calc_forces, gapw=gapw)
282 ELSE
283 CALL pw_axpy(v_hartree_rspace, v_rspace_new(ispin))
284 IF (lrigpw) THEN
285 IF (ASSOCIATED(v_xc_tau)) cpabort("Meta-GGA functionals not supported with LRI!")
286
287 lri_v_int => lri_density%lri_coefs(ispin)%lri_kinds
288 CALL get_qs_env(qs_env, nkind=nkind)
289 DO ikind = 1, nkind
290 lri_v_int(ikind)%v_int = 0.0_dp
291 END DO
292 CALL integrate_v_rspace_one_center(v_rspace_new(ispin), qs_env, &
293 lri_v_int, .false., "LRI_AUX")
294 DO ikind = 1, nkind
295 CALL para_env%sum(lri_v_int(ikind)%v_int)
296 END DO
297 ALLOCATE (k1mat(1))
298 k1mat(1)%matrix => kpp1_env%v_ao(ispin)%matrix
299 IF (lri_env%exact_1c_terms) THEN
300 CALL integrate_v_rspace_diagonal(v_rspace_new(ispin), k1mat(1)%matrix, &
301 rho_ao(ispin)%matrix, qs_env, my_calc_forces, "ORB")
302 END IF
303 CALL calculate_lri_ks_matrix(lri_env, lri_v_int, k1mat, atomic_kind_set)
304 DEALLOCATE (k1mat)
305 ELSE
306 CALL integrate_v_rspace(v_rspace=v_rspace_new(ispin), &
307 pmat=rho_ao(ispin), &
308 hmat=kpp1_env%v_ao(ispin), &
309 qs_env=qs_env, &
310 calculate_forces=my_calc_forces, gapw=gapw)
311 IF (ASSOCIATED(v_xc_tau)) THEN
312 CALL integrate_v_rspace(v_rspace=v_xc_tau(ispin), &
313 pmat=rho_ao(ispin), &
314 hmat=kpp1_env%v_ao(ispin), &
315 qs_env=qs_env, &
316 compute_tau=.true., &
317 calculate_forces=my_calc_forces, gapw=gapw)
318 END IF
319 END IF
320 END IF
321
322 CALL dbcsr_add(p_env%kpp1(ispin)%matrix, kpp1_env%v_ao(ispin)%matrix, 1.0_dp, alpha)
323 END DO
324
325 IF (gapw) THEN
326 CALL vh_1c_gg_integrals(qs_env, energy_hartree_1c, &
327 p_env%hartree_local%ecoul_1c, &
328 p_env%local_rho_set, &
329 para_env, tddft=.true., core_2nd=.true.)
330 CALL integrate_vhg0_rspace(qs_env, v_hartree_rspace, para_env, &
331 calculate_forces=my_calc_forces, &
332 local_rho_set=p_env%local_rho_set)
333 ! *** Add single atom contributions to the KS matrix ***
334 ! remap pointer
335 ns = SIZE(p_env%kpp1)
336 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
337 ns = SIZE(rho_ao)
338 psmat(1:ns, 1:1) => rho_ao(1:ns)
339 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
340 rho_atom_external=p_env%local_rho_set%rho_atom_set)
341 ELSE IF (gapw_xc) THEN
342 ns = SIZE(p_env%kpp1)
343 ksmat(1:ns, 1:1) => p_env%kpp1(1:ns)
344 ns = SIZE(rho_ao)
345 psmat(1:ns, 1:1) => rho_ao(1:ns)
346 CALL update_ks_atom(qs_env, ksmat, psmat, forces=my_calc_forces, tddft=.true., &
347 rho_atom_external=p_env%local_rho_set%rho_atom_set)
348 END IF
349
350 CALL auxbas_pw_pool%give_back_pw(v_hartree_rspace)
351 DO ispin = 1, SIZE(v_rspace_new)
352 CALL auxbas_pw_pool%give_back_pw(v_rspace_new(ispin))
353 END DO
354 DEALLOCATE (v_rspace_new)
355 IF (ASSOCIATED(v_xc_tau)) THEN
356 DO ispin = 1, SIZE(v_xc_tau)
357 CALL auxbas_pw_pool%give_back_pw(v_xc_tau(ispin))
358 END DO
359 DEALLOCATE (v_xc_tau)
360 END IF
361
362 CALL timestop(handle)
363
364 END SUBROUTINE calc_kpp1
365
366! **************************************************************************************************
367!> \brief checks that the intenal storage is allocated, and allocs it if needed
368!> \param kpp1_env the environment to check
369!> \param qs_env the qs environment this kpp1_env lives in
370!> \param xc_section ...
371!> \author Fawzi Mohamed
372!> \note
373!> private routine
374! **************************************************************************************************
375 SUBROUTINE kpp1_check_i_alloc(kpp1_env, qs_env, xc_section)
376
377 TYPE(qs_kpp1_env_type) :: kpp1_env
378 TYPE(qs_environment_type), INTENT(IN), POINTER :: qs_env
379 TYPE(section_vals_type), POINTER :: xc_section
380
381 INTEGER :: ispin, nspins
382 TYPE(admm_type), POINTER :: admm_env
383 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_s
384 TYPE(dft_control_type), POINTER :: dft_control
385 TYPE(pw_env_type), POINTER :: pw_env
386 TYPE(qs_rho_type), POINTER :: rho
387 TYPE(section_vals_type), POINTER :: admm_xc_section
388
389! ------------------------------------------------------------------
390
391 CALL get_qs_env(qs_env, pw_env=pw_env, matrix_s=matrix_s, &
392 admm_env=admm_env, dft_control=dft_control)
393
394 nspins = dft_control%nspins
395
396 IF (.NOT. ASSOCIATED(kpp1_env%v_ao)) THEN
397 CALL dbcsr_allocate_matrix_set(kpp1_env%v_ao, nspins)
398 DO ispin = 1, nspins
399 ALLOCATE (kpp1_env%v_ao(ispin)%matrix)
400 CALL dbcsr_copy(kpp1_env%v_ao(ispin)%matrix, matrix_s(1)%matrix, &
401 name="kpp1%v_ao-"//adjustl(cp_to_string(ispin)))
402 END DO
403 END IF
404
405 IF (.NOT. ASSOCIATED(kpp1_env%deriv_set)) THEN
406 IF (dft_control%qs_control%gapw_xc) THEN
407 CALL get_qs_env(qs_env, rho_xc=rho)
408 ELSE
409 CALL get_qs_env(qs_env, rho=rho)
410 END IF
411 ALLOCATE (kpp1_env%deriv_set, kpp1_env%rho_set)
412 CALL qs_fxc_prep(qs_env, rho, &
413 kpp1_env%rho_set, kpp1_env%deriv_set, &
414 xc_section, pw_env, is_triplet=.false.)
415 END IF
416
417 ! ADMM Correction
418 IF (dft_control%do_admm) THEN
419 IF (admm_env%aux_exch_func /= do_admm_aux_exch_func_none) THEN
420 IF (.NOT. ASSOCIATED(kpp1_env%deriv_set_admm)) THEN
421 ALLOCATE (kpp1_env%deriv_set_admm, kpp1_env%rho_set_admm)
422 admm_xc_section => admm_env%xc_section_aux
423 CALL get_admm_env(admm_env, rho_aux_fit=rho)
424 CALL qs_fxc_prep(qs_env, rho, kpp1_env%rho_set_admm, kpp1_env%deriv_set_admm, &
425 admm_xc_section, pw_env, is_triplet=.false.)
426 END IF
427 END IF
428 END IF
429
430 END SUBROUTINE kpp1_check_i_alloc
431! **************************************************************************************************
432!> \brief ...
433!> \param rho1 ...
434!> \param rho1_tot_gspace ...
435!> \param out_unit ...
436! **************************************************************************************************
437 SUBROUTINE print_densities(rho1, rho1_tot_gspace, out_unit)
438
439 TYPE(qs_rho_type), POINTER :: rho1
440 TYPE(pw_c1d_gs_type), INTENT(IN) :: rho1_tot_gspace
441 INTEGER :: out_unit
442
443 REAL(kind=dp) :: total_rho_gspace
444 REAL(kind=dp), DIMENSION(:), POINTER :: tot_rho1_r
445
446 NULLIFY (tot_rho1_r)
447
448 total_rho_gspace = pw_integrate_function(rho1_tot_gspace, isign=-1)
449 IF (out_unit > 0) THEN
450 CALL qs_rho_get(rho1, tot_rho_r=tot_rho1_r)
451 WRITE (unit=out_unit, fmt="(T3,A,T60,F20.10)") &
452 "KPP1 total charge density (r-space):", &
453 accurate_sum(tot_rho1_r), &
454 "KPP1 total charge density (g-space):", &
455 total_rho_gspace
456 END IF
457
458 END SUBROUTINE print_densities
459
460END MODULE qs_kpp1_env_methods
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
Define the atomic kind types and their sub types.
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_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
DBCSR operations in CP2K.
various routines to log and control the output. The idea is that decisions about where to log should ...
subroutine, public vh_1c_gg_integrals(qs_env, energy_hartree_1c, ecoul_1c, local_rho_set, para_env, tddft, local_rho_set_2nd, core_2nd)
Calculates one center GAPW Hartree energies and matrix elements Hartree potentials are input Takes po...
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_admm_aux_exch_func_none
objects that represent the structure of input sections and the data contained in an input section
sums arrays of real/complex numbers with much reduced round-off as compared to a naive implementation...
Definition kahan_sum.F:29
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
routines that build the Kohn-Sham matrix for the LRIGPW and xc parts
subroutine, public calculate_lri_ks_matrix(lri_env, lri_v_int, h_matrix, atomic_kind_set, cell_to_index)
update of LRIGPW KS matrix
Interface to the message passing library MPI.
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 ...
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_apply(qs_env, xc_deriv_set, xc_rho_set, rho1_struct, rho0_atom_set, xc_section, do_onecenter, fxc_rho, fxc_tau, rho1_atom_set, do_scale, is_triplet, spinflip, pw_env_ext, kind_set_external, para_env_external, compute_virial, virial_xc)
...
Definition qs_fxc.F:693
subroutine, public qs_fxc_prep(qs_env, rho0_struct, xc_rho_set, xc_deriv_set, xc_section, pw_env_ext, is_triplet)
...
Definition qs_fxc.F:518
subroutine, public prepare_gapw_den(qs_env, local_rho_set, do_rho0, kind_set_external, pw_env_sub)
...
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 kpp1_check_i_alloc(kpp1_env, qs_env, xc_section)
checks that the intenal storage is allocated, and allocs it if needed
subroutine, public calc_kpp1(rho1_xc, rho1, xc_section, lrigpw, qs_env, p_env, calc_forces, calc_virial, virial)
...
subroutine, public kpp1_create(kpp1_env)
allocates and initializes a kpp1_env
basis types for the calculation of the perturbation of density theory.
routines that build the Kohn-Sham matrix contributions coming from local atomic densities
Definition qs_ks_atom.F:12
subroutine, public update_ks_atom(qs_env, ksmat, pmat, forces, tddft, rho_atom_external, kind_set_external, oce_external, sab_external, kscale, kintegral, kforce, fscale)
The correction to the KS matrix due to the GAPW local terms to the hartree and XC contributions is he...
Definition qs_ks_atom.F:110
basis types for the calculation of the perturbation of density theory.
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)
...
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...
stores some data used in wavefunction fitting
Definition admm_types.F:120
Provides all information about an atomic kind.
stores all the informations relevant to an mpi environment
contained for different pw related things
environment for the poisson solver
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
environment that keeps the informations and temporary val to build the kpp1 kernel matrix
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.