(git:db3ef62)
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 ! **************************************************************************************************
14  USE basis_set_types, ONLY: gto_basis_set_p_type
15  USE cp_cfm_types, ONLY: cp_cfm_release,&
16  cp_cfm_type
18  USE cp_fm_types, ONLY: cp_fm_release,&
19  cp_fm_type
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,&
28  kpoint_type
29  USE libint_2c_3c, ONLY: libint_potential_type
31  mp_para_env_type
32  USE qs_tensors_types, ONLY: neighbor_list_3c_type
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 
41  PUBLIC :: post_scf_bandstructure_type, band_edges_type, bs_env_release
42 
43  ! valence band maximum (VBM), conduction band minimum (CBM), direct band gap (DBG),
44  ! indirect band gap (IDBG)
45  TYPE band_edges_type
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 
52  TYPE post_scf_bandstructure_type
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
246  TYPE(neighbor_list_3c_type) :: nl_3c
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 
271  END TYPE post_scf_bandstructure_type
272 
273 CONTAINS
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.
Definition: cp_cfm_types.F:12
subroutine, public cp_cfm_release(matrix)
Releases a full matrix.
Definition: cp_cfm_types.F:159
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.
Definition: kpoint_types.F:15
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
Definition: kpoint_types.F:234
2- and 3-center electron repulsion integral routines based on libint2 Currently available operators: ...
Definition: libint_2c_3c.F:14
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.