55 LOGICAL :: do_gw = .false., &
58 do_bs_primitive_cell = .false., &
63 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_gamma
64 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: eigenval_scf, &
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, &
78 INTEGER :: n_ao = -1, &
82 max_ao_bf_per_atom = -1
83 INTEGER,
DIMENSION(:),
ALLOCATABLE :: i_ao_start_from_atom, &
85 i_ri_start_from_atom, &
87 INTEGER,
DIMENSION(2) :: n_occ = -1, &
89 REAL(kind=
dp) :: spin_degeneracy = -1.0_dp
90 REAL(kind=
dp),
DIMENSION(2) :: e_fermi = -1.0_dp
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
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, &
109 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l_ri
110 INTEGER :: input_kp_bs_npoints = -1, &
111 input_kp_bs_n_sp_pts = -1, &
114 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: xkp_special
115 CHARACTER(LEN=default_string_length), &
116 DIMENSION(:),
ALLOCATABLE :: kp_special_name
119 INTEGER,
DIMENSION(3) :: periodic = -1, &
120 multiple_unit_cell = -1
121 LOGICAL :: calculate_bandstructure_of_primitive_cell &
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, &
133 INTEGER :: num_time_freq_points = -1, &
134 num_freq_points_fit = -1
135 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: imag_time_points, &
138 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: weights_cos_t_to_w, &
139 weights_cos_w_to_t, &
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
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
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
168 fm_w_mic_freq_1_extra, &
169 fm_w_mic_freq_1_no_extra, &
173 TYPE(dbcsr_p_type) :: mat_ao_ao, &
175 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_chi_gamma_tau => null()
178 TYPE(dbcsr_p_type) :: mat_ao_ao_tensor, &
180 mat_sigma_from_gocc_tensor, &
181 mat_sigma_from_gvir_tensor, &
182 mat_w_mic_time_tensor
185 TYPE(dbt_type) :: t_g, &
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, &
198 REAL(kind=
dp) :: input_memory_per_proc_gb = -1.0_dp
199 INTEGER(KIND=int_8) :: input_memory_per_proc = -1
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
206 INTEGER,
DIMENSION(2) :: atoms_i = -1, &
208 INTEGER :: n_atom_i = -1, &
209 n_intervals_i = -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, &
217 inner_loop_atom_intervals, &
220 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: skip_sigma_occ, &
224 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: read_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 =
""
236 REAL(kind=
dp) :: t1 = -1.0_dp, &
238 INTEGER :: unit_nr = -1
242 ALLOCATABLE :: basis_set_ao, &
244 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sizes_ao, &
251 REAL(kind=
dp) :: energy_window_soc = -1.0_dp
252 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_v_soc_xyz => null()
255 cfm_soc_spinor_ao_gamma, &
261 REAL(kind=
dp) :: energy_window_dos = -1.0_dp, &
262 energy_step_dos = -1.0_dp, &
263 broadening_dos = -1.0_dp
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
282 CHARACTER(LEN=*),
PARAMETER :: routinen =
'bs_env_release'
286 CALL timeset(routinen, handle)
288 cpassert(
ASSOCIATED(bs_env))
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)
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)
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)
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)
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)
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)
373 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
383 CALL timestop(handle)