(git:8917686)
Loading...
Searching...
No Matches
qs_energy_init.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 Utility subroutine for qs energy calculation
10!> \par History
11!> 11.2016 split out from qs_energy_utils
12!> \author MK (29.10.2002)
13! **************************************************************************************************
16 USE cp_dbcsr_api, ONLY: dbcsr_copy,&
18 dbcsr_set,&
30 USE kinds, ONLY: dp
32 USE kpoint_types, ONLY: kpoint_type,&
55 USE qs_gcp_types, ONLY: qs_gcp_type
57 USE qs_ks_types, ONLY: get_ks_env,&
68#include "./base/base_uses.f90"
69
70 IMPLICIT NONE
71
72 PRIVATE
73
74! *** Global parameters ***
75
76 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_energy_init'
77
78 PUBLIC :: qs_energies_init
79
80CONTAINS
81
82! **************************************************************************************************
83!> \brief Refactoring of qs_energies_scf. Driver routine for the initial
84!> setup and calculations for a qs energy calculation
85!> \param qs_env ...
86!> \param calc_forces ...
87!> \par History
88!> 05.2013 created [Florian Schiffmann]
89! **************************************************************************************************
90
91 SUBROUTINE qs_energies_init(qs_env, calc_forces)
92 TYPE(qs_environment_type), POINTER :: qs_env
93 LOGICAL, INTENT(IN) :: calc_forces
94
95 INTEGER :: img, ispin, nimg, nspin
96 LOGICAL :: has_unit_metric, ks_is_complex, &
97 molecule_only
98 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: matrix_s, matrix_w
99 TYPE(dbcsr_type), POINTER :: matrix
100 TYPE(dft_control_type), POINTER :: dft_control
101 TYPE(qs_ks_env_type), POINTER :: ks_env
102
103 NULLIFY (ks_env, matrix_w, matrix_s, dft_control)
104
105 CALL get_qs_env(qs_env, dft_control=dft_control, ks_env=ks_env)
106 IF (dft_control%qs_control%do_kg) THEN
107 molecule_only = .true.
108 CALL qs_energies_init_kg(qs_env)
109 ELSE
110 molecule_only = .false.
111 END IF
112 CALL qs_energies_init_hamiltonians(qs_env, calc_forces, molecule_only)
113 CALL get_ks_env(ks_env, complex_ks=ks_is_complex)
114 CALL qs_ks_allocate_basics(qs_env, is_complex=ks_is_complex)
115
116 ! if need forces allocate energy weighted density matrices
117 CALL get_qs_env(qs_env, has_unit_metric=has_unit_metric)
118 IF (calc_forces .AND. .NOT. has_unit_metric) THEN
119 CALL get_qs_env(qs_env, &
120 ks_env=ks_env, &
121 matrix_s_kp=matrix_s)
122 nspin = dft_control%nspins
123 nimg = dft_control%nimages
124 matrix => matrix_s(1, 1)%matrix
125 CALL dbcsr_allocate_matrix_set(matrix_w, nspin, nimg)
126 DO ispin = 1, nspin
127 DO img = 1, nimg
128 ALLOCATE (matrix_w(ispin, img)%matrix)
129 CALL dbcsr_copy(matrix_w(ispin, img)%matrix, matrix, name="W MATRIX")
130 CALL dbcsr_set(matrix_w(ispin, img)%matrix, 0.0_dp)
131 END DO
132 END DO
133 CALL set_ks_env(ks_env, matrix_w_kp=matrix_w)
134 END IF
135
136 END SUBROUTINE qs_energies_init
137
138! **************************************************************************************************
139!> \brief Refactoring of qs_energies_scf. Puts initialization of the Kim-Gordon
140!> settings into separate subroutine
141!> \param qs_env ...
142!> \par History
143!> 05.2013 created [Florian Schiffmann]
144! **************************************************************************************************
145
146 SUBROUTINE qs_energies_init_kg(qs_env)
147 TYPE(qs_environment_type), POINTER :: qs_env
148
149 CHARACTER(len=*), PARAMETER :: routinen = 'qs_energies_init_kg'
150
151 INTEGER :: handle, isubset, natom
152 TYPE(dft_control_type), POINTER :: dft_control
153 TYPE(kg_environment_type), POINTER :: kg_env
154 TYPE(molecule_type), DIMENSION(:), POINTER :: molecule_set
155 TYPE(mp_para_env_type), POINTER :: para_env
156 TYPE(neighbor_list_set_p_type), DIMENSION(:), &
157 POINTER :: soo_list, soo_list1
158
159 CALL timeset(routinen, handle)
160
161 CALL get_qs_env(qs_env, dft_control=dft_control, para_env=para_env)
162 cpassert(dft_control%qs_control%do_kg)
163
164 kg_env => qs_env%kg_env
165
166 ! get the set of molecules
167 CALL get_qs_env(qs_env=qs_env, molecule_set=molecule_set, natom=natom)
168 kg_env%natom = natom
169 ! store set of molecules in kg_env
170 kg_env%molecule_set => molecule_set
171 ! build the (new) full neighborlist
172 CALL kg_build_neighborlist(qs_env, sab_orb=kg_env%sab_orb_full)
173
174 IF (.NOT. ALLOCATED(kg_env%atom_to_molecule)) THEN
175 ALLOCATE (kg_env%atom_to_molecule(natom))
176 ! get the mapping from atoms to molecules
177 CALL molecule_of_atom(molecule_set, atom_to_mol=kg_env%atom_to_molecule)
178 END IF
179
180 SELECT CASE (kg_env%tnadd_method)
181 CASE (kg_tnadd_embed)
182 ! allocate the subset list
183 IF (.NOT. ASSOCIATED(kg_env%subset_of_mol)) THEN
184 ALLOCATE (kg_env%subset_of_mol(SIZE(molecule_set)))
185 END IF
186 !
187 CALL kg_build_subsets(kg_env, para_env)
188 !
189 DO isubset = 1, kg_env%nsubsets
190 ! build the (new) molecular neighborlist of the current subset
191 CALL kg_build_neighborlist(qs_env, sab_orb=kg_env%subset(isubset)%sab_orb, molecular=.true., &
192 subset_of_mol=kg_env%subset_of_mol, current_subset=isubset)
193 END DO
194 CASE (kg_tnadd_embed_ri)
195 ! should be deleted as soon as atomic grids work
196 ! allocate the subset list
197 IF (.NOT. ASSOCIATED(kg_env%subset_of_mol)) THEN
198 ALLOCATE (kg_env%subset_of_mol(SIZE(molecule_set)))
199 END IF
200 !
201 CALL kg_build_subsets(kg_env, para_env)
202 !
203 DO isubset = 1, kg_env%nsubsets
204 ! build the (new) molecular neighborlist of the current subset
205 CALL kg_build_neighborlist(qs_env, sab_orb=kg_env%subset(isubset)%sab_orb, molecular=.true., &
206 subset_of_mol=kg_env%subset_of_mol, current_subset=isubset)
207 END DO
208 !
209 ! LRI neighborlist
210 NULLIFY (soo_list)
211 CALL kg_build_neighborlist(qs_env, sab_orb=soo_list, molecular=.true.)
212 kg_env%lri_env%soo_list => soo_list
213 CALL calculate_lri_integrals(kg_env%lri_env, qs_env)
214 IF (qs_env%energy_correction) THEN
215 NULLIFY (soo_list1)
216 CALL kg_build_neighborlist(qs_env, sab_orb=soo_list1, molecular=.true.)
217 kg_env%lri_env1%soo_list => soo_list1
218 CALL calculate_lri_integrals(kg_env%lri_env1, qs_env)
219 END IF
220
221 ! Atomic grids
222 CASE (kg_tnadd_atomic)
223 ! build the A-C list for the nonadditive kinetic energy potential
224 CALL kg_build_neighborlist(qs_env, sac_kin=kg_env%sac_kin)
225 CASE (kg_tnadd_none)
226 ! nothing to do
227 CASE DEFAULT
228 cpabort("KG:TNADD METHOD")
229 END SELECT
230
231 CALL timestop(handle)
232
233 END SUBROUTINE qs_energies_init_kg
234
235! **************************************************************************************************
236!> \brief Refactoring of qs_energies_scf. Moves computation of the different
237!> core hamiltonians into separate subroutine
238!> \param qs_env QS environment
239!> \param calc_forces Calculate forces
240!> \param molecule_only restrict neighbor list to molecules
241!> \par History
242!> 05.2013 created [Florian Schiffmann]
243!> 08.2014 Kpoints [JGH]
244! **************************************************************************************************
245
246 SUBROUTINE qs_energies_init_hamiltonians(qs_env, calc_forces, molecule_only)
247 TYPE(qs_environment_type), POINTER :: qs_env
248 LOGICAL, INTENT(IN) :: calc_forces
249 LOGICAL :: molecule_only
250
251 CHARACTER(len=*), PARAMETER :: routinen = 'qs_energies_init_hamiltonians'
252
253 INTEGER :: handle
254 LOGICAL :: do_kpoints
255 TYPE(dft_control_type), POINTER :: dft_control
256 TYPE(kpoint_type), POINTER :: kpoints
257 TYPE(lri_environment_type), POINTER :: lri_env
258 TYPE(mp_para_env_type), POINTER :: para_env
259 TYPE(neighbor_list_set_p_type), DIMENSION(:), &
260 POINTER :: sab_nl, sab_nl_nosym
261 TYPE(qs_dispersion_type), POINTER :: dispersion_env
262 TYPE(qs_energy_type), POINTER :: energy
263 TYPE(qs_gcp_type), POINTER :: gcp_env
264 TYPE(section_vals_type), POINTER :: input
265
266 CALL timeset(routinen, handle)
267
268 CALL get_qs_env(qs_env, &
269 input=input, &
270 dft_control=dft_control, &
271 para_env=para_env, &
272 kpoints=kpoints, &
273 do_kpoints=do_kpoints)
274
275 ! create neighbor lists for standard use in QS
276 CALL build_qs_neighbor_lists(qs_env, para_env, molecular=molecule_only, &
277 force_env_section=input)
278
279 ! calculate cell index for k-point calculations
280 IF (do_kpoints) THEN
281 CALL get_qs_env(qs_env, sab_kp=sab_nl, sab_kp_nosym=sab_nl_nosym)
282 CALL kpoint_init_cell_index(kpoints, sab_nl, para_env, dft_control%nimages)
283 CALL set_kpoint_info(kpoints, sab_nl_nosym=sab_nl_nosym)
284 END IF
285 IF (dft_control%qs_control%cdft) THEN
286 IF (.NOT. (dft_control%qs_control%cdft_control%external_control)) THEN
287 dft_control%qs_control%cdft_control%need_pot = .true.
288 END IF
289 IF (ASSOCIATED(dft_control%qs_control%cdft_control%group)) THEN
290 ! In case CDFT weight function was built beforehand (in mixed force_eval)
291 IF (ASSOCIATED(dft_control%qs_control%cdft_control%group(1)%weight)) THEN
292 dft_control%qs_control%cdft_control%need_pot = .false.
293 END IF
294 END IF
295 END IF
296
297 ! Calculate the overlap and the core Hamiltonian integral matrix
298 IF (dft_control%qs_control%semi_empirical) THEN
299 CALL build_se_core_matrix(qs_env=qs_env, para_env=para_env, &
300 calculate_forces=.false.)
301 CALL qs_env_update_s_mstruct(qs_env)
302 CALL se_core_core_interaction(qs_env, para_env, calculate_forces=.false.)
303 CALL get_qs_env(qs_env=qs_env, dispersion_env=dispersion_env, energy=energy)
304 CALL calculate_dispersion_pairpot(qs_env, dispersion_env, energy%dispersion, calc_forces)
305 ELSE IF (dft_control%qs_control%dftb) THEN
306 CALL build_dftb_matrices(qs_env=qs_env, para_env=para_env, &
307 calculate_forces=.false.)
308 CALL calculate_dftb_dispersion(qs_env=qs_env, para_env=para_env, &
309 calculate_forces=.false.)
310 CALL qs_env_update_s_mstruct(qs_env)
311 ELSE IF (dft_control%qs_control%xtb) THEN
312 IF (dft_control%qs_control%xtb_control%do_tblite) THEN
313 CALL build_tblite_matrices(qs_env=qs_env, calculate_forces=.false.)
314 ELSE
315 CALL build_xtb_matrices(qs_env=qs_env, calculate_forces=.false.)
316 END IF
317 CALL qs_env_update_s_mstruct(qs_env)
318 ELSE
319 CALL build_core_hamiltonian_matrix(qs_env=qs_env, calculate_forces=.false.)
320 CALL qs_env_update_s_mstruct(qs_env)
321 CALL calculate_ecore_self(qs_env)
322 CALL calculate_ecore_efield(qs_env, calculate_forces=.false.)
323 CALL calculate_ecore_overlap(qs_env, para_env, calculate_forces=.false.)
324 !swap external_e_potential before external_c_potential, to ensure
325 !that external potential on grid is loaded before calculating energy of cores
326 CALL external_e_potential(qs_env)
327 IF (.NOT. dft_control%qs_control%gapw) THEN
328 CALL external_c_potential(qs_env, calculate_forces=.false.)
329 END IF
330 ! LRIGPW/RIGPW matrices
331 IF (dft_control%qs_control%lrigpw) THEN
332 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
333 CALL build_lri_matrices(lri_env, qs_env)
334 ELSE IF (dft_control%qs_control%rigpw) THEN
335 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
336 CALL build_ri_matrices(lri_env, qs_env, calculate_forces=.false.)
337 END IF
338
339 ! ZMP addition to read external density
340 CALL external_read_density(qs_env)
341
342 ! Add possible pair potential dispersion energy - Evaluate first so we can print
343 ! energy info at the end of the SCF
344 CALL get_qs_env(qs_env=qs_env, dispersion_env=dispersion_env, energy=energy)
345 CALL calculate_dispersion_pairpot(qs_env, dispersion_env, energy%dispersion, calc_forces)
346 ! Add possible pair potential gCP energy - Evaluate first so we can print
347 ! energy info at the end of the SCF
348 CALL get_qs_env(qs_env=qs_env, gcp_env=gcp_env, energy=energy)
349 IF (ASSOCIATED(gcp_env)) THEN
350 CALL calculate_gcp_pairpot(qs_env, gcp_env, energy%gcp, calc_forces)
351 END IF
352
353 END IF
354 ! Embedding potential
355 IF (dft_control%qs_control%dfet_embedded) THEN
356 dft_control%apply_embed_pot = .true.
357 CALL given_embed_pot(qs_env)
358 END IF
359 ! Matrix embedding potential
360 IF (dft_control%qs_control%dmfet_embedded) THEN
361 dft_control%apply_dmfet_pot = .true.
362 END IF
363
364 CALL timestop(handle)
365
366 END SUBROUTINE qs_energies_init_hamiltonians
367
368END MODULE qs_energy_init
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)
...
DBCSR operations in CP2K.
all routins needed for a nonperiodic electric field
subroutine, public calculate_ecore_efield(qs_env, calculate_forces)
Computes the force and the energy due to a efield on the cores Note: In the velocity gauge,...
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public kg_tnadd_none
integer, parameter, public kg_tnadd_embed_ri
integer, parameter, public kg_tnadd_embed
integer, parameter, public kg_tnadd_atomic
objects that represent the structure of input sections and the data contained in an input section
Types needed for a Kim-Gordon-like partitioning into molecular subunits.
Routines for a Kim-Gordon-like partitioning into molecular subunits.
subroutine, public kg_build_neighborlist(qs_env, sab_orb, sac_kin, molecular, subset_of_mol, current_subset)
builds either the full neighborlist or neighborlists of molecular
subroutine, public kg_build_subsets(kg_env, para_env)
...
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Routines needed for kpoint calculation.
subroutine, public kpoint_init_cell_index(kpoint, sab_nl, para_env, nimages)
Generates the mapping of cell indices and linear RS index CELL (0,0,0) is always mapped to index 1.
Types and basic routines needed for a kpoint calculation.
subroutine, public set_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym, inversion_symmetry_only, symmetry_backend, symmetry_reduction_method, gamma_centered)
Set information in a kpoint environment.
Calculates integral matrices for LRIGPW method lri : local resolution of the identity.
subroutine, public calculate_lri_integrals(lri_env, qs_env)
calculates integrals needed for the LRI density fitting, integrals are calculated once,...
subroutine, public build_lri_matrices(lri_env, qs_env)
creates and initializes an lri_env
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
Interface to the message passing library MPI.
Define the data structure for the molecule information.
subroutine, public molecule_of_atom(molecule_set, atom_to_mol)
finds for each atom the molecule it belongs to
subroutine, public given_embed_pot(qs_env)
Read the external embedding potential, not to be optimized.
Calculation of the energies concerning the core charge distribution.
subroutine, public calculate_ecore_overlap(qs_env, para_env, calculate_forces, molecular, e_overlap_core, atecc)
Calculate the overlap energy of the core charge distribution.
subroutine, public calculate_ecore_self(qs_env, e_self_core, atecc)
Calculate the self energy of the core charge distribution.
Calculation of the core Hamiltonian integral matrix <a|H|b> over Cartesian Gaussian-type functions.
subroutine, public build_core_hamiltonian_matrix(qs_env, calculate_forces)
Cosntruction of the QS Core Hamiltonian Matrix.
Calculation of dispersion in DFTB.
subroutine, public calculate_dftb_dispersion(qs_env, para_env, calculate_forces)
...
Calculation of Overlap and Hamiltonian matrices in DFTB.
subroutine, public build_dftb_matrices(qs_env, para_env, calculate_forces)
...
Calculation of dispersion using pair potentials.
subroutine, public calculate_dispersion_pairpot(qs_env, dispersion_env, energy, calculate_forces, atevdw)
...
Definition of disperson types for DFT calculations.
Utility subroutine for qs energy calculation.
subroutine, public qs_energies_init(qs_env, calc_forces)
Refactoring of qs_energies_scf. Driver routine for the initial setup and calculations for a qs energy...
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.
Routines to handle an external density The external density can be generic and is provided by user in...
subroutine, public external_read_density(qs_env)
Computes the external density on the grid.
Routines to handle an external electrostatic field The external field can be generic and is provided ...
subroutine, public external_c_potential(qs_env, calculate_forces)
Computes the force and the energy due to the external potential on the cores.
subroutine, public external_e_potential(qs_env)
Computes the external potential on the grid.
Calculation of gCP pair potentials.
subroutine, public calculate_gcp_pairpot(qs_env, gcp_env, energy, calculate_forces, ategcp)
...
Definition of gCP types for DFT calculations.
routines that build the Kohn-Sham matrix (i.e calculate the coulomb and xc parts
subroutine, public qs_ks_allocate_basics(qs_env, is_complex)
Allocate ks_matrix if necessary, take current overlap matrix as template.
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
Define the neighbor list data types and the corresponding functionality.
Generate the atomic neighbor lists.
subroutine, public build_qs_neighbor_lists(qs_env, para_env, molecular, force_env_section)
Build all the required neighbor lists for Quickstep.
qs_environment methods that use many other modules
subroutine, public qs_env_update_s_mstruct(qs_env)
updates the s_mstruct to reflect the new overlap structure, and also updates rho_core distribution....
Calculates integral matrices for RIGPW method.
subroutine, public build_ri_matrices(lri_env, qs_env, calculate_forces)
creates and initializes an lri_env
Split and build its own idependent core_core SE interaction module.
subroutine, public se_core_core_interaction(qs_env, para_env, calculate_forces)
Evaluates the core-core interactions for NDDO methods.
Calculation of the Hamiltonian integral matrix <a|H|b> for semi-empirical methods.
subroutine, public build_se_core_matrix(qs_env, para_env, calculate_forces)
...
interface to tblite
subroutine, public build_tblite_matrices(qs_env, calculate_forces)
...
Calculation of Overlap and Hamiltonian matrices in xTB Reference: Stefan Grimme, Christoph Bannwarth,...
subroutine, public build_xtb_matrices(qs_env, calculate_forces)
...
Contains all the info needed for KG runs...
Contains information about kpoints.
stores all the informations relevant to an mpi environment
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...