(git:ed6f26b)
Loading...
Searching...
No Matches
wannier_states.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 Routines for the calculation of wannier states
10!> \author Alin M Elena
11! **************************************************************************************************
18 USE cp_dbcsr_api, ONLY: dbcsr_type
23 USE cp_fm_types, ONLY: cp_fm_create,&
39 USE kinds, ONLY: default_string_length,&
40 dp
42 USE orbital_pointers, ONLY: indco,&
43 nco,&
44 nso
45 USE orbital_symbols, ONLY: cgf_symbol,&
54 USE qs_kind_types, ONLY: get_qs_kind,&
58!!!! this ones are needed to mapping
59#include "./base/base_uses.f90"
60
61 IMPLICIT NONE
62
63 PRIVATE
64
65! *** Global parameters ***
66
67 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'wannier_states'
68
69 LOGICAL, PARAMETER, PRIVATE :: debug_this_module = .true.
70
71! *** Public subroutines ***
72
74
75CONTAINS
76
77! **************************************************************************************************
78!> \brief constructs wannier states. mo_localized should not be overwritten!
79!> \param mo_localized ...
80!> \param Hks ...
81!> \param qs_env ...
82!> \param loc_print_section ...
83!> \param WannierCentres ...
84!> \param ns ...
85!> \param states ...
86!> \par History
87!> - Printout Wannier states in AO basis (11.09.2025, H. Elgabarty)
88! **************************************************************************************************
89 SUBROUTINE construct_wannier_states(mo_localized, &
90 Hks, qs_env, loc_print_section, WannierCentres, ns, states)
91
92 TYPE(cp_fm_type), INTENT(in) :: mo_localized
93 TYPE(dbcsr_type), POINTER :: hks
94 TYPE(qs_environment_type), POINTER :: qs_env
95 TYPE(section_vals_type), POINTER :: loc_print_section
96 TYPE(wannier_centres_type), INTENT(INOUT) :: wanniercentres
97 INTEGER, INTENT(IN) :: ns
98 INTEGER, INTENT(IN), POINTER :: states(:)
99
100 CHARACTER(len=*), PARAMETER :: routinen = 'construct_wannier_states'
101
102 CHARACTER(default_string_length) :: unit_str
103 CHARACTER(LEN=12) :: symbol
104 CHARACTER(LEN=12), DIMENSION(:), POINTER :: bcgf_symbol
105 CHARACTER(LEN=2) :: element_symbol
106 CHARACTER(LEN=40) :: fmtstr1, fmtstr2, fmtstr3
107 CHARACTER(LEN=6), DIMENSION(:), POINTER :: bsgf_symbol
108 INTEGER :: after, before, from, handle, i, iatom, icgf, ico, icol, ikind, iproc, irow, iset, &
109 isgf, ishell, iso, jcol, left, lmax, lshell, natom, ncgf, ncol, ncol_global, nrow_global, &
110 nset, nsgf, nstates(2), output_unit, right, to, unit_mat
111 INTEGER, DIMENSION(:), POINTER :: nshell
112 INTEGER, DIMENSION(:, :), POINTER :: l
113 LOGICAL :: print_cartesian
114 REAL(kind=dp) :: unit_conv
115 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :) :: cmatrix, smatrix
116 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
117 TYPE(cp_fm_struct_type), POINTER :: fm_struct_tmp
118 TYPE(cp_fm_type) :: b, c, d
119 TYPE(cp_logger_type), POINTER :: logger
120 TYPE(gto_basis_set_type), POINTER :: orb_basis_set
121 TYPE(mp_para_env_type), POINTER :: para_env
122 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
123 TYPE(qs_dftb_atom_type), POINTER :: dftb_parameter
124 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
125 TYPE(section_vals_type), POINTER :: print_key
126
127!-----------------------------------------------------------------------
128!-----------------------------------------------------------------------
129
130 CALL timeset(routinen, handle)
131 NULLIFY (logger, para_env)
132
133 CALL get_qs_env(qs_env, para_env=para_env, &
134 atomic_kind_set=atomic_kind_set, &
135 qs_kind_set=qs_kind_set, &
136 particle_set=particle_set)
137
138 logger => cp_get_default_logger()
139
140 output_unit = cp_logger_get_default_io_unit(logger)
141
142 CALL cp_fm_get_info(mo_localized, &
143 ncol_global=ncol_global, &
144 nrow_global=nrow_global)
145
146 nstates(1) = ns
147 nstates(2) = para_env%mepos
148 iproc = nstates(2)
149 NULLIFY (fm_struct_tmp, print_key)
150
151 print_key => section_vals_get_subs_vals(loc_print_section, "WANNIER_CENTERS")
152 CALL section_vals_val_get(print_key, "UNIT", c_val=unit_str)
153 unit_conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
154
155 print_key => section_vals_get_subs_vals(loc_print_section, "WANNIER_STATES")
156 CALL cp_fm_struct_create(fm_struct_tmp, nrow_global=nrow_global, &
157 ncol_global=1, &
158 para_env=mo_localized%matrix_struct%para_env, &
159 context=mo_localized%matrix_struct%context)
160
161 CALL cp_fm_create(b, fm_struct_tmp, name="b")
162 CALL cp_fm_create(c, fm_struct_tmp, name="c")
163
164 CALL cp_fm_struct_release(fm_struct_tmp)
165
166 CALL cp_fm_struct_create(fm_struct_tmp, nrow_global=1, ncol_global=1, &
167 para_env=mo_localized%matrix_struct%para_env, &
168 context=mo_localized%matrix_struct%context)
169
170 CALL cp_fm_create(d, fm_struct_tmp, name="d")
171 CALL cp_fm_struct_release(fm_struct_tmp)
172
173 wanniercentres%WannierHamDiag = 0.0_dp
174
175 unit_mat = cp_print_key_unit_nr(logger, loc_print_section, &
176 "WANNIER_STATES", extension=".whks", &
177 ignore_should_output=.false.)
178 IF (unit_mat > 0) THEN
179 WRITE (unit_mat, '(a16,1(i0,1x))') "Wannier states: ", ns
180 WRITE (unit_mat, '(a16)') "#No x y z energy "
181 END IF
182 DO i = 1, ns
183 CALL cp_fm_to_fm(mo_localized, b, 1, states(i), 1)
184 CALL cp_dbcsr_sm_fm_multiply(hks, b, c, 1)
185 CALL parallel_gemm('T', 'N', 1, 1, nrow_global, 1.0_dp, &
186 b, c, 0.0_dp, d)
187 CALL cp_fm_get_element(d, 1, 1, wanniercentres%WannierHamDiag(i))
188 ! if (iproc==para_env%mepos) WRITE(unit_mat,'(f16.8,2x)', advance='no')WannierCentres%WannierHamDiag(i)
189 IF (unit_mat > 0) WRITE (unit_mat, '(i0,1x,4(f16.8,2x))') states(i), &
190 wanniercentres%centres(1:3, states(i))*unit_conv, wanniercentres%WannierHamDiag(states(i))
191 END DO
192
193 IF (unit_mat > 0) WRITE (unit_mat, *)
194
195 IF (output_unit > 0) THEN
196 WRITE (output_unit, *) ""
197 WRITE (output_unit, *) "NUMBER OF Wannier STATES ", ns
198 WRITE (output_unit, *) "ENERGY original MO-index"
199 DO i = 1, ns
200 WRITE (output_unit, '(f16.8,2x,i0)') wanniercentres%WannierHamDiag(i), states(i)
201 END DO
202 END IF
203
204 CALL cp_fm_release(b)
205 CALL cp_fm_release(c)
206 CALL cp_fm_release(d)
207
208 ! Print the states in AO basis
209 CALL section_vals_val_get(print_key, "CARTESIAN", l_val=print_cartesian)
210
211 ALLOCATE (smatrix(nrow_global, ncol_global))
212 CALL cp_fm_get_submatrix(mo_localized, smatrix(1:nrow_global, 1:ncol_global))
213
214 IF (unit_mat > 0) THEN
215
216 NULLIFY (nshell)
217 NULLIFY (bsgf_symbol)
218 NULLIFY (l)
219 NULLIFY (bsgf_symbol)
220
221 CALL get_atomic_kind_set(atomic_kind_set, natom=natom)
222 CALL get_qs_kind_set(qs_kind_set, ncgf=ncgf, nsgf=nsgf)
223
224 ! Print header, define column widths and string templates
225 after = 6
226 before = 4
227 ncol = int(56/(before + after + 3))
228
229 fmtstr1 = "(T2,A,21X, ( X,I5, X))"
230 fmtstr2 = "(T2,A,9X, (1X,F . ))"
231 fmtstr3 = "(T2,A,I5,1X,I5,1X,A,1X,A6, (1X,F . ))"
232
233 right = max((after - 2), 1)
234 left = (before + after + 3) - right - 5
235
236 IF (print_cartesian) THEN
237 WRITE (unit=unit_mat, fmt="(T2,A,16X,A)") "WS|", "Wannier states in the cartesian AO basis"
238 ELSE
239 WRITE (unit=unit_mat, fmt="(T2,A,16X,A)") "WS|", "Wannier states in the spherical AO basis"
240 END IF
241 WRITE (unit=fmtstr1(11:12), fmt="(I2)") ncol
242 WRITE (unit=fmtstr1(14:15), fmt="(I2)") left
243 WRITE (unit=fmtstr1(21:22), fmt="(I2)") right
244
245 WRITE (unit=fmtstr2(10:11), fmt="(I2)") ncol
246 WRITE (unit=fmtstr2(17:18), fmt="(I2)") before + after + 2
247 WRITE (unit=fmtstr2(20:21), fmt="(I2)") after
248
249 WRITE (unit=fmtstr3(27:28), fmt="(I2)") ncol
250 WRITE (unit=fmtstr3(34:35), fmt="(I2)") before + after + 2
251 WRITE (unit=fmtstr3(37:38), fmt="(I2)") after
252
253 ! get MO coefficients in terms of contracted cartesian functions
254 IF (print_cartesian) THEN
255
256 ALLOCATE (cmatrix(ncgf, ncgf))
257 cmatrix = 0.0_dp
258
259 ! Transform spherical to Cartesian AO basis
260 icgf = 1
261 isgf = 1
262 DO iatom = 1, natom
263 NULLIFY (orb_basis_set, dftb_parameter)
264 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, kind_number=ikind)
265 CALL get_qs_kind(qs_kind_set(ikind), &
266 basis_set=orb_basis_set, &
267 dftb_parameter=dftb_parameter)
268 IF (ASSOCIATED(orb_basis_set)) THEN
269 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
270 nset=nset, &
271 nshell=nshell, &
272 l=l)
273 DO iset = 1, nset
274 DO ishell = 1, nshell(iset)
275 lshell = l(ishell, iset)
276 CALL dgemm("T", "N", nco(lshell), ncol_global, nso(lshell), 1.0_dp, &
277 orbtramat(lshell)%c2s, nso(lshell), &
278 smatrix(isgf, 1), nsgf, 0.0_dp, &
279 cmatrix(icgf, 1), ncgf)
280 icgf = icgf + nco(lshell)
281 isgf = isgf + nso(lshell)
282 END DO
283 END DO
284 ELSE IF (ASSOCIATED(dftb_parameter)) THEN
285 CALL get_dftb_atom_param(dftb_parameter, lmax=lmax)
286 DO ishell = 1, lmax + 1
287 lshell = ishell - 1
288 CALL dgemm("T", "N", nco(lshell), nsgf, nso(lshell), 1.0_dp, &
289 orbtramat(lshell)%c2s, nso(lshell), &
290 smatrix(isgf, 1), nsgf, 0.0_dp, &
291 cmatrix(icgf, 1), ncgf)
292 icgf = icgf + nco(lshell)
293 isgf = isgf + nso(lshell)
294 END DO
295 ELSE
296 ! assume atom without basis set
297 END IF
298 END DO ! iatom
299
300 END IF
301
302 ! Print to file
303 DO icol = 1, ncol_global, ncol
304
305 from = icol
306 to = min((from + ncol - 1), ncol_global)
307
308 WRITE (unit=unit_mat, fmt="(T2,A)") "WS|"
309 WRITE (unit=unit_mat, fmt=fmtstr1) "WS|", (jcol, jcol=from, to)
310 WRITE (unit=unit_mat, fmt=fmtstr2) "WS| Energies", &
311 (wanniercentres%WannierHamDiag(states(jcol)), jcol=from, to)
312 WRITE (unit=unit_mat, fmt="(T2,A)") "WS|"
313
314 irow = 1
315
316 DO iatom = 1, natom
317
318 IF (iatom /= 1) WRITE (unit=unit_mat, fmt="(T2,A)") "WS|"
319
320 NULLIFY (orb_basis_set, dftb_parameter)
321 CALL get_atomic_kind(particle_set(iatom)%atomic_kind, &
322 element_symbol=element_symbol, kind_number=ikind)
323 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, &
324 dftb_parameter=dftb_parameter)
325
326 IF (print_cartesian) THEN
327
328 NULLIFY (bcgf_symbol)
329 IF (ASSOCIATED(orb_basis_set)) THEN
330 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
331 nset=nset, &
332 nshell=nshell, &
333 l=l, &
334 cgf_symbol=bcgf_symbol)
335
336 icgf = 1
337 DO iset = 1, nset
338 DO ishell = 1, nshell(iset)
339 lshell = l(ishell, iset)
340 DO ico = 1, nco(lshell)
341 WRITE (unit=unit_mat, fmt=fmtstr3) &
342 "WS|", irow, iatom, adjustr(element_symbol), bcgf_symbol(icgf), &
343 (cmatrix(irow, jcol), jcol=from, to)
344 icgf = icgf + 1
345 irow = irow + 1
346 END DO
347 END DO
348 END DO
349 ELSE IF (ASSOCIATED(dftb_parameter)) THEN
350 CALL get_dftb_atom_param(dftb_parameter, lmax=lmax)
351 icgf = 1
352 DO ishell = 1, lmax + 1
353 lshell = ishell - 1
354 DO ico = 1, nco(lshell)
355 symbol = cgf_symbol(1, indco(1:3, icgf))
356 symbol(1:2) = " "
357 WRITE (unit=unit_mat, fmt=fmtstr3) &
358 "WS|", irow, iatom, adjustr(element_symbol), symbol, &
359 (cmatrix(irow, jcol), jcol=from, to)
360 icgf = icgf + 1
361 irow = irow + 1
362 END DO
363 END DO
364 ELSE
365 ! assume atom without basis set
366 END IF
367
368 ELSE !print in spherical AO basis
369
370 IF (ASSOCIATED(orb_basis_set)) THEN
371 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
372 nset=nset, &
373 nshell=nshell, &
374 l=l, &
375 sgf_symbol=bsgf_symbol)
376 isgf = 1
377 DO iset = 1, nset
378 DO ishell = 1, nshell(iset)
379 lshell = l(ishell, iset)
380 DO iso = 1, nso(lshell)
381 WRITE (unit=unit_mat, fmt=fmtstr3) &
382 "WS|", irow, iatom, adjustr(element_symbol), bsgf_symbol(isgf), &
383 (smatrix(irow, jcol), jcol=from, to)
384 isgf = isgf + 1
385 irow = irow + 1
386 END DO
387 END DO
388 END DO
389 ELSE IF (ASSOCIATED(dftb_parameter)) THEN
390 CALL get_dftb_atom_param(dftb_parameter, lmax=lmax)
391 isgf = 1
392 DO ishell = 1, lmax + 1
393 lshell = ishell - 1
394 DO iso = 1, nso(lshell)
395 symbol = sgf_symbol(1, lshell, -lshell + iso - 1)
396 symbol(1:2) = " "
397 WRITE (unit=unit_mat, fmt=fmtstr3) &
398 "WS|", irow, iatom, adjustr(element_symbol), symbol, &
399 (smatrix(irow, jcol), jcol=from, to)
400 isgf = isgf + 1
401 irow = irow + 1
402 END DO
403 END DO
404 ELSE
405 ! assume atom without basis set
406 END IF
407
408 END IF ! print cartesian
409
410 END DO ! iatom
411
412 END DO ! icol
413
414 WRITE (unit=unit_mat, fmt="(T2,A)") "WS|"
415
416 IF (print_cartesian) THEN
417 DEALLOCATE (cmatrix)
418 END IF
419
420 END IF ! output Wannier states in AO
421 DEALLOCATE (smatrix)
422
423 CALL cp_print_key_finished_output(unit_mat, logger, loc_print_section, &
424 "WANNIER_STATES")
425
426 CALL timestop(handle)
427 END SUBROUTINE construct_wannier_states
428
429END MODULE wannier_states
430
static void dgemm(const char transa, const char transb, const int m, const int n, const int k, const double alpha, const double *a, const int lda, const double *b, const int ldb, const double beta, double *c, const int ldc)
Convenient wrapper to hide Fortran nature of dgemm_, swapping a and b.
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.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_sm_fm_multiply(matrix, fm_in, fm_out, ncol, alpha, beta)
multiply a dbcsr with a fm 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_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
subroutine, public cp_fm_get_element(matrix, irow_global, icol_global, alpha, local)
returns an element of a fm this value is valid on every cpu using this call is expensive
subroutine, public cp_fm_get_submatrix(fm, target_m, start_row, start_col, n_rows, n_cols, transpose)
gets a submatrix of a full matrix op(target_m)(1:n_rows,1:n_cols) =fm(start_row:start_row+n_rows,...
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp)
creates a new full matrix with the given structure
various routines to log and control the output. The idea is that decisions about where to log should ...
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
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,...
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:1179
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_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
integer, parameter, public default_string_length
Definition kinds.F:57
Interface to the message passing library MPI.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public nco
integer, dimension(:, :), allocatable, public indco
integer, dimension(:), allocatable, public nso
orbital_symbols
character(len=12) function, public cgf_symbol(n, lxyz)
Build a Cartesian orbital symbol (orbital labels for printing).
character(len=6) function, public sgf_symbol(n, l, m)
Build a spherical orbital symbol (orbital labels for printing).
Calculation of the spherical harmonics and the corresponding orbital transformation matrices.
type(orbtramat_type), dimension(:), pointer, public orbtramat
basic linear algebra operations for full matrixes
Define the data structure for the particle information.
Definition of the DFTB parameter types.
Working with the DFTB parameter types.
subroutine, public get_dftb_atom_param(dftb_parameter, name, typ, defined, z, zeff, natorb, lmax, skself, occupation, eta, energy, cutoff, xi, di, rcdisp, dudq)
...
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.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public get_qs_kind_set(qs_kind_set, all_potential_present, tnadd_potential_present, gth_potential_present, sgp_potential_present, paw_atom_present, dft_plus_u_atom_present, maxcgf, maxsgf, maxco, maxco_proj, maxgtops, maxlgto, maxlprj, maxnset, maxsgf_set, ncgf, npgf, nset, nsgf, nshell, maxpol, maxlppl, maxlppnl, maxppnl, nelectron, maxder, max_ngrid_rad, max_sph_harm, maxg_iso_not0, lmax_rho0, basis_rcut, basis_type, total_zeff_corr, npgf_seg)
Get attributes of an atomic kind set.
defines the type needed for computing wannier states expectations
Routines for the calculation of wannier states.
subroutine, public construct_wannier_states(mo_localized, hks, qs_env, loc_print_section, wanniercentres, ns, states)
constructs wannier states. mo_localized should not be overwritten!
Provides all information about an atomic kind.
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
Provides all information about a quickstep kind.