(git:97501a3)
Loading...
Searching...
No Matches
qs_energy_utils.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief Utility subroutine for qs energy calculation
10!> \par History
11!> none
12!> \author MK (29.10.2002)
13! **************************************************************************************************
21 USE cp_dbcsr_api, ONLY: dbcsr_copy,&
33 USE kinds, ONLY: dp
35 USE mulliken, ONLY: atom_trace
37 USE pw_env_types, ONLY: pw_env_get,&
39 USE pw_methods, ONLY: pw_axpy,&
42 USE pw_types, ONLY: pw_r3d_rs_type
48 USE qs_integrate_potential, ONLY: integrate_v_core_rspace,&
49 integrate_v_rspace
51 USE qs_ks_atom, ONLY: update_ks_atom
59 USE qs_rho_types, ONLY: qs_rho_get,&
61 USE qs_scf, ONLY: scf
62 USE qs_tddfpt2_methods, ONLY: tddfpt
63 USE qs_vxc, ONLY: qs_xc_density
65 USE rixs_methods, ONLY: rixs
67 USE xas_methods, ONLY: xas
68 USE xas_tdp_methods, ONLY: xas_tdp
71#include "./base/base_uses.f90"
72
73 IMPLICIT NONE
74
75 PRIVATE
76
77! *** Global parameters ***
78
79 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_energy_utils'
80
82
83CONTAINS
84
85! **************************************************************************************************
86!> \brief Refactoring of qs_energies_scf. Moves computation of properties
87!> into separate subroutine
88!> \param qs_env ...
89!> \param calc_forces ...
90!> \par History
91!> 05.2013 created [Florian Schiffmann]
92! **************************************************************************************************
93
94 SUBROUTINE qs_energies_properties(qs_env, calc_forces)
95 TYPE(qs_environment_type), POINTER :: qs_env
96 LOGICAL, INTENT(IN) :: calc_forces
97
98 CHARACTER(len=*), PARAMETER :: routinen = 'qs_energies_properties'
99
100 INTEGER :: handle, natom
101 LOGICAL :: do_et, do_et_proj, &
102 do_post_scf_bandstructure, do_tip_scan
103 REAL(kind=dp) :: ekts
104 TYPE(atprop_type), POINTER :: atprop
105 TYPE(dft_control_type), POINTER :: dft_control
106 TYPE(mp_para_env_type), POINTER :: para_env
107 TYPE(pw_env_type), POINTER :: pw_env
108 TYPE(pw_r3d_rs_type), POINTER :: v_hartree_rspace
109 TYPE(qs_energy_type), POINTER :: energy
110 TYPE(section_vals_type), POINTER :: input, post_scf_bands_section, &
111 proj_section, rest_b_section, &
112 tip_scan_section
113
114 NULLIFY (atprop, energy, pw_env)
115 CALL timeset(routinen, handle)
116
117 ! atomic energies using Mulliken partition
118 CALL get_qs_env(qs_env, &
119 dft_control=dft_control, &
120 input=input, &
121 atprop=atprop, &
122 energy=energy, &
123 v_hartree_rspace=v_hartree_rspace, &
124 para_env=para_env, &
125 pw_env=pw_env)
126 IF (atprop%energy) THEN
127 CALL qs_energies_mulliken(qs_env)
128 CALL get_qs_env(qs_env, natom=natom)
129 IF (.NOT. dft_control%qs_control%semi_empirical .AND. &
130 .NOT. dft_control%qs_control%xtb .AND. &
131 .NOT. dft_control%qs_control%dftb) THEN
132 ! Nuclear charge correction
133 CALL integrate_v_core_rspace(v_hartree_rspace, qs_env)
134 IF (.NOT. ASSOCIATED(atprop%ateb)) THEN
135 CALL atprop_array_init(atprop%ateb, natom)
136 END IF
137 ! Kohn-Sham Functional corrections
138 CALL ks_xc_correction(qs_env)
139 END IF
140 CALL atprop_array_add(atprop%atener, atprop%ateb)
141 CALL atprop_array_add(atprop%atener, atprop%ateself)
142 CALL atprop_array_add(atprop%atener, atprop%atexc)
143 CALL atprop_array_add(atprop%atener, atprop%atecoul)
144 CALL atprop_array_add(atprop%atener, atprop%atevdw)
145 CALL atprop_array_add(atprop%atener, atprop%ategcp)
146 CALL atprop_array_add(atprop%atener, atprop%atecc)
147 CALL atprop_array_add(atprop%atener, atprop%ate1c)
148 ! entropic energy
149 ekts = energy%kts/real(natom, kind=dp)/real(para_env%num_pe, kind=dp)
150 atprop%atener(:) = atprop%atener(:) + ekts
151 END IF
152
153 ! ET coupling - projection-operator approach
154 NULLIFY (proj_section)
155 proj_section => &
156 section_vals_get_subs_vals(input, "PROPERTIES%ET_COUPLING%PROJECTION")
157 CALL section_vals_get(proj_section, explicit=do_et_proj)
158 IF (do_et_proj) THEN
159 CALL calc_et_coupling_proj(qs_env)
160 END IF
161
162 ! ********** Calculate the electron transfer coupling elements********
163 do_et = .false.
164 do_et = dft_control%qs_control%et_coupling_calc
165 IF (do_et) THEN
166 qs_env%et_coupling%energy = energy%total
167 qs_env%et_coupling%keep_matrix = .true.
168 qs_env%et_coupling%first_run = .true.
169 CALL qs_ks_update_qs_env(qs_env, calculate_forces=.false., just_energy=.true.)
170 qs_env%et_coupling%first_run = .false.
171 IF (dft_control%qs_control%ddapc_restraint) THEN
172 rest_b_section => section_vals_get_subs_vals(input, "PROPERTIES%ET_COUPLING%DDAPC_RESTRAINT_B")
173 CALL read_ddapc_section(qs_control=dft_control%qs_control, &
174 ddapc_restraint_section=rest_b_section)
175 END IF
176 CALL scf(qs_env=qs_env)
177 qs_env%et_coupling%keep_matrix = .true.
178
179 CALL qs_ks_update_qs_env(qs_env, calculate_forces=.false., just_energy=.true.)
180 CALL calc_et_coupling(qs_env)
181 END IF
182
183 !Properties
184
185 IF (dft_control%do_xas_calculation) THEN
186 CALL xas(qs_env, dft_control)
187 END IF
188
189 IF (dft_control%do_xas_tdp_calculation) THEN
190 CALL xas_tdp(qs_env)
191 END IF
192
193 ! Compute Linear Response properties as post-scf
194 IF (.NOT. qs_env%linres_run) THEN
195 CALL linres_calculation_low(qs_env)
196 END IF
197
198 IF (dft_control%tddfpt2_control%enabled) THEN
199 CALL tddfpt(qs_env, calc_forces)
200 END IF
201
202 ! stand-alone RIXS, does not depend on previous xas_tdp and/or tddfpt2 calculations
203 IF (qs_env%do_rixs) CALL rixs(qs_env)
204
205 ! post-SCF bandstructure calculation from higher level methods
206 NULLIFY (post_scf_bands_section)
207 post_scf_bands_section => section_vals_get_subs_vals(qs_env%input, "PROPERTIES%BANDSTRUCTURE")
208 CALL section_vals_get(post_scf_bands_section, explicit=do_post_scf_bandstructure)
209 IF (do_post_scf_bandstructure) THEN
210 CALL post_scf_bandstructure(qs_env, post_scf_bands_section)
211 END IF
212
213 ! tip scan
214 NULLIFY (tip_scan_section)
215 tip_scan_section => section_vals_get_subs_vals(input, "PROPERTIES%TIP_SCAN")
216 CALL section_vals_get(tip_scan_section, explicit=do_tip_scan)
217 IF (do_tip_scan) THEN
218 CALL tip_scanning(qs_env, tip_scan_section)
219 END IF
220
221 CALL timestop(handle)
222
223 END SUBROUTINE qs_energies_properties
224
225! **************************************************************************************************
226!> \brief Use a simple Mulliken-like energy decomposition
227!> \param qs_env ...
228!> \date 07.2011
229!> \author JHU
230!> \version 1.0
231! **************************************************************************************************
232 SUBROUTINE qs_energies_mulliken(qs_env)
233
234 TYPE(qs_environment_type), POINTER :: qs_env
235
236 INTEGER :: ispin, natom, nspin
237 REAL(kind=dp), ALLOCATABLE, DIMENSION(:) :: atcore
238 TYPE(atprop_type), POINTER :: atprop
239 TYPE(dbcsr_p_type), ALLOCATABLE, DIMENSION(:), &
240 TARGET :: core_mat
241 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_h, matrix_ks, rho_ao
242 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: math, matp
243 TYPE(dft_control_type), POINTER :: dft_control
244 TYPE(qs_rho_type), POINTER :: rho
245
246 CALL get_qs_env(qs_env=qs_env, atprop=atprop)
247 IF (atprop%energy) THEN
248 CALL get_qs_env(qs_env=qs_env, matrix_ks=matrix_ks, matrix_h=matrix_h, rho=rho)
249 CALL qs_rho_get(rho, rho_ao=rho_ao)
250 ! E = 0.5*Tr(H*P+F*P)
251 atprop%atener = 0._dp
252 nspin = SIZE(rho_ao)
253 DO ispin = 1, nspin
254 CALL atom_trace(matrix_h(1)%matrix, rho_ao(ispin)%matrix, &
255 0.5_dp, atprop%atener)
256 CALL atom_trace(matrix_ks(ispin)%matrix, rho_ao(ispin)%matrix, &
257 0.5_dp, atprop%atener)
258 END DO
259 !
260 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
261 IF (.NOT. dft_control%qs_control%semi_empirical .AND. &
262 .NOT. dft_control%qs_control%xtb .AND. &
263 .NOT. dft_control%qs_control%dftb) THEN
264 CALL get_qs_env(qs_env=qs_env, natom=natom)
265 ALLOCATE (atcore(natom))
266 atcore = 0.0_dp
267 ALLOCATE (core_mat(1))
268 ALLOCATE (core_mat(1)%matrix)
269 CALL dbcsr_create(core_mat(1)%matrix, template=matrix_h(1)%matrix)
270 CALL dbcsr_copy(core_mat(1)%matrix, matrix_h(1)%matrix)
271 CALL dbcsr_set(core_mat(1)%matrix, 0.0_dp)
272 math(1:1, 1:1) => core_mat(1:1)
273 matp(1:nspin, 1:1) => rho_ao(1:nspin)
274 CALL core_matrices(qs_env, math, matp, .false., 0, atcore=atcore)
275 atprop%atener = atprop%atener + 0.5_dp*atcore
276 DO ispin = 1, nspin
277 CALL atom_trace(core_mat(1)%matrix, rho_ao(ispin)%matrix, &
278 -0.5_dp, atprop%atener)
279 END DO
280 DEALLOCATE (atcore)
281 CALL dbcsr_release(core_mat(1)%matrix)
282 DEALLOCATE (core_mat(1)%matrix)
283 DEALLOCATE (core_mat)
284 END IF
285 END IF
286
287 END SUBROUTINE qs_energies_mulliken
288
289! **************************************************************************************************
290!> \brief ...
291!> \param qs_env ...
292! **************************************************************************************************
293 SUBROUTINE ks_xc_correction(qs_env)
294 TYPE(qs_environment_type), POINTER :: qs_env
295
296 CHARACTER(len=*), PARAMETER :: routinen = 'ks_xc_correction'
297
298 INTEGER :: handle, iatom, ispin, natom, nspins
299 LOGICAL :: gapw, gapw_xc
300 REAL(kind=dp) :: eh1, exc1
301 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
302 TYPE(atprop_type), POINTER :: atprop
303 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_s, rho_ao, xcmat
304 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: matrix_p
305 TYPE(dft_control_type), POINTER :: dft_control
306 TYPE(ecoul_1center_type), DIMENSION(:), POINTER :: ecoul_1c
307 TYPE(local_rho_type), POINTER :: local_rho_set
308 TYPE(mp_para_env_type), POINTER :: para_env
309 TYPE(pw_env_type), POINTER :: pw_env
310 TYPE(pw_pool_type), POINTER :: auxbas_pw_pool
311 TYPE(pw_r3d_rs_type) :: xc_den
312 TYPE(pw_r3d_rs_type), ALLOCATABLE, DIMENSION(:) :: vtau, vxc
313 TYPE(pw_r3d_rs_type), POINTER :: v_hartree_rspace
314 TYPE(qs_dispersion_type), POINTER :: dispersion_env
315 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
316 TYPE(qs_ks_env_type), POINTER :: ks_env
317 TYPE(qs_rho_type), POINTER :: rho_struct
318 TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho_atom_set
319 TYPE(section_vals_type), POINTER :: xc_fun_section, xc_section
320 TYPE(xc_rho_cflags_type) :: needs
321
322 CALL timeset(routinen, handle)
323
324 CALL get_qs_env(qs_env, ks_env=ks_env, dft_control=dft_control, pw_env=pw_env, atprop=atprop)
325
326 IF (atprop%energy) THEN
327
328 nspins = dft_control%nspins
329 xc_section => section_vals_get_subs_vals(qs_env%input, "DFT%XC")
330 xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL")
331 needs = xc_functionals_get_needs(xc_fun_section, (nspins == 2), .true.)
332 gapw = dft_control%qs_control%gapw
333 gapw_xc = dft_control%qs_control%gapw_xc
334
335 ! Nuclear charge correction
336 CALL get_qs_env(qs_env, v_hartree_rspace=v_hartree_rspace)
337 IF (gapw .OR. gapw_xc) THEN
338 CALL get_qs_env(qs_env=qs_env, local_rho_set=local_rho_set, &
339 rho_atom_set=rho_atom_set, ecoul_1c=ecoul_1c, &
340 natom=natom, para_env=para_env)
341 CALL zero_rho_atom_integrals(rho_atom_set)
342 CALL calculate_vxc_atom(qs_env, .false., exc1)
343 IF (gapw) THEN
344 CALL vh_1c_gg_integrals(qs_env, eh1, ecoul_1c, local_rho_set, para_env, tddft=.false.)
345 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set)
346 CALL integrate_vhg0_rspace(qs_env, v_hartree_rspace, para_env, calculate_forces=.false., &
347 local_rho_set=local_rho_set, atener=atprop%ateb)
348 END IF
349 END IF
350
351 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
352 CALL auxbas_pw_pool%create_pw(xc_den)
353 ALLOCATE (vxc(nspins))
354 DO ispin = 1, nspins
355 CALL auxbas_pw_pool%create_pw(vxc(ispin))
356 END DO
357 IF (needs%tau .OR. needs%tau_spin) THEN
358 ALLOCATE (vtau(nspins))
359 DO ispin = 1, nspins
360 CALL auxbas_pw_pool%create_pw(vtau(ispin))
361 END DO
362 END IF
363
364 IF (gapw_xc) THEN
365 CALL get_qs_env(qs_env, rho_xc=rho_struct, dispersion_env=dispersion_env)
366 ELSE
367 CALL get_qs_env(qs_env, rho=rho_struct, dispersion_env=dispersion_env)
368 END IF
369 IF (needs%tau .OR. needs%tau_spin) THEN
370 CALL qs_xc_density(ks_env, rho_struct, xc_section, dispersion_env=dispersion_env, &
371 xc_den=xc_den, vxc=vxc, vtau=vtau)
372 ELSE
373 CALL qs_xc_density(ks_env, rho_struct, xc_section, dispersion_env=dispersion_env, &
374 xc_den=xc_den, vxc=vxc)
375 END IF
376 CALL get_qs_env(qs_env, rho=rho_struct)
377 CALL qs_rho_get(rho_struct, rho_ao=rho_ao)
378 CALL get_qs_env(qs_env, natom=natom, matrix_s=matrix_s)
379 CALL atprop_array_init(atprop%atexc, natom)
380 ALLOCATE (xcmat(nspins))
381 DO ispin = 1, nspins
382 ALLOCATE (xcmat(ispin)%matrix)
383 CALL dbcsr_create(xcmat(ispin)%matrix, template=matrix_s(1)%matrix)
384 CALL dbcsr_copy(xcmat(ispin)%matrix, matrix_s(1)%matrix)
385 CALL dbcsr_set(xcmat(ispin)%matrix, 0.0_dp)
386 CALL pw_scale(vxc(ispin), -0.5_dp)
387 CALL pw_axpy(xc_den, vxc(ispin))
388 CALL pw_scale(vxc(ispin), vxc(ispin)%pw_grid%dvol)
389 CALL integrate_v_rspace(qs_env=qs_env, v_rspace=vxc(ispin), hmat=xcmat(ispin), &
390 calculate_forces=.false., gapw=(gapw .OR. gapw_xc))
391 IF (needs%tau .OR. needs%tau_spin) THEN
392 CALL pw_scale(vtau(ispin), -0.5_dp*vtau(ispin)%pw_grid%dvol)
393 CALL integrate_v_rspace(qs_env=qs_env, v_rspace=vtau(ispin), &
394 hmat=xcmat(ispin), calculate_forces=.false., &
395 gapw=(gapw .OR. gapw_xc), compute_tau=.true.)
396 END IF
397 END DO
398 IF (gapw .OR. gapw_xc) THEN
399 ! remove one-center potential matrix part
400 CALL qs_rho_get(rho_struct, rho_ao_kp=matrix_p)
401 CALL update_ks_atom(qs_env, xcmat, matrix_p, forces=.false., kscale=-0.5_dp)
402 CALL get_qs_env(qs_env=qs_env, rho_atom_set=rho_atom_set)
403 CALL atprop_array_init(atprop%ate1c, natom)
404 atprop%ate1c = 0.0_dp
405 DO iatom = 1, natom
406 atprop%ate1c(iatom) = atprop%ate1c(iatom) + &
407 rho_atom_set(iatom)%exc_h - rho_atom_set(iatom)%exc_s
408 END DO
409 IF (gapw) THEN
410 CALL get_qs_env(qs_env=qs_env, ecoul_1c=ecoul_1c)
411 DO iatom = 1, natom
412 atprop%ate1c(iatom) = atprop%ate1c(iatom) + &
413 ecoul_1c(iatom)%ecoul_1_h - ecoul_1c(iatom)%ecoul_1_s + &
414 ecoul_1c(iatom)%ecoul_1_z - ecoul_1c(iatom)%ecoul_1_0
415 END DO
416 END IF
417 END IF
418 DO ispin = 1, nspins
419 CALL atom_trace(xcmat(ispin)%matrix, rho_ao(ispin)%matrix, 1.0_dp, atprop%atexc)
420 CALL dbcsr_release(xcmat(ispin)%matrix)
421 DEALLOCATE (xcmat(ispin)%matrix)
422 END DO
423 DEALLOCATE (xcmat)
424
425 CALL auxbas_pw_pool%give_back_pw(xc_den)
426 DO ispin = 1, nspins
427 CALL auxbas_pw_pool%give_back_pw(vxc(ispin))
428 END DO
429 IF (needs%tau .OR. needs%tau_spin) THEN
430 DO ispin = 1, nspins
431 CALL auxbas_pw_pool%give_back_pw(vtau(ispin))
432 END DO
433 END IF
434
435 END IF
436
437 CALL timestop(handle)
438
439 END SUBROUTINE ks_xc_correction
440
441END MODULE qs_energy_utils
Define the atomic kind types and their sub types.
Holds information on atomic properties.
subroutine, public atprop_array_add(array_a, array_b)
...
subroutine, public atprop_array_init(atarray, natom)
...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Utilities to set up the control types.
subroutine, public read_ddapc_section(qs_control, qs_section, ddapc_restraint_section)
reads the input parameters needed for ddapc.
subroutine, public dbcsr_copy(matrix_b, matrix_a, name, keep_sparsity, keep_imaginary)
...
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
calculates the electron transfer coupling elements by projection-operator approach Kondov et al....
subroutine, public calc_et_coupling_proj(qs_env)
calculates the electron transfer coupling elements by projection-operator approach Kondov et al....
calculates the electron transfer coupling elements Wu, Van Voorhis, JCP 125, 164105 (2006)
Definition et_coupling.F:13
subroutine, public calc_et_coupling(qs_env)
...
Definition et_coupling.F:63
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...
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
Interface to the message passing library MPI.
compute mulliken charges we (currently) define them as c_i = 1/2 [ (PS)_{ii} + (SP)_{ii} ]
Definition mulliken.F:13
subroutine, public atom_trace(amat, bmat, factor, atrace)
Compute partial trace of product of two matrices.
Definition mulliken.F:915
subroutine, public post_scf_bandstructure(qs_env, post_scf_bandstructure_section)
Perform post-SCF band structure calculations from higher level methods.
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 ...
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)
...
Definition of disperson types for DFT calculations.
Utility subroutine for qs energy calculation.
subroutine, public qs_energies_properties(qs_env, calc_forces)
Refactoring of qs_energies_scf. Moves computation of properties into separate subroutine.
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.
Integrate single or product functions over a potential on a RS grid.
Define the quickstep kind type and their sub types.
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
routines that build the Kohn-Sham matrix (i.e calculate the coulomb and xc parts
subroutine, public qs_ks_update_qs_env(qs_env, calculate_forces, just_energy, print_active)
updates the Kohn Sham matrix of the given qs_env (facility method)
Contains the setup for the calculation of properties by linear response by the application of second ...
subroutine, public linres_calculation_low(qs_env)
Linear response can be called as run type or as post scf calculation Initialize the perturbation envi...
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)
...
subroutine, public zero_rho_atom_integrals(rho_atom_set)
...
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...
Routines for the Quickstep SCF run.
Definition qs_scf.F:47
subroutine, public scf(qs_env, has_converged, total_scf_steps)
perform an scf procedure in the given qs_env
Definition qs_scf.F:203
subroutine, public tddfpt(qs_env, calc_forces, rixs_env)
Perform TDDFPT calculation.
routines that build the integrals of the Vxc potential calculated for the atomic density in the basis...
Definition qs_vxc_atom.F:12
subroutine, public calculate_vxc_atom(qs_env, energy_only, exc1, gradient_atom_set, adiabatic_rescale_factor, kind_set_external, rho_atom_set_external, xc_section_external)
...
Definition qs_vxc_atom.F:85
subroutine, public qs_xc_density(ks_env, rho_struct, xc_section, dispersion_env, xc_ener, xc_den, vxc, vtau)
calculates the XC density: E_xc(r) - V_xc(r)*rho(r) or E_xc(r)/rho(r)
Definition qs_vxc.F:573
Methods for Resonant Inelastic XRAY Scattering (RIXS) calculations.
subroutine, public rixs(qs_env)
Driver for RIXS calculations.
subroutine, public tip_scanning(qs_env, input_section)
Perform tip scanning calculation.
driver for the xas calculation and xas_scf for the tp method
Definition xas_methods.F:15
subroutine, public xas(qs_env, dft_control)
Driver for xas calculations The initial mos are prepared A loop on the atoms to be excited is started...
Methods for X-Ray absorption spectroscopy (XAS) using TDDFPT.
subroutine, public xas_tdp(qs_env, rixs_env)
Driver for XAS TDDFT calculations.
type(xc_rho_cflags_type) function, public xc_functionals_get_needs(functionals, lsd, calc_potential)
...
contains the structure
Provides all information about an atomic kind.
type for the atomic properties
stores all the informations relevant to an mpi environment
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 ...
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.
contains a flag for each component of xc_rho_set, so that you can use it to tell which components you...