(git:374b731)
Loading...
Searching...
No Matches
post_scf_bandstructure_types.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
10!> \author Jan Wilhelm
11!> \date 07.2023
12! **************************************************************************************************
15 USE cp_cfm_types, ONLY: cp_cfm_release,&
18 USE cp_fm_types, ONLY: cp_fm_release,&
20 USE dbcsr_api, ONLY: dbcsr_p_type,&
21 dbcsr_release
22 USE dbt_api, ONLY: dbt_destroy,&
23 dbt_type
24 USE kinds, ONLY: default_string_length,&
25 dp,&
26 int_8
27 USE kpoint_types, ONLY: kpoint_release,&
33#include "./base/base_uses.f90"
34
35 IMPLICIT NONE
36
37 PRIVATE
38
39 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'post_scf_bandstructure_types'
40
42
43 ! valence band maximum (VBM), conduction band minimum (CBM), direct band gap (DBG),
44 ! indirect band gap (IDBG)
46 REAL(kind=dp) :: vbm = -1.0_dp, &
47 cbm = -1.0_dp, &
48 dbg = -1.0_dp, &
49 idbg = -1.0_dp
50 END TYPE band_edges_type
51
53
54 ! decide which calculations will be done
55 LOGICAL :: do_gw = .false., &
56 do_soc = .false., &
57 do_bs = .false., &
58 do_bs_primitive_cell = .false., &
59 do_ldos = .false.
60
61 ! various eigenvalues computed in GW code, some depend on k-points
62 ! and have therefore three dimensions (band index, k-point, spin)
63 REAL(kind=dp), DIMENSION(:, :), ALLOCATABLE :: eigenval_scf_gamma
64 REAL(kind=dp), DIMENSION(:, :, :), ALLOCATABLE :: eigenval_scf, &
65 eigenval_g0w0
66 REAL(kind=dp), DIMENSION(:, :, :), ALLOCATABLE :: eigenval_scgw0
67 REAL(kind=dp), DIMENSION(:, :), ALLOCATABLE :: eigenval_prim_cell_scf, &
68 eigenval_prim_cell_scf_soc, &
69 eigenval_prim_cell_g0w0, &
70 eigenval_prim_cell_g0w0_soc
71 REAL(kind=dp), DIMENSION(:, :), ALLOCATABLE :: eigenval_scf_soc, &
72 eigenval_g0w0_soc
73 TYPE(band_edges_type), DIMENSION(2) :: band_edges_scf_gamma
74 TYPE(band_edges_type) :: band_edges_scf, &
75 band_edges_g0w0
76
77 ! general parameters on molecular orbitals and basis sets
78 INTEGER :: n_ao = -1, &
79 n_ri = -1, &
80 n_spin = -1, &
81 n_atom = -1, &
82 max_ao_bf_per_atom = -1
83 INTEGER, DIMENSION(:), ALLOCATABLE :: i_ao_start_from_atom, &
84 i_ao_end_from_atom, &
85 i_ri_start_from_atom, &
86 i_ri_end_from_atom
87 INTEGER, DIMENSION(2) :: n_occ = -1, &
88 n_vir = -1
89 REAL(kind=dp) :: spin_degeneracy = -1.0_dp
90 REAL(kind=dp), DIMENSION(2) :: e_fermi = -1.0_dp
91
92 ! kpoint mesh for chi, eps, W
93 INTEGER, DIMENSION(:), POINTER :: nkp_grid_dos_input => null()
94 INTEGER, DIMENSION(3) :: nkp_grid_chi_eps_w_orig = -1, &
95 nkp_grid_chi_eps_w_extra = -1
96 INTEGER :: nkp_chi_eps_w_orig = -1, &
97 nkp_chi_eps_w_extra = -1, &
98 nkp_chi_eps_w_orig_plus_extra = -1, &
99 nkp_chi_eps_w_batch = -1, &
100 num_chi_eps_w_batches = -1, &
101 size_lattice_sum_v = -1
102 TYPE(kpoint_type), POINTER :: kpoints_chi_eps_w => null(), &
103 kpoints_dos => null(), &
104 kpoints_bandstructure => null()
105 LOGICAL :: approx_kp_extrapol = .false.
106 REAL(kind=dp) :: wkp_orig = -1.0_dp
107 REAL(kind=dp), DIMENSION(:), ALLOCATABLE :: wkp_s_p, &
108 wkp_no_extra
109 INTEGER, DIMENSION(:), ALLOCATABLE :: l_ri
110 INTEGER :: input_kp_bs_npoints = -1, &
111 input_kp_bs_n_sp_pts = -1, &
112 nkp_bs = -1, &
113 nkp_dos = -1
114 REAL(kind=dp), DIMENSION(:, :), ALLOCATABLE :: xkp_special
115 CHARACTER(LEN=default_string_length), &
116 DIMENSION(:), ALLOCATABLE :: kp_special_name
117
118 ! parameters for GW band structure calculation of small unit cell (with multiple unit cell)
119 INTEGER, DIMENSION(3) :: periodic = -1, &
120 multiple_unit_cell = -1
121 LOGICAL :: calculate_bandstructure_of_primitive_cell &
122 = .false.
123 INTEGER :: n_atom_in_primitive_cell = -1, &
124 n_primitive_cells = -1
125 INTEGER, DIMENSION(:), ALLOCATABLE :: atoms_i_primitive_cell, &
126 ref_atom_primitive_cell
127 INTEGER, DIMENSION(:, :), ALLOCATABLE :: cell_of_i_atom
128 REAL(kind=dp), DIMENSION(3, 3) :: hmat_primitive_cell = -1.0_dp, &
129 hinv_primitive_cell = -1.0_dp, &
130 hmat = -1.0_dp
131
132 ! imaginary time and imaginary frequency grids
133 INTEGER :: num_time_freq_points = -1, &
134 num_freq_points_fit = -1
135 REAL(kind=dp), DIMENSION(:), ALLOCATABLE :: imag_time_points, &
136 imag_freq_points, &
137 imag_freq_points_fit
138 REAL(kind=dp), DIMENSION(:, :), ALLOCATABLE :: weights_cos_t_to_w, &
139 weights_cos_w_to_t, &
140 weights_sin_t_to_w
141 INTEGER :: nparam_pade = -1, &
142 num_points_per_magnitude = -1
143 REAL(kind=dp) :: freq_max_fit = -1.0_dp, &
144 regularization_minimax = -1.0_dp, &
145 stabilize_exp = -1.0_dp
146
147 ! filter threshold for matrix-tensor operations
148 REAL(kind=dp) :: eps_filter = -1.0_dp, &
149 eps_3c_int = -1.0_dp, &
150 eps_atom_grid_2d_mat = -1.0_dp
151
152 ! threshold for inverting ao overlap matrix, RI matrices
153 REAL(kind=dp) :: eps_eigval_mat_s = -1.0_dp, &
154 eps_eigval_mat_ri = -1.0_dp, &
155 regularization_ri = -1.0_dp
156
157 ! global full matrices used in GW
158 TYPE(cp_fm_type) :: fm_s_gamma, &
159 fm_gocc, &
160 fm_gvir
161 TYPE(cp_fm_type), DIMENSION(2) :: fm_ks_gamma, &
162 fm_v_xc_gamma, &
163 fm_mo_coeff_gamma
164 TYPE(cp_fm_type), DIMENSION(4) :: fm_work_mo
165 TYPE(cp_fm_type) :: fm_ri_ri, &
166 fm_chi_gamma_freq, &
167 fm_w_mic_freq, &
168 fm_w_mic_freq_1_extra, &
169 fm_w_mic_freq_1_no_extra, &
170 fm_h_g0w0_gamma
171
172 ! global dbcsr matrices used in GW
173 TYPE(dbcsr_p_type) :: mat_ao_ao, &
174 mat_ri_ri
175 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: mat_chi_gamma_tau => null()
176
177 ! local dbcsr matrices used in GW (local in tensor group)
178 TYPE(dbcsr_p_type) :: mat_ao_ao_tensor, &
179 mat_ri_ri_tensor, &
180 mat_sigma_from_gocc_tensor, &
181 mat_sigma_from_gvir_tensor, &
182 mat_w_mic_time_tensor
183
184 ! tensors for sparse matrix-tensor operations
185 TYPE(dbt_type) :: t_g, &
186 t_chi, &
187 t_w, &
188 t_ri_ao__ao, &
189 t_ri__ao_ao
190
191 ! parameters and data for parallelization
192 INTEGER :: group_size_tensor = -1, &
193 tensor_group_color = -1, &
194 num_tensor_groups = -1, &
195 diag_group_color = -1, &
196 num_diag_groups = -1, &
197 min_block_size = -1
198 REAL(kind=dp) :: input_memory_per_proc_gb = -1.0_dp
199 INTEGER(KIND=int_8) :: input_memory_per_proc = -1
200 TYPE(mp_para_env_type), POINTER :: para_env => null(), &
201 para_env_tensor => null()
202 REAL(kind=dp) :: occupation_3c_int = -1.0_dp, &
203 max_dist_ao_atoms = -1.0_dp, &
204 safety_factor_memory = -1.0_dp
205 ! parallelization: atom range i and atom range j for tensor group
206 INTEGER, DIMENSION(2) :: atoms_i = -1, &
207 atoms_j = -1
208 INTEGER :: n_atom_i = -1, &
209 n_intervals_i = -1, &
210 n_atom_j = -1, &
211 n_intervals_j = -1, &
212 n_atom_per_interval_ij = -1, &
213 n_intervals_inner_loop_atoms = -1, &
214 n_atom_per_il_interval = -1
215 INTEGER, DIMENSION(:, :), ALLOCATABLE :: i_atom_intervals, &
216 j_atom_intervals, &
217 inner_loop_atom_intervals, &
218 atoms_i_t_group, &
219 atoms_j_t_group
220 LOGICAL, DIMENSION(:, :), ALLOCATABLE :: skip_sigma_occ, &
221 skip_sigma_vir
222
223 ! check-arrays and names for restarting
224 LOGICAL, DIMENSION(:), ALLOCATABLE :: read_chi, &
225 calc_chi
226 LOGICAL, DIMENSION(:, :), ALLOCATABLE :: sigma_c_exists
227 LOGICAL :: all_w_exist = .false., &
228 sigma_x_exists = .false.
229 CHARACTER(LEN=3) :: chi_name = "chi"
230 CHARACTER(LEN=6) :: w_time_name = "W_time"
231 CHARACTER(LEN=7) :: sigma_x_name = "Sigma_x"
232 CHARACTER(LEN=13) :: sigma_p_name = "Sigma_pos_tau", &
233 sigma_n_name = "Sigma_neg_tau"
234 CHARACTER(LEN=default_string_length) :: prefix = ""
235
236 REAL(kind=dp) :: t1 = -1.0_dp, &
237 t2 = -1.0_dp
238 INTEGER :: unit_nr = -1
239
240 ! parameters and data for basis sets
241 TYPE(gto_basis_set_p_type), DIMENSION(:), &
242 ALLOCATABLE :: basis_set_ao, &
243 basis_set_ri
244 INTEGER, DIMENSION(:), ALLOCATABLE :: sizes_ao, &
245 sizes_ri
247 TYPE(libint_potential_type) :: ri_metric, &
248 trunc_coulomb
249
250 ! parameters for SOC calculation
251 REAL(kind=dp) :: energy_window_soc = -1.0_dp
252 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: mat_v_soc_xyz => null()
253 TYPE(cp_fm_type), DIMENSION(3) :: fm_v_soc_xyz_mo
254 TYPE(cp_cfm_type) :: cfm_ks_spinor_ao_gamma, &
255 cfm_soc_spinor_ao_gamma, &
256 cfm_s_spinor_gamma
257 TYPE(band_edges_type) :: band_edges_scf_soc, &
258 band_edges_g0w0_soc
259
260 ! parameters for DOS and PDOS calculation
261 REAL(kind=dp) :: energy_window_dos = -1.0_dp, &
262 energy_step_dos = -1.0_dp, &
263 broadening_dos = -1.0_dp
264
265 ! parameters for LDOS calculation (LDOS: local density of states)
266 INTEGER :: int_ldos_xyz = -1
267 INTEGER, DIMENSION(:), POINTER :: bin_mesh => null()
268 INTEGER :: n_bins_max_for_printing = -1
269 REAL(kind=dp) :: unit_ldos_int_z_inv_ang2_ev = -1.0_dp
270
272
273CONTAINS
274
275! **************************************************************************************************
276!> \brief ...
277!> \param bs_env ...
278! **************************************************************************************************
279 SUBROUTINE bs_env_release(bs_env)
280 TYPE(post_scf_bandstructure_type), POINTER :: bs_env
281
282 CHARACTER(LEN=*), PARAMETER :: routinen = 'bs_env_release'
283
284 INTEGER :: handle
285
286 CALL timeset(routinen, handle)
287
288 cpassert(ASSOCIATED(bs_env))
289
290 CALL safe_kpoints_release(bs_env%kpoints_chi_eps_W)
291 CALL safe_kpoints_release(bs_env%kpoints_DOS)
292 CALL safe_kpoints_release(bs_env%kpoints_bandstructure)
293
294 IF (ALLOCATED(bs_env%wkp_s_p)) DEALLOCATE (bs_env%wkp_s_p)
295 IF (ALLOCATED(bs_env%wkp_no_extra)) DEALLOCATE (bs_env%wkp_no_extra)
296 IF (ALLOCATED(bs_env%l_RI)) DEALLOCATE (bs_env%l_RI)
297 IF (ALLOCATED(bs_env%xkp_special)) DEALLOCATE (bs_env%xkp_special)
298 IF (ALLOCATED(bs_env%kp_special_name)) DEALLOCATE (bs_env%kp_special_name)
299 IF (ALLOCATED(bs_env%atoms_i_primitive_cell)) DEALLOCATE (bs_env%atoms_i_primitive_cell)
300 IF (ALLOCATED(bs_env%ref_atom_primitive_cell)) DEALLOCATE (bs_env%ref_atom_primitive_cell)
301 IF (ALLOCATED(bs_env%cell_of_i_atom)) DEALLOCATE (bs_env%cell_of_i_atom)
302 IF (ALLOCATED(bs_env%imag_time_points)) DEALLOCATE (bs_env%imag_time_points)
303 IF (ALLOCATED(bs_env%imag_freq_points)) DEALLOCATE (bs_env%imag_freq_points)
304 IF (ALLOCATED(bs_env%eigenval_scf_Gamma)) DEALLOCATE (bs_env%eigenval_scf_Gamma)
305 IF (ALLOCATED(bs_env%eigenval_scf)) DEALLOCATE (bs_env%eigenval_scf)
306 IF (ALLOCATED(bs_env%eigenval_G0W0)) DEALLOCATE (bs_env%eigenval_G0W0)
307 IF (ALLOCATED(bs_env%eigenval_scGW0)) DEALLOCATE (bs_env%eigenval_scGW0)
308 IF (ALLOCATED(bs_env%eigenval_prim_cell_scf)) DEALLOCATE (bs_env%eigenval_prim_cell_scf)
309 IF (ALLOCATED(bs_env%eigenval_prim_cell_scf_soc)) DEALLOCATE (bs_env%eigenval_prim_cell_scf_soc)
310 IF (ALLOCATED(bs_env%eigenval_prim_cell_G0W0)) DEALLOCATE (bs_env%eigenval_prim_cell_G0W0)
311 IF (ALLOCATED(bs_env%eigenval_prim_cell_G0W0_soc)) DEALLOCATE (bs_env%eigenval_prim_cell_G0W0_soc)
312 IF (ALLOCATED(bs_env%eigenval_scf_soc)) DEALLOCATE (bs_env%eigenval_scf_soc)
313 IF (ALLOCATED(bs_env%eigenval_G0W0_soc)) DEALLOCATE (bs_env%eigenval_G0W0_soc)
314 IF (ALLOCATED(bs_env%i_ao_start_from_atom)) DEALLOCATE (bs_env%i_ao_start_from_atom)
315 IF (ALLOCATED(bs_env%i_ao_end_from_atom)) DEALLOCATE (bs_env%i_ao_end_from_atom)
316 IF (ALLOCATED(bs_env%i_RI_start_from_atom)) DEALLOCATE (bs_env%i_RI_start_from_atom)
317 IF (ALLOCATED(bs_env%i_RI_end_from_atom)) DEALLOCATE (bs_env%i_RI_end_from_atom)
318 IF (ALLOCATED(bs_env%i_atom_intervals)) DEALLOCATE (bs_env%i_atom_intervals)
319 IF (ALLOCATED(bs_env%j_atom_intervals)) DEALLOCATE (bs_env%j_atom_intervals)
320 IF (ALLOCATED(bs_env%atoms_i_t_group)) DEALLOCATE (bs_env%atoms_i_t_group)
321 IF (ALLOCATED(bs_env%atoms_j_t_group)) DEALLOCATE (bs_env%atoms_j_t_group)
322 IF (ALLOCATED(bs_env%skip_Sigma_occ)) DEALLOCATE (bs_env%skip_Sigma_occ)
323 IF (ALLOCATED(bs_env%skip_Sigma_vir)) DEALLOCATE (bs_env%skip_Sigma_vir)
324 IF (ALLOCATED(bs_env%read_chi)) DEALLOCATE (bs_env%read_chi)
325 IF (ALLOCATED(bs_env%calc_chi)) DEALLOCATE (bs_env%calc_chi)
326 IF (ALLOCATED(bs_env%Sigma_c_exists)) DEALLOCATE (bs_env%Sigma_c_exists)
327 IF (ALLOCATED(bs_env%sizes_AO)) DEALLOCATE (bs_env%sizes_AO)
328 IF (ALLOCATED(bs_env%sizes_RI)) DEALLOCATE (bs_env%sizes_RI)
329
330 CALL cp_fm_release(bs_env%fm_s_Gamma)
331 CALL cp_fm_release(bs_env%fm_ks_Gamma(1))
332 CALL cp_fm_release(bs_env%fm_ks_Gamma(2))
333 CALL cp_fm_release(bs_env%fm_V_xc_Gamma(1))
334 CALL cp_fm_release(bs_env%fm_V_xc_Gamma(2))
335 CALL cp_fm_release(bs_env%fm_mo_coeff_Gamma(1))
336 CALL cp_fm_release(bs_env%fm_mo_coeff_Gamma(2))
337 CALL cp_fm_release(bs_env%fm_Gocc)
338 CALL cp_fm_release(bs_env%fm_Gvir)
339 CALL cp_fm_release(bs_env%fm_work_mo(1))
340 CALL cp_fm_release(bs_env%fm_work_mo(2))
341 CALL cp_fm_release(bs_env%fm_work_mo(3))
342 CALL cp_fm_release(bs_env%fm_work_mo(4))
343 CALL cp_fm_release(bs_env%fm_RI_RI)
344 CALL cp_fm_release(bs_env%fm_chi_Gamma_freq)
345 CALL cp_fm_release(bs_env%fm_W_MIC_freq)
346 CALL cp_fm_release(bs_env%fm_W_MIC_freq_1_extra)
347 CALL cp_fm_release(bs_env%fm_W_MIC_freq_1_no_extra)
348 CALL cp_fm_release(bs_env%fm_h_G0W0_Gamma)
349
350 CALL release_dbcsr_p_type(bs_env%mat_ao_ao)
351 CALL release_dbcsr_p_type(bs_env%mat_RI_RI)
352 CALL safe_dbcsr_deallocate_matrix_set_1d(bs_env%mat_chi_Gamma_tau)
353
354 CALL release_dbcsr_p_type(bs_env%mat_ao_ao_tensor)
355 CALL release_dbcsr_p_type(bs_env%mat_RI_RI_tensor)
356 CALL release_dbcsr_p_type(bs_env%mat_Sigma_from_Gocc_tensor)
357 CALL release_dbcsr_p_type(bs_env%mat_Sigma_from_Gvir_tensor)
358 CALL release_dbcsr_p_type(bs_env%mat_W_MIC_time_tensor)
359
360 CALL mp_para_env_release(bs_env%para_env)
361 IF (ASSOCIATED(bs_env%para_env_tensor)) CALL mp_para_env_release(bs_env%para_env_tensor)
362
363 CALL safe_dbt_destroy(bs_env%t_G)
364 CALL safe_dbt_destroy(bs_env%t_chi)
365 CALL safe_dbt_destroy(bs_env%t_W)
366 CALL safe_dbt_destroy(bs_env%t_RI_AO__AO)
367 CALL safe_dbt_destroy(bs_env%t_RI__AO_AO)
368
369 IF (ALLOCATED(bs_env%basis_set_AO)) DEALLOCATE (bs_env%basis_set_AO)
370 IF (ALLOCATED(bs_env%basis_set_RI)) DEALLOCATE (bs_env%basis_set_RI)
371
372 ! SOC matrices and arrays
373 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
374 CALL cp_fm_release(bs_env%fm_V_SOC_xyz_mo(1))
375 CALL cp_fm_release(bs_env%fm_V_SOC_xyz_mo(2))
376 CALL cp_fm_release(bs_env%fm_V_SOC_xyz_mo(3))
377 CALL cp_cfm_release(bs_env%cfm_ks_spinor_ao_Gamma)
378 CALL cp_cfm_release(bs_env%cfm_SOC_spinor_ao_Gamma)
379 CALL cp_cfm_release(bs_env%cfm_s_spinor_Gamma)
380
381 DEALLOCATE (bs_env)
382
383 CALL timestop(handle)
384
385 END SUBROUTINE bs_env_release
386
387! **************************************************************************************************
388!> \brief ...
389!> \param kpoints ...
390! **************************************************************************************************
391 SUBROUTINE safe_kpoints_release(kpoints)
392 TYPE(kpoint_type), POINTER :: kpoints
393
394 IF (ASSOCIATED(kpoints)) CALL kpoint_release(kpoints)
395
396 END SUBROUTINE safe_kpoints_release
397
398! **************************************************************************************************
399!> \brief ...
400!> \param dbcsr_p_type_matrix ...
401! **************************************************************************************************
402 SUBROUTINE release_dbcsr_p_type(dbcsr_p_type_matrix)
403 TYPE(dbcsr_p_type) :: dbcsr_p_type_matrix
404
405 IF (ASSOCIATED(dbcsr_p_type_matrix%matrix)) THEN
406 CALL dbcsr_release(dbcsr_p_type_matrix%matrix)
407 DEALLOCATE (dbcsr_p_type_matrix%matrix)
408 END IF
409
410 END SUBROUTINE release_dbcsr_p_type
411
412! **************************************************************************************************
413!> \brief ...
414!> \param t ...
415! **************************************************************************************************
416 SUBROUTINE safe_dbt_destroy(t)
417 TYPE(dbt_type) :: t
418
419 IF (ASSOCIATED(t%matrix_rep)) CALL dbt_destroy(t)
420
421 END SUBROUTINE safe_dbt_destroy
422
423! **************************************************************************************************
424!> \brief ...
425!> \param dbcsr_p_type_matrix_array ...
426! **************************************************************************************************
427 SUBROUTINE safe_dbcsr_deallocate_matrix_set_1d(dbcsr_p_type_matrix_array)
428
429 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: dbcsr_p_type_matrix_array
430
431 IF (ASSOCIATED(dbcsr_p_type_matrix_array)) CALL dbcsr_deallocate_matrix_set(dbcsr_p_type_matrix_array)
432
433 END SUBROUTINE safe_dbcsr_deallocate_matrix_set_1d
434! **************************************************************************************************
435!> \brief ...
436!> \param dbcsr_p_type_matrix_array ...
437! **************************************************************************************************
438 SUBROUTINE safe_dbcsr_deallocate_matrix_set_2d(dbcsr_p_type_matrix_array)
439
440 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: dbcsr_p_type_matrix_array
441
442 IF (ASSOCIATED(dbcsr_p_type_matrix_array)) CALL dbcsr_deallocate_matrix_set(dbcsr_p_type_matrix_array)
443
444 END SUBROUTINE safe_dbcsr_deallocate_matrix_set_2d
445
Represents a complex full matrix distributed on many processors.
subroutine, public cp_cfm_release(matrix)
Releases a full matrix.
DBCSR operations in CP2K.
represent a full matrix distributed on many processors
Definition cp_fm_types.F:15
This is the start of a dbt_api, all publically needed functions are exported here....
Definition dbt_api.F:17
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public int_8
Definition kinds.F:54
integer, parameter, public dp
Definition kinds.F:34
integer, parameter, public default_string_length
Definition kinds.F:57
Types and basic routines needed for a kpoint calculation.
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
2- and 3-center electron repulsion integral routines based on libint2 Currently available operators: ...
Interface to the message passing library MPI.
subroutine, public mp_para_env_release(para_env)
releases the para object (to be called when you don't want anymore the shared copy of this object)
subroutine, public bs_env_release(bs_env)
...
Utility methods to build 3-center integral tensors of various types.
Represent a complex full matrix.
represent a full matrix
Contains information about kpoints.
stores all the informations relevant to an mpi environment