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