(git:e5b1968)
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-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!> 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)
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)) &
287 dft_control%qs_control%cdft_control%need_pot = .true.
288 IF (ASSOCIATED(dft_control%qs_control%cdft_control%group)) THEN
289 ! In case CDFT weight function was built beforehand (in mixed force_eval)
290 IF (ASSOCIATED(dft_control%qs_control%cdft_control%group(1)%weight)) &
291 dft_control%qs_control%cdft_control%need_pot = .false.
292 END IF
293 END IF
294
295 ! Calculate the overlap and the core Hamiltonian integral matrix
296 IF (dft_control%qs_control%semi_empirical) THEN
297 CALL build_se_core_matrix(qs_env=qs_env, para_env=para_env, &
298 calculate_forces=.false.)
299 CALL qs_env_update_s_mstruct(qs_env)
300 CALL se_core_core_interaction(qs_env, para_env, calculate_forces=.false.)
301 CALL get_qs_env(qs_env=qs_env, dispersion_env=dispersion_env, energy=energy)
302 CALL calculate_dispersion_pairpot(qs_env, dispersion_env, energy%dispersion, calc_forces)
303 ELSEIF (dft_control%qs_control%dftb) THEN
304 CALL build_dftb_matrices(qs_env=qs_env, para_env=para_env, &
305 calculate_forces=.false.)
306 CALL calculate_dftb_dispersion(qs_env=qs_env, para_env=para_env, &
307 calculate_forces=.false.)
308 CALL qs_env_update_s_mstruct(qs_env)
309 ELSEIF (dft_control%qs_control%xtb) THEN
310 IF (dft_control%qs_control%xtb_control%do_tblite) THEN
311 CALL build_tblite_matrices(qs_env=qs_env, calculate_forces=.false.)
312 ELSE
313 CALL build_xtb_matrices(qs_env=qs_env, calculate_forces=.false.)
314 END IF
315 CALL qs_env_update_s_mstruct(qs_env)
316 ELSE
317 CALL build_core_hamiltonian_matrix(qs_env=qs_env, calculate_forces=.false.)
318 CALL qs_env_update_s_mstruct(qs_env)
319 CALL calculate_ecore_self(qs_env)
320 CALL calculate_ecore_efield(qs_env, calculate_forces=.false.)
321 CALL calculate_ecore_overlap(qs_env, para_env, calculate_forces=.false.)
322 !swap external_e_potential before external_c_potential, to ensure
323 !that external potential on grid is loaded before calculating energy of cores
324 CALL external_e_potential(qs_env)
325 IF (.NOT. dft_control%qs_control%gapw) THEN
326 CALL external_c_potential(qs_env, calculate_forces=.false.)
327 END IF
328 ! LRIGPW/RIGPW matrices
329 IF (dft_control%qs_control%lrigpw) THEN
330 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
331 CALL build_lri_matrices(lri_env, qs_env)
332 ELSE IF (dft_control%qs_control%rigpw) THEN
333 CALL get_qs_env(qs_env=qs_env, lri_env=lri_env)
334 CALL build_ri_matrices(lri_env, qs_env, calculate_forces=.false.)
335 END IF
336
337 ! ZMP addition to read external density
338 CALL external_read_density(qs_env)
339
340 ! Add possible pair potential dispersion energy - Evaluate first so we can print
341 ! energy info at the end of the SCF
342 CALL get_qs_env(qs_env=qs_env, dispersion_env=dispersion_env, energy=energy)
343 CALL calculate_dispersion_pairpot(qs_env, dispersion_env, energy%dispersion, calc_forces)
344 ! Add possible pair potential gCP energy - Evaluate first so we can print
345 ! energy info at the end of the SCF
346 CALL get_qs_env(qs_env=qs_env, gcp_env=gcp_env, energy=energy)
347 IF (ASSOCIATED(gcp_env)) THEN
348 CALL calculate_gcp_pairpot(qs_env, gcp_env, energy%gcp, calc_forces)
349 END IF
350
351 END IF
352 ! Embedding potential
353 IF (dft_control%qs_control%dfet_embedded) THEN
354 dft_control%apply_embed_pot = .true.
355 CALL given_embed_pot(qs_env)
356 END IF
357 ! Matrix embedding potential
358 IF (dft_control%qs_control%dmfet_embedded) THEN
359 dft_control%apply_dmfet_pot = .true.
360 END IF
361
362 CALL timestop(handle)
363
364 END SUBROUTINE qs_energies_init_hamiltonians
365
366END 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, dft_control)
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)
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, 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, 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, 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_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, 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, 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, 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_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, 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, 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 ...