(git:33f85d8)
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
66 USE xas_methods, ONLY: xas
67 USE xas_tdp_methods, ONLY: xas_tdp
70#include "./base/base_uses.f90"
71
72 IMPLICIT NONE
73
74 PRIVATE
75
76! *** Global parameters ***
77
78 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_energy_utils'
79
81
82CONTAINS
83
84! **************************************************************************************************
85!> \brief Refactoring of qs_energies_scf. Moves computation of properties
86!> into separate subroutine
87!> \param qs_env ...
88!> \param calc_forces ...
89!> \par History
90!> 05.2013 created [Florian Schiffmann]
91! **************************************************************************************************
92
93 SUBROUTINE qs_energies_properties(qs_env, calc_forces)
94 TYPE(qs_environment_type), POINTER :: qs_env
95 LOGICAL, INTENT(IN) :: calc_forces
96
97 CHARACTER(len=*), PARAMETER :: routinen = 'qs_energies_properties'
98
99 INTEGER :: handle, natom
100 LOGICAL :: do_et, do_et_proj, &
101 do_post_scf_bandstructure, do_tip_scan
102 REAL(kind=dp) :: ekts
103 TYPE(atprop_type), POINTER :: atprop
104 TYPE(dft_control_type), POINTER :: dft_control
105 TYPE(mp_para_env_type), POINTER :: para_env
106 TYPE(pw_env_type), POINTER :: pw_env
107 TYPE(pw_r3d_rs_type), POINTER :: v_hartree_rspace
108 TYPE(qs_energy_type), POINTER :: energy
109 TYPE(section_vals_type), POINTER :: input, post_scf_bands_section, &
110 proj_section, rest_b_section, &
111 tip_scan_section
112
113 NULLIFY (atprop, energy, pw_env)
114 CALL timeset(routinen, handle)
115
116 ! atomic energies using Mulliken partition
117 CALL get_qs_env(qs_env, &
118 dft_control=dft_control, &
119 input=input, &
120 atprop=atprop, &
121 energy=energy, &
122 v_hartree_rspace=v_hartree_rspace, &
123 para_env=para_env, &
124 pw_env=pw_env)
125 IF (atprop%energy) THEN
126 CALL qs_energies_mulliken(qs_env)
127 CALL get_qs_env(qs_env, natom=natom)
128 IF (.NOT. dft_control%qs_control%semi_empirical .AND. &
129 .NOT. dft_control%qs_control%xtb .AND. &
130 .NOT. dft_control%qs_control%dftb) THEN
131 ! Nuclear charge correction
132 CALL integrate_v_core_rspace(v_hartree_rspace, qs_env)
133 IF (.NOT. ASSOCIATED(atprop%ateb)) THEN
134 CALL atprop_array_init(atprop%ateb, natom)
135 END IF
136 ! Kohn-Sham Functional corrections
137 CALL ks_xc_correction(qs_env)
138 END IF
139 CALL atprop_array_add(atprop%atener, atprop%ateb)
140 CALL atprop_array_add(atprop%atener, atprop%ateself)
141 CALL atprop_array_add(atprop%atener, atprop%atexc)
142 CALL atprop_array_add(atprop%atener, atprop%atecoul)
143 CALL atprop_array_add(atprop%atener, atprop%atevdw)
144 CALL atprop_array_add(atprop%atener, atprop%ategcp)
145 CALL atprop_array_add(atprop%atener, atprop%atecc)
146 CALL atprop_array_add(atprop%atener, atprop%ate1c)
147 ! entropic energy
148 ekts = energy%kts/real(natom, kind=dp)/real(para_env%num_pe, kind=dp)
149 atprop%atener(:) = atprop%atener(:) + ekts
150 END IF
151
152 ! ET coupling - projection-operator approach
153 NULLIFY (proj_section)
154 proj_section => &
155 section_vals_get_subs_vals(input, "PROPERTIES%ET_COUPLING%PROJECTION")
156 CALL section_vals_get(proj_section, explicit=do_et_proj)
157 IF (do_et_proj) THEN
158 CALL calc_et_coupling_proj(qs_env)
159 END IF
160
161 ! ********** Calculate the electron transfer coupling elements********
162 do_et = .false.
163 do_et = dft_control%qs_control%et_coupling_calc
164 IF (do_et) THEN
165 qs_env%et_coupling%energy = energy%total
166 qs_env%et_coupling%keep_matrix = .true.
167 qs_env%et_coupling%first_run = .true.
168 CALL qs_ks_update_qs_env(qs_env, calculate_forces=.false., just_energy=.true.)
169 qs_env%et_coupling%first_run = .false.
170 IF (dft_control%qs_control%ddapc_restraint) THEN
171 rest_b_section => section_vals_get_subs_vals(input, "PROPERTIES%ET_COUPLING%DDAPC_RESTRAINT_B")
172 CALL read_ddapc_section(qs_control=dft_control%qs_control, &
173 ddapc_restraint_section=rest_b_section)
174 END IF
175 CALL scf(qs_env=qs_env)
176 qs_env%et_coupling%keep_matrix = .true.
177
178 CALL qs_ks_update_qs_env(qs_env, calculate_forces=.false., just_energy=.true.)
179 CALL calc_et_coupling(qs_env)
180 END IF
181
182 !Properties
183 IF (dft_control%do_xas_calculation) THEN
184 CALL xas(qs_env, dft_control)
185 END IF
186
187 IF (dft_control%do_xas_tdp_calculation) THEN
188 CALL xas_tdp(qs_env)
189 END IF
190
191 ! Compute Linear Response properties as post-scf
192 IF (.NOT. qs_env%linres_run) THEN
193 CALL linres_calculation_low(qs_env)
194 END IF
195
196 IF (dft_control%tddfpt2_control%enabled) THEN
197 CALL tddfpt(qs_env, calc_forces)
198 END IF
199
200 ! post-SCF bandstructure calculation from higher level methods
201 NULLIFY (post_scf_bands_section)
202 post_scf_bands_section => section_vals_get_subs_vals(qs_env%input, "PROPERTIES%BANDSTRUCTURE")
203 CALL section_vals_get(post_scf_bands_section, explicit=do_post_scf_bandstructure)
204 IF (do_post_scf_bandstructure) THEN
205 CALL post_scf_bandstructure(qs_env, post_scf_bands_section)
206 END IF
207
208 ! tip scan
209 NULLIFY (tip_scan_section)
210 tip_scan_section => section_vals_get_subs_vals(input, "PROPERTIES%TIP_SCAN")
211 CALL section_vals_get(tip_scan_section, explicit=do_tip_scan)
212 IF (do_tip_scan) THEN
213 CALL tip_scanning(qs_env, tip_scan_section)
214 END IF
215
216 CALL timestop(handle)
217
218 END SUBROUTINE qs_energies_properties
219
220! **************************************************************************************************
221!> \brief Use a simple Mulliken-like energy decomposition
222!> \param qs_env ...
223!> \date 07.2011
224!> \author JHU
225!> \version 1.0
226! **************************************************************************************************
227 SUBROUTINE qs_energies_mulliken(qs_env)
228
229 TYPE(qs_environment_type), POINTER :: qs_env
230
231 INTEGER :: ispin, natom, nspin
232 REAL(kind=dp), ALLOCATABLE, DIMENSION(:) :: atcore
233 TYPE(atprop_type), POINTER :: atprop
234 TYPE(dbcsr_p_type), ALLOCATABLE, DIMENSION(:), &
235 TARGET :: core_mat
236 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_h, matrix_ks, rho_ao
237 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: math, matp
238 TYPE(dft_control_type), POINTER :: dft_control
239 TYPE(qs_rho_type), POINTER :: rho
240
241 CALL get_qs_env(qs_env=qs_env, atprop=atprop)
242 IF (atprop%energy) THEN
243 CALL get_qs_env(qs_env=qs_env, matrix_ks=matrix_ks, matrix_h=matrix_h, rho=rho)
244 CALL qs_rho_get(rho, rho_ao=rho_ao)
245 ! E = 0.5*Tr(H*P+F*P)
246 atprop%atener = 0._dp
247 nspin = SIZE(rho_ao)
248 DO ispin = 1, nspin
249 CALL atom_trace(matrix_h(1)%matrix, rho_ao(ispin)%matrix, &
250 0.5_dp, atprop%atener)
251 CALL atom_trace(matrix_ks(ispin)%matrix, rho_ao(ispin)%matrix, &
252 0.5_dp, atprop%atener)
253 END DO
254 !
255 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
256 IF (.NOT. dft_control%qs_control%semi_empirical .AND. &
257 .NOT. dft_control%qs_control%xtb .AND. &
258 .NOT. dft_control%qs_control%dftb) THEN
259 CALL get_qs_env(qs_env=qs_env, natom=natom)
260 ALLOCATE (atcore(natom))
261 atcore = 0.0_dp
262 ALLOCATE (core_mat(1))
263 ALLOCATE (core_mat(1)%matrix)
264 CALL dbcsr_create(core_mat(1)%matrix, template=matrix_h(1)%matrix)
265 CALL dbcsr_copy(core_mat(1)%matrix, matrix_h(1)%matrix)
266 CALL dbcsr_set(core_mat(1)%matrix, 0.0_dp)
267 math(1:1, 1:1) => core_mat(1:1)
268 matp(1:nspin, 1:1) => rho_ao(1:nspin)
269 CALL core_matrices(qs_env, math, matp, .false., 0, atcore=atcore)
270 atprop%atener = atprop%atener + 0.5_dp*atcore
271 DO ispin = 1, nspin
272 CALL atom_trace(core_mat(1)%matrix, rho_ao(ispin)%matrix, &
273 -0.5_dp, atprop%atener)
274 END DO
275 DEALLOCATE (atcore)
276 CALL dbcsr_release(core_mat(1)%matrix)
277 DEALLOCATE (core_mat(1)%matrix)
278 DEALLOCATE (core_mat)
279 END IF
280 END IF
281
282 END SUBROUTINE qs_energies_mulliken
283
284! **************************************************************************************************
285!> \brief ...
286!> \param qs_env ...
287! **************************************************************************************************
288 SUBROUTINE ks_xc_correction(qs_env)
289 TYPE(qs_environment_type), POINTER :: qs_env
290
291 CHARACTER(len=*), PARAMETER :: routinen = 'ks_xc_correction'
292
293 INTEGER :: handle, iatom, ispin, natom, nspins
294 LOGICAL :: gapw, gapw_xc
295 REAL(kind=dp) :: eh1, exc1
296 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
297 TYPE(atprop_type), POINTER :: atprop
298 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_s, rho_ao, xcmat
299 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: matrix_p
300 TYPE(dft_control_type), POINTER :: dft_control
301 TYPE(ecoul_1center_type), DIMENSION(:), POINTER :: ecoul_1c
302 TYPE(local_rho_type), POINTER :: local_rho_set
303 TYPE(mp_para_env_type), POINTER :: para_env
304 TYPE(pw_env_type), POINTER :: pw_env
305 TYPE(pw_pool_type), POINTER :: auxbas_pw_pool
306 TYPE(pw_r3d_rs_type) :: xc_den
307 TYPE(pw_r3d_rs_type), ALLOCATABLE, DIMENSION(:) :: vtau, vxc
308 TYPE(pw_r3d_rs_type), POINTER :: v_hartree_rspace
309 TYPE(qs_dispersion_type), POINTER :: dispersion_env
310 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
311 TYPE(qs_ks_env_type), POINTER :: ks_env
312 TYPE(qs_rho_type), POINTER :: rho_struct
313 TYPE(rho_atom_type), DIMENSION(:), POINTER :: rho_atom_set
314 TYPE(section_vals_type), POINTER :: xc_fun_section, xc_section
315 TYPE(xc_rho_cflags_type) :: needs
316
317 CALL timeset(routinen, handle)
318
319 CALL get_qs_env(qs_env, ks_env=ks_env, dft_control=dft_control, pw_env=pw_env, atprop=atprop)
320
321 IF (atprop%energy) THEN
322
323 nspins = dft_control%nspins
324 xc_section => section_vals_get_subs_vals(qs_env%input, "DFT%XC")
325 xc_fun_section => section_vals_get_subs_vals(xc_section, "XC_FUNCTIONAL")
326 needs = xc_functionals_get_needs(xc_fun_section, (nspins == 2), .true.)
327 gapw = dft_control%qs_control%gapw
328 gapw_xc = dft_control%qs_control%gapw_xc
329
330 ! Nuclear charge correction
331 CALL get_qs_env(qs_env, v_hartree_rspace=v_hartree_rspace)
332 IF (gapw .OR. gapw_xc) THEN
333 CALL get_qs_env(qs_env=qs_env, local_rho_set=local_rho_set, &
334 rho_atom_set=rho_atom_set, ecoul_1c=ecoul_1c, &
335 natom=natom, para_env=para_env)
336 CALL zero_rho_atom_integrals(rho_atom_set)
337 CALL calculate_vxc_atom(qs_env, .false., exc1)
338 IF (gapw) THEN
339 CALL vh_1c_gg_integrals(qs_env, eh1, ecoul_1c, local_rho_set, para_env, tddft=.false.)
340 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set)
341 CALL integrate_vhg0_rspace(qs_env, v_hartree_rspace, para_env, calculate_forces=.false., &
342 local_rho_set=local_rho_set, atener=atprop%ateb)
343 END IF
344 END IF
345
346 CALL pw_env_get(pw_env, auxbas_pw_pool=auxbas_pw_pool)
347 CALL auxbas_pw_pool%create_pw(xc_den)
348 ALLOCATE (vxc(nspins))
349 DO ispin = 1, nspins
350 CALL auxbas_pw_pool%create_pw(vxc(ispin))
351 END DO
352 IF (needs%tau .OR. needs%tau_spin) THEN
353 ALLOCATE (vtau(nspins))
354 DO ispin = 1, nspins
355 CALL auxbas_pw_pool%create_pw(vtau(ispin))
356 END DO
357 END IF
358
359 IF (gapw_xc) THEN
360 CALL get_qs_env(qs_env, rho_xc=rho_struct, dispersion_env=dispersion_env)
361 ELSE
362 CALL get_qs_env(qs_env, rho=rho_struct, dispersion_env=dispersion_env)
363 END IF
364 IF (needs%tau .OR. needs%tau_spin) THEN
365 CALL qs_xc_density(ks_env, rho_struct, xc_section, dispersion_env=dispersion_env, &
366 xc_den=xc_den, vxc=vxc, vtau=vtau)
367 ELSE
368 CALL qs_xc_density(ks_env, rho_struct, xc_section, dispersion_env=dispersion_env, &
369 xc_den=xc_den, vxc=vxc)
370 END IF
371 CALL get_qs_env(qs_env, rho=rho_struct)
372 CALL qs_rho_get(rho_struct, rho_ao=rho_ao)
373 CALL get_qs_env(qs_env, natom=natom, matrix_s=matrix_s)
374 CALL atprop_array_init(atprop%atexc, natom)
375 ALLOCATE (xcmat(nspins))
376 DO ispin = 1, nspins
377 ALLOCATE (xcmat(ispin)%matrix)
378 CALL dbcsr_create(xcmat(ispin)%matrix, template=matrix_s(1)%matrix)
379 CALL dbcsr_copy(xcmat(ispin)%matrix, matrix_s(1)%matrix)
380 CALL dbcsr_set(xcmat(ispin)%matrix, 0.0_dp)
381 CALL pw_scale(vxc(ispin), -0.5_dp)
382 CALL pw_axpy(xc_den, vxc(ispin))
383 CALL pw_scale(vxc(ispin), vxc(ispin)%pw_grid%dvol)
384 CALL integrate_v_rspace(qs_env=qs_env, v_rspace=vxc(ispin), hmat=xcmat(ispin), &
385 calculate_forces=.false., gapw=(gapw .OR. gapw_xc))
386 IF (needs%tau .OR. needs%tau_spin) THEN
387 CALL pw_scale(vtau(ispin), -0.5_dp*vtau(ispin)%pw_grid%dvol)
388 CALL integrate_v_rspace(qs_env=qs_env, v_rspace=vtau(ispin), &
389 hmat=xcmat(ispin), calculate_forces=.false., &
390 gapw=(gapw .OR. gapw_xc), compute_tau=.true.)
391 END IF
392 END DO
393 IF (gapw .OR. gapw_xc) THEN
394 ! remove one-center potential matrix part
395 CALL qs_rho_get(rho_struct, rho_ao_kp=matrix_p)
396 CALL update_ks_atom(qs_env, xcmat, matrix_p, forces=.false., kscale=-0.5_dp)
397 CALL get_qs_env(qs_env=qs_env, rho_atom_set=rho_atom_set)
398 CALL atprop_array_init(atprop%ate1c, natom)
399 atprop%ate1c = 0.0_dp
400 DO iatom = 1, natom
401 atprop%ate1c(iatom) = atprop%ate1c(iatom) + &
402 rho_atom_set(iatom)%exc_h - rho_atom_set(iatom)%exc_s
403 END DO
404 IF (gapw) THEN
405 CALL get_qs_env(qs_env=qs_env, ecoul_1c=ecoul_1c)
406 DO iatom = 1, natom
407 atprop%ate1c(iatom) = atprop%ate1c(iatom) + &
408 ecoul_1c(iatom)%ecoul_1_h - ecoul_1c(iatom)%ecoul_1_s + &
409 ecoul_1c(iatom)%ecoul_1_z - ecoul_1c(iatom)%ecoul_1_0
410 END DO
411 END IF
412 END IF
413 DO ispin = 1, nspins
414 CALL atom_trace(xcmat(ispin)%matrix, rho_ao(ispin)%matrix, 1.0_dp, atprop%atexc)
415 CALL dbcsr_release(xcmat(ispin)%matrix)
416 DEALLOCATE (xcmat(ispin)%matrix)
417 END DO
418 DEALLOCATE (xcmat)
419
420 CALL auxbas_pw_pool%give_back_pw(xc_den)
421 DO ispin = 1, nspins
422 CALL auxbas_pw_pool%give_back_pw(vxc(ispin))
423 END DO
424 IF (needs%tau .OR. needs%tau_spin) THEN
425 DO ispin = 1, nspins
426 CALL auxbas_pw_pool%give_back_pw(vtau(ispin))
427 END DO
428 END IF
429
430 END IF
431
432 CALL timestop(handle)
433
434 END SUBROUTINE ks_xc_correction
435
436END 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, 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)
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:199
subroutine, public tddfpt(qs_env, calc_forces)
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
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)
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...