(git:c28f603)
Loading...
Searching...
No Matches
iao_types.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 Calculate ntrinsic atomic orbitals and analyze wavefunctions
10!> \par History
11!> 03.2023 created [JGH]
12!> \author JGH
13! **************************************************************************************************
18 USE cell_types, ONLY: cell_type,&
19 pbc
21 USE cp_dbcsr_api, ONLY: dbcsr_get_info,&
28 USE cp_fm_types, ONLY: cp_fm_create,&
35 USE cp_output_handling, ONLY: cp_p_file,&
46 USE kinds, ONLY: dp
51#include "./base/base_uses.f90"
52
53 IMPLICIT NONE
54 PRIVATE
55
58
59! **************************************************************************************************
61 LOGICAL :: do_iao = .false.
62 !
63 REAL(kind=dp) :: eps_svd = 0.0_dp
64 REAL(kind=dp) :: eps_occ = 0.0_dp
65 ! chages
66 LOGICAL :: do_charges = .false.
67 ! one-center expansion
68 LOGICAL :: do_oce = .false.
69 INTEGER :: lmax_oce = 0
70 INTEGER :: nbas_oce = 0
71 LOGICAL :: append_oce = .false.
72 ! Bond orbitals
73 LOGICAL :: do_bondorbitals = .false.
74 ! Wannier centers
75 LOGICAL :: do_center = .false.
76 LOGICAL :: pos_periodic = .false.
77 INTEGER :: loc_operator = 0
78 INTEGER :: eloc_function = 0
79 REAL(kind=dp) :: eloc_weight = 0.0_dp
80 ! Molden
81 LOGICAL :: molden_iao = .false.
82 LOGICAL :: molden_ibo = .false.
83 ! CUBE files
84 LOGICAL :: cubes_iao = .false.
85 LOGICAL :: cubes_ibo = .false.
86 ! Input sections
87 TYPE(section_vals_type), POINTER :: iao_cubes_section => null(), &
88 iao_molden_section => null(), &
89 ibo_cubes_section => null(), &
90 ibo_molden_section => null(), &
91 ibo_cc_section => null()
92 ! Fragments
93 LOGICAL :: do_fragments = .false.
94 INTEGER :: nfrags = 0
95 END TYPE iao_env_type
96
97! **************************************************************************************************
98
99CONTAINS
100
101! **************************************************************************************************
102!> \brief ...
103!> \param iao_env ...
104! **************************************************************************************************
105 SUBROUTINE iao_set_default(iao_env)
106 TYPE(iao_env_type), INTENT(INOUT) :: iao_env
107
108 !iao
109 iao_env%do_iao = .false.
110 iao_env%eps_svd = 0.0_dp
111 iao_env%eps_occ = 0.0_dp
112 ! charges
113 iao_env%do_charges = .false.
114 ! one-center expansion
115 iao_env%do_oce = .false.
116 iao_env%lmax_oce = 3
117 iao_env%nbas_oce = 10
118 iao_env%append_oce = .false.
119 ! Bond orbitals
120 iao_env%do_bondorbitals = .false.
121 ! Wannier centers
122 iao_env%do_center = .false.
123 iao_env%pos_periodic = .false.
124 iao_env%loc_operator = do_iaoloc_pm2
125 iao_env%eloc_function = do_iaoloc_enone
126 iao_env%eloc_weight = 0.0_dp
127 ! i/o
128 iao_env%molden_iao = .false.
129 iao_env%molden_ibo = .false.
130 iao_env%cubes_iao = .false.
131 iao_env%cubes_ibo = .false.
132 ! Input sections
133 NULLIFY (iao_env%iao_cubes_section, iao_env%iao_molden_section)
134 NULLIFY (iao_env%ibo_cubes_section, iao_env%ibo_molden_section)
135 NULLIFY (iao_env%ibo_cc_section)
136
137 END SUBROUTINE iao_set_default
138
139! **************************************************************************************************
140
141! **************************************************************************************************
142!> \brief ...
143!> \param iao_env ...
144!> \param iao_section ...
145!> \param cell ...
146! **************************************************************************************************
147 SUBROUTINE iao_read_input(iao_env, iao_section, cell)
148 TYPE(iao_env_type), INTENT(INOUT) :: iao_env
149 TYPE(section_vals_type), POINTER :: iao_section
150 TYPE(cell_type), OPTIONAL :: cell
151
152 LOGICAL :: explicit, iao_explicit
153 TYPE(section_vals_type), POINTER :: subsection
154
155 CALL iao_set_default(iao_env)
156
157 CALL section_vals_get(iao_section, explicit=iao_explicit)
158 IF (iao_explicit) THEN
159 iao_env%do_iao = .true.
160 ! input options
161 CALL section_vals_val_get(iao_section, "EPS_SVD", r_val=iao_env%eps_svd)
162 CALL section_vals_val_get(iao_section, "EPS_OCC", r_val=iao_env%eps_occ)
163 CALL section_vals_val_get(iao_section, "ATOMIC_CHARGES", l_val=iao_env%do_charges)
164 iao_env%iao_molden_section => section_vals_get_subs_vals(iao_section, "IAO_MOLDEN")
165 CALL section_vals_get(iao_env%iao_molden_section, explicit=iao_env%molden_iao)
166 iao_env%iao_cubes_section => section_vals_get_subs_vals(iao_section, "IAO_CUBES")
167 CALL section_vals_get(iao_env%iao_cubes_section, explicit=iao_env%cubes_iao)
168 subsection => section_vals_get_subs_vals(iao_section, "ONE_CENTER_EXPANSION")
169 CALL section_vals_get(subsection, explicit=iao_env%do_oce)
170 IF (iao_env%do_oce) THEN
171 subsection => section_vals_get_subs_vals(iao_section, "ONE_CENTER_EXPANSION")
172 CALL section_vals_val_get(subsection, "LMAX", i_val=iao_env%lmax_oce)
173 CALL section_vals_val_get(subsection, "NBAS", i_val=iao_env%nbas_oce)
174 CALL section_vals_val_get(subsection, "APPEND", l_val=iao_env%append_oce)
175 END IF
176 subsection => section_vals_get_subs_vals(iao_section, "BOND_ORBITALS")
177 CALL section_vals_get(subsection, explicit=iao_env%do_bondorbitals)
178 IF (iao_env%do_bondorbitals) THEN
179 subsection => section_vals_get_subs_vals(iao_section, "BOND_ORBITALS")
180 CALL section_vals_val_get(subsection, "LOCALIZATION_OPERATOR", i_val=iao_env%loc_operator)
181 CALL section_vals_val_get(subsection, "ENERGY_LOCALIZATION_FUNCTION", i_val=iao_env%eloc_function)
182 CALL section_vals_val_get(subsection, "ENERGY_LOCALIZATION_WEIGHT", r_val=iao_env%eloc_weight)
183 iao_env%ibo_molden_section => section_vals_get_subs_vals(subsection, "IBO_MOLDEN")
184 CALL section_vals_get(iao_env%ibo_molden_section, explicit=iao_env%molden_ibo)
185 iao_env%ibo_cubes_section => section_vals_get_subs_vals(subsection, "IBO_CUBES")
186 CALL section_vals_get(iao_env%ibo_cubes_section, explicit=iao_env%cubes_ibo)
187 iao_env%ibo_cc_section => section_vals_get_subs_vals(subsection, "CHARGE_CENTER")
188 CALL section_vals_get(iao_env%ibo_cc_section, explicit=iao_env%do_center)
189 IF (iao_env%do_center) THEN
190 CALL section_vals_val_get(iao_env%ibo_cc_section, "POSITION_OPERATOR_BERRY", &
191 l_val=iao_env%pos_periodic, explicit=explicit)
192 IF (.NOT. explicit) THEN
193 ! set default according to cell periodicity
194 iao_env%pos_periodic = .true.
195 IF (PRESENT(cell)) THEN
196 IF (all(cell%perd == 0)) iao_env%pos_periodic = .false.
197 END IF
198 END IF
199 END IF
200 END IF
201 END IF
202
203 END SUBROUTINE iao_read_input
204! **************************************************************************************************
205!> \brief Prints fragmented overlap matrices for interface with ROSE
206!> \param qs_env ...
207!> \param orb_basis_set_list ...
208! **************************************************************************************************
209 SUBROUTINE organise_printout_for_rose(qs_env, orb_basis_set_list)
210 TYPE(qs_environment_type), POINTER :: qs_env
211 TYPE(gto_basis_set_p_type), DIMENSION(:), &
212 INTENT(IN), POINTER :: orb_basis_set_list
213
214 CHARACTER(len=*), PARAMETER :: routinen = 'organise_printout_for_rose'
215
216 INTEGER :: after, colskip, handle, iatom, ii, &
217 ikind, iounit, jj, ncol, nfrags, nrow, &
218 rowfrag, rowskip, totalcol, totalrow
219 INTEGER, ALLOCATABLE, DIMENSION(:) :: atom_of_kind, kind_of
220 LOGICAL :: lfirstcol, lfirstcoljj
221 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
222 TYPE(cp_blacs_env_type), POINTER :: blacs_env
223 TYPE(cp_fm_struct_type), POINTER :: fmstruct
224 TYPE(cp_fm_type) :: fm_sorb, fm_sorb_frags12, fm_sorb_frags22
225 TYPE(cp_logger_type), POINTER :: logger
226 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: matrix_s
227 TYPE(dbcsr_type), POINTER :: smat
228 TYPE(mp_para_env_type), POINTER :: para_env
229 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
230
231 CALL timeset(routinen, handle)
232
233 !get number of fragments
234 NULLIFY (particle_set, atomic_kind_set)
235 CALL get_qs_env(qs_env, particle_set=particle_set, atomic_kind_set=atomic_kind_set, &
236 matrix_s_kp=matrix_s)
237 CALL get_atomic_kind_set(atomic_kind_set=atomic_kind_set, atom_of_kind=atom_of_kind, kind_of=kind_of)
238 smat => matrix_s(1, 1)%matrix
239
240 nfrags = 0
241 DO ii = 1, SIZE(particle_set)
242 IF (nfrags < particle_set(ii)%fragment_index) &
243 nfrags = particle_set(ii)%fragment_index
244 END DO
245
246 logger => cp_get_default_logger()
247 IF (btest(cp_print_key_should_output(logger%iter_info, &
248 qs_env%input, "DFT%PRINT%IAO_ANALYSIS%IAO_OVERLAP"), cp_p_file)) THEN
249 iounit = cp_print_key_unit_nr(logger, qs_env%input, "DFT%PRINT%IAO_ANALYSIS%IAO_OVERLAP", &
250 extension=".Log", file_form="FORMATTED", file_action="WRITE", &
251 file_status="REPLACE")
252 CALL section_vals_val_get(qs_env%input, "DFT%PRINT%IAO_ANALYSIS%IAO_OVERLAP%NDIGITS", i_val=after)
253 after = min(max(after, 1), 16)
254
255 DO ii = 1, nfrags
256 DO jj = 1, nfrags
257 NULLIFY (para_env, blacs_env)
258 CALL get_qs_env(qs_env=qs_env, blacs_env=blacs_env, para_env=para_env)
259 totalcol = 0
260 totalrow = 0
261 rowfrag = 0
262 colskip = 0
263 rowskip = 0
264 lfirstcol = .true.
265 lfirstcoljj = .true.
266
267 DO iatom = 1, SIZE(particle_set)
268 ikind = kind_of(iatom)
269 IF (particle_set(iatom)%fragment_index == jj) THEN
270 totalcol = totalcol + orb_basis_set_list(ikind)%gto_basis_set%nsgf
271 lfirstcoljj = .false.
272 ELSEIF (lfirstcoljj) THEN
273 colskip = colskip + orb_basis_set_list(ikind)%gto_basis_set%nsgf
274 END IF
275 IF (particle_set(iatom)%fragment_index == ii) THEN
276 totalrow = totalrow + orb_basis_set_list(ikind)%gto_basis_set%nsgf
277 lfirstcol = .false.
278 ELSEIF (lfirstcol) THEN
279 rowskip = rowskip + orb_basis_set_list(ikind)%gto_basis_set%nsgf
280 END IF
281 rowfrag = rowfrag + orb_basis_set_list(ikind)%gto_basis_set%nsgf
282 END DO
283
284 CALL dbcsr_get_info(matrix_s(1, 1)%matrix, nfullrows_total=nrow, nfullcols_total=ncol)
285 CALL cp_fm_struct_create(fmstruct=fmstruct, para_env=para_env, context=blacs_env, &
286 nrow_global=nrow, ncol_global=ncol)
287 CALL cp_fm_create(matrix=fm_sorb, matrix_struct=fmstruct, name="Overlap matrix S_B1")
288 CALL cp_fm_struct_release(fmstruct=fmstruct)
289 CALL copy_dbcsr_to_fm(matrix_s(1, 1)%matrix, fm_sorb)
290
291 CALL cp_fm_struct_create(fmstruct=fmstruct, para_env=para_env, context=blacs_env, &
292 nrow_global=totalrow, ncol_global=totalcol)
293 CALL cp_fm_create(matrix=fm_sorb_frags22, matrix_struct=fmstruct, name="Overlap matrix S_B1^kk' (S22)")
294 CALL cp_fm_struct_release(fmstruct=fmstruct)
295 CALL cp_fm_to_fm_submat(fm_sorb, fm_sorb_frags22, &
296 totalrow, totalcol, 1 + rowskip, 1 + colskip, 1, 1)
297
298 CALL cp_fm_struct_create(fmstruct=fmstruct, para_env=para_env, context=blacs_env, &
299 nrow_global=rowfrag, ncol_global=totalcol)
300 CALL cp_fm_create(matrix=fm_sorb_frags12, matrix_struct=fmstruct, name="Overlap matrix S_B1^k' (S12)")
301 CALL cp_fm_struct_release(fmstruct=fmstruct)
302 CALL cp_fm_to_fm_submat(fm_sorb, fm_sorb_frags12, rowfrag, totalcol, 1, 1 + colskip, 1, 1)
303
304 IF (iounit > 0) WRITE (iounit, *) "FRAGMENTS kk' NR. ", ii, jj
305 CALL cp_fm_write_formatted(fm_sorb_frags22, iounit, "Overlap matrix S_B1^kk' (S22)")
306 IF (ii /= jj) THEN
307 IF (iounit > 0) WRITE (iounit, *) "FRAGMENTS kk' NR. ", ii, jj
308 CALL cp_fm_write_formatted(fm_sorb_frags12, iounit, "Overlap matrix S_B1^k' (S12)")
309 END IF
310
311 CALL cp_fm_release(fm_sorb)
312 CALL cp_fm_release(fm_sorb_frags22)
313 CALL cp_fm_release(fm_sorb_frags12)
314
315 END DO
316 END DO
317
318 CALL cp_print_key_finished_output(iounit, logger, qs_env%input, "DFT%PRINT%IAO_ANALYSIS%IAO_OVERLAP")
319 END IF
320
321 CALL timestop(handle)
322
323 END SUBROUTINE organise_printout_for_rose
324! **************************************************************************************************
325!> \brief Associates IBO centers to fragments
326!> \param qs_env ...
327!> \param moments ...
328!> \param unit_nr ...
329! **************************************************************************************************
330 SUBROUTINE print_fragment_association(qs_env, moments, unit_nr)
331 TYPE(qs_environment_type), POINTER :: qs_env
332 REAL(kind=dp), DIMENSION(:, :, :), INTENT(IN) :: moments
333 INTEGER, INTENT(IN), OPTIONAL :: unit_nr
334
335 CHARACTER(len=*), PARAMETER :: routinen = 'print_fragment_association'
336
337 INTEGER :: handle, iatom, is, ispin, jcenter, &
338 natom, ncenters, nspin
339 INTEGER, ALLOCATABLE, DIMENSION(:, :) :: atomcenter
340 REAL(kind=dp) :: conv, dab, mindab
341 REAL(kind=dp), DIMENSION(3) :: rab
342 TYPE(cell_type), POINTER :: cell
343 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
344
345 CALL timeset(routinen, handle)
346
347 NULLIFY (cell, particle_set)
348 CALL get_qs_env(qs_env=qs_env, cell=cell, particle_set=particle_set, natom=natom)
349 conv = cp_unit_from_cp2k(1.0_dp, trim("angstrom"))
350 nspin = SIZE(moments, 3)
351 ncenters = SIZE(moments, 2)
352 ALLOCATE (atomcenter(ncenters, nspin))
353 atomcenter = 0
354 DO ispin = 1, nspin
355 DO jcenter = 1, SIZE(moments, 2)
356 mindab = 10.0_dp
357 DO iatom = 1, natom
358 rab(:) = pbc(particle_set(iatom)%r(:), moments(:, jcenter, ispin), cell)
359 dab = sqrt(rab(1)*rab(1) + rab(2)*rab(2) + rab(3)*rab(3))
360 IF (dab <= mindab) THEN
361 mindab = dab
362 atomcenter(jcenter, ispin) = iatom
363 END IF
364 END DO
365 END DO
366
367 IF (unit_nr > 0) THEN
368 WRITE (unit_nr, "(/,T2,A,i1)") "Intrinsic Bond Orbitals: Centers associated to fragments for Spin ", &
369 ispin
370 WRITE (unit_nr, "(T2,A6,T30,A6,T60,A4,T70,A8)") "Center", "Moment", "Atom", "Fragment"
371 DO is = 1, ncenters
372 WRITE (unit_nr, "(i7,3F15.8,4X,I7,4X,I7)") is, moments(1:3, is, ispin), atomcenter(is, ispin), &
373 particle_set(atomcenter(is, ispin))%fragment_index
374 END DO
375 WRITE (unit_nr, "(/)")
376 END IF
377 END DO
378
379 CALL timestop(handle)
380
381 END SUBROUTINE print_fragment_association
382
383END MODULE iao_types
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
Handles all functions related to the CELL.
Definition cell_types.F:15
methods related to the blacs parallel environment
subroutine, public dbcsr_get_info(matrix, nblkrows_total, nblkcols_total, nfullrows_total, nfullcols_total, nblkrows_local, nblkcols_local, nfullrows_local, nfullcols_local, my_prow, my_pcol, local_rows, local_cols, proc_row_dist, proc_col_dist, row_blk_size, col_blk_size, row_blk_offset, col_blk_offset, distribution, name, matrix_type, group)
...
DBCSR operations in CP2K.
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS matrix.
represent the structure of a full matrix
subroutine, public cp_fm_struct_create(fmstruct, para_env, context, nrow_global, ncol_global, nrow_block, ncol_block, descriptor, first_p_pos, local_leading_dimension, template_fmstruct, square_blocks, force_block)
allocates and initializes a full matrix structure
subroutine, public cp_fm_struct_release(fmstruct)
releases a full matrix structure
represent a full matrix distributed on many processors
Definition cp_fm_types.F:15
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp, nrow, ncol, set_zero)
creates a new full matrix with the given structure
subroutine, public cp_fm_to_fm_submat(msource, mtarget, nrow, ncol, s_firstrow, s_firstcol, t_firstrow, t_firstcol)
copy just a part ot the matrix
subroutine, public cp_fm_write_formatted(fm, unit, header, value_format)
Write out a full matrix in plain text.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
unit conversion facility
Definition cp_units.F:30
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
Definition cp_units.F:1239
Calculate ntrinsic atomic orbitals and analyze wavefunctions.
Definition iao_types.F:14
subroutine, public iao_read_input(iao_env, iao_section, cell)
...
Definition iao_types.F:148
subroutine, public iao_set_default(iao_env)
...
Definition iao_types.F:106
subroutine, public organise_printout_for_rose(qs_env, orb_basis_set_list)
Prints fragmented overlap matrices for interface with ROSE.
Definition iao_types.F:210
subroutine, public print_fragment_association(qs_env, moments, unit_nr)
Associates IBO centers to fragments.
Definition iao_types.F:331
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_iaoloc_enone
integer, parameter, public do_iaoloc_pm2
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
subroutine, public section_vals_val_get(section_vals, keyword_name, i_rep_section, i_rep_val, n_rep_val, val, l_val, i_val, r_val, c_val, l_vals, i_vals, r_vals, c_vals, explicit)
returns the requested value
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Interface to the message passing library MPI.
Define the data structure for the particle information.
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, 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.
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
Definition cell_types.F:60
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
keeps the information about the structure of a full matrix
represent a full matrix
type of a logger, at the moment it contains just a print level starting at which level it should be l...
stores all the informations relevant to an mpi environment