61 LOGICAL :: do_gw = .false., &
67 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_gamma
68 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: eigenval_scf, &
72 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_soc, &
80 LOGICAL :: do_hedin_shift = .false.
83 INTEGER :: n_ao = -1, &
87 max_ao_bf_per_atom = -1
88 INTEGER,
DIMENSION(:),
ALLOCATABLE :: i_ao_start_from_atom, &
90 i_ri_start_from_atom, &
92 INTEGER,
DIMENSION(2) :: n_occ = -1, &
94 REAL(kind=
dp) :: spin_degeneracy = -1.0_dp
95 REAL(kind=
dp),
DIMENSION(2) :: e_fermi = -1.0_dp
98 INTEGER,
DIMENSION(:),
POINTER :: nkp_grid_dos_input => null(), &
99 nkp_grid_chi_eps_w_input => null()
100 INTEGER,
DIMENSION(3) :: nkp_grid_chi_eps_w_orig = -1, &
101 nkp_grid_chi_eps_w_extra = -1
102 INTEGER :: nkp_chi_eps_w_orig = -1, &
103 nkp_chi_eps_w_extra = -1, &
104 nkp_chi_eps_w_orig_plus_extra = -1, &
105 nkp_chi_eps_w_batch = -1, &
106 num_chi_eps_w_batches = -1, &
107 size_lattice_sum_v = -1
109 kpoints_dos => null()
110 LOGICAL :: approx_kp_extrapol = .false.
112 REAL(kind=
dp) :: wkp_orig = -1.0_dp
113 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: wkp_s_p, &
115 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l_ri
116 INTEGER :: input_kp_bs_npoints = -1, &
117 input_kp_bs_n_sp_pts = -1, &
118 nkp_bs_and_dos = -1, &
121 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: xkp_special
124 INTEGER :: small_cell_full_kp_or_large_cell_gamma = -1, &
126 INTEGER,
DIMENSION(3) :: periodic = -1
127 REAL(kind=
dp),
DIMENSION(3, 3) :: hmat = -1.0_dp
130 INTEGER :: num_time_freq_points = -1, &
131 num_freq_points_fit = -1
132 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: imag_time_points, &
133 imag_time_weights_freq_zero, &
136 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: weights_cos_t_to_w, &
137 weights_cos_w_to_t, &
139 INTEGER :: nparam_pade = -1, &
140 num_points_per_magnitude = -1
141 REAL(kind=
dp) :: freq_max_fit = -1.0_dp, &
142 regularization_minimax = -1.0_dp, &
143 stabilize_exp = -1.0_dp
146 REAL(kind=
dp) :: eps_filter = -1.0_dp, &
147 eps_atom_grid_2d_mat = -1.0_dp
150 REAL(kind=
dp) :: eps_eigval_mat_s = -1.0_dp, &
151 eps_eigval_mat_ri = -1.0_dp, &
152 input_regularization_ri = -1.0_dp, &
153 regularization_ri = -1.0_dp
176 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_chi_gamma_tau => null()
183#if defined(FTN_NO_DEFAULT_INIT)
184 TYPE(dbt_type) :: t_g, &
190 TYPE(dbt_type) :: t_g = dbt_type(), &
191 t_chi = dbt_type(), &
193 t_ri_ao__ao = dbt_type(), &
194 t_ri__ao_ao = dbt_type()
198 INTEGER :: group_size_tensor = -1, &
199 tensor_group_color = -1, &
200 num_tensor_groups = -1
201 REAL(kind=
dp) :: input_memory_per_proc_gb = -1.0_dp
203 para_env_tensor => null()
204 REAL(kind=
dp) :: occupation_3c_int = -1.0_dp, &
205 max_dist_ao_atoms = -1.0_dp, &
206 safety_factor_memory = -1.0_dp
209 INTEGER,
DIMENSION(2) :: atoms_i = -1, &
211 INTEGER :: n_atom_i = -1, &
212 n_intervals_i = -1, &
214 n_intervals_j = -1, &
215 n_atom_per_interval_ij = -1, &
216 n_intervals_inner_loop_atoms = -1, &
217 n_atom_per_il_interval = -1
218 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: i_atom_intervals, &
220 inner_loop_atom_intervals, &
223 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: skip_sigma_occ, &
229 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: read_chi, &
231 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: sigma_c_exists
232 LOGICAL :: all_w_exist = .false., &
233 sigma_x_exists = .false.
234 CHARACTER(LEN=3) :: chi_name =
"chi"
235 CHARACTER(LEN=6) :: w_time_name =
"W_time"
236 CHARACTER(LEN=7) :: sigma_x_name =
"Sigma_x"
237 CHARACTER(LEN=13) :: sigma_p_name =
"Sigma_pos_tau", &
238 sigma_n_name =
"Sigma_neg_tau"
239 CHARACTER(LEN=default_string_length) :: prefix =
""
240 INTEGER :: unit_nr = -1
244 DIMENSION(:),
ALLOCATABLE :: basis_set_ao, &
246 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sizes_ao, &
253 REAL(kind=
dp) :: energy_window_soc = -1.0_dp
255 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_v_soc_xyz => null()
263 REAL(kind=
dp) :: energy_window_dos = -1.0_dp, &
264 energy_step_dos = -1.0_dp, &
265 broadening_dos = -1.0_dp
268 INTEGER :: int_ldos_xyz = -1
269 INTEGER,
DIMENSION(:),
POINTER :: bin_mesh => null()
270 INTEGER :: n_bins_max_for_printing = -1
271 REAL(kind=
dp) :: unit_ldos_int_z_inv_ang2_ev = -1.0_dp
274 INTEGER :: nkp_scf_desymm = -1, &
276 nimages_scf_desymm = -1, &
279 kpoints_scf_desymm_2 => null()
280 INTEGER,
DIMENSION(3) :: cell_grid_scf_desymm = -1
281 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: index_to_cell_3c, &
282 index_to_cell_delta_r
283 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index_3c => null(), &
284 cell_to_index_delta_r => null()
285 REAL(kind=
dp) :: heuristic_filter_factor = -1.0_dp
288 INTEGER :: n_tasks_delta_r_local = -1
289 INTEGER,
DIMENSION(:),
ALLOCATABLE :: task_delta_r
290 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: nblocks_3c
291 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: skip_dr_chi, &
293 LOGICAL,
DIMENSION(:, :, :),
ALLOCATABLE :: skip_dr_r_r2_mxm_chi, &
294 skip_dr_r1_r_mxm_sigma, &
295 skip_dr_r12_s_goccx3c_chi, &
296 skip_dr_r12_s_gvirx3c_chi, &
297 skip_dr_r1_s2_gx3c_sigma
301 TYPE(
cp_cfm_type),
DIMENSION(:, :),
ALLOCATABLE :: cfm_mo_coeff_kp, &
305 TYPE(
cp_fm_type),
DIMENSION(:, :),
ALLOCATABLE :: fm_v_xc_r, &
308 TYPE(
cp_fm_type),
DIMENSION(:, :, :),
ALLOCATABLE :: fm_sigma_c_r_neg_tau, &
310 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: v_xc_n
311 TYPE(dbt_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_int
324 CHARACTER(LEN=*),
PARAMETER :: routinen =
'bs_env_release'
328 CALL timeset(routinen, handle)
330 cpassert(
ASSOCIATED(bs_env))
332 CALL safe_kpoints_release(bs_env%kpoints_chi_eps_W)
333 CALL safe_kpoints_release(bs_env%kpoints_DOS)
334 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm)
335 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm_2)
337 IF (
ALLOCATED(bs_env%wkp_s_p))
DEALLOCATE (bs_env%wkp_s_p)
338 IF (
ALLOCATED(bs_env%wkp_no_extra))
DEALLOCATE (bs_env%wkp_no_extra)
339 IF (
ALLOCATED(bs_env%l_RI))
DEALLOCATE (bs_env%l_RI)
340 IF (
ALLOCATED(bs_env%xkp_special))
DEALLOCATE (bs_env%xkp_special)
341 IF (
ALLOCATED(bs_env%imag_time_points))
DEALLOCATE (bs_env%imag_time_points)
342 IF (
ALLOCATED(bs_env%imag_time_weights_freq_zero))
DEALLOCATE (bs_env%imag_time_weights_freq_zero)
343 IF (
ALLOCATED(bs_env%imag_freq_points))
DEALLOCATE (bs_env%imag_freq_points)
344 IF (
ALLOCATED(bs_env%eigenval_scf_Gamma))
DEALLOCATE (bs_env%eigenval_scf_Gamma)
345 IF (
ALLOCATED(bs_env%eigenval_scf))
DEALLOCATE (bs_env%eigenval_scf)
346 IF (
ALLOCATED(bs_env%eigenval_G0W0))
DEALLOCATE (bs_env%eigenval_G0W0)
347 IF (
ALLOCATED(bs_env%eigenval_HF))
DEALLOCATE (bs_env%eigenval_HF)
348 IF (
ALLOCATED(bs_env%eigenval_scGW0))
DEALLOCATE (bs_env%eigenval_scGW0)
349 IF (
ALLOCATED(bs_env%eigenval_scf_soc))
DEALLOCATE (bs_env%eigenval_scf_soc)
350 IF (
ALLOCATED(bs_env%eigenval_G0W0_soc))
DEALLOCATE (bs_env%eigenval_G0W0_soc)
351 IF (
ALLOCATED(bs_env%i_ao_start_from_atom))
DEALLOCATE (bs_env%i_ao_start_from_atom)
352 IF (
ALLOCATED(bs_env%i_ao_end_from_atom))
DEALLOCATE (bs_env%i_ao_end_from_atom)
353 IF (
ALLOCATED(bs_env%i_RI_start_from_atom))
DEALLOCATE (bs_env%i_RI_start_from_atom)
354 IF (
ALLOCATED(bs_env%i_RI_end_from_atom))
DEALLOCATE (bs_env%i_RI_end_from_atom)
355 IF (
ALLOCATED(bs_env%i_atom_intervals))
DEALLOCATE (bs_env%i_atom_intervals)
356 IF (
ALLOCATED(bs_env%j_atom_intervals))
DEALLOCATE (bs_env%j_atom_intervals)
357 IF (
ALLOCATED(bs_env%atoms_i_t_group))
DEALLOCATE (bs_env%atoms_i_t_group)
358 IF (
ALLOCATED(bs_env%atoms_j_t_group))
DEALLOCATE (bs_env%atoms_j_t_group)
359 IF (
ALLOCATED(bs_env%skip_Sigma_occ))
DEALLOCATE (bs_env%skip_Sigma_occ)
360 IF (
ALLOCATED(bs_env%skip_Sigma_vir))
DEALLOCATE (bs_env%skip_Sigma_vir)
361 IF (
ALLOCATED(bs_env%read_chi))
DEALLOCATE (bs_env%read_chi)
362 IF (
ALLOCATED(bs_env%calc_chi))
DEALLOCATE (bs_env%calc_chi)
363 IF (
ALLOCATED(bs_env%Sigma_c_exists))
DEALLOCATE (bs_env%Sigma_c_exists)
364 IF (
ALLOCATED(bs_env%sizes_AO))
DEALLOCATE (bs_env%sizes_AO)
365 IF (
ALLOCATED(bs_env%sizes_RI))
DEALLOCATE (bs_env%sizes_RI)
366 IF (
ALLOCATED(bs_env%index_to_cell_3c))
DEALLOCATE (bs_env%index_to_cell_3c)
367 IF (
ALLOCATED(bs_env%index_to_cell_Delta_R))
DEALLOCATE (bs_env%index_to_cell_Delta_R)
368 IF (
ASSOCIATED(bs_env%cell_to_index_3c))
DEALLOCATE (bs_env%cell_to_index_3c)
369 IF (
ASSOCIATED(bs_env%cell_to_index_Delta_R))
DEALLOCATE (bs_env%cell_to_index_Delta_R)
370 IF (
ALLOCATED(bs_env%task_Delta_R))
DEALLOCATE (bs_env%task_Delta_R)
371 IF (
ALLOCATED(bs_env%nblocks_3c))
DEALLOCATE (bs_env%nblocks_3c)
372 IF (
ALLOCATED(bs_env%skip_DR_chi))
DEALLOCATE (bs_env%skip_DR_chi)
373 IF (
ALLOCATED(bs_env%skip_DR_Sigma))
DEALLOCATE (bs_env%skip_DR_Sigma)
374 IF (
ALLOCATED(bs_env%skip_DR_R_R2_MxM_chi))
DEALLOCATE (bs_env%skip_DR_R_R2_MxM_chi)
375 IF (
ALLOCATED(bs_env%skip_DR_R1_R_MxM_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_R_MxM_Sigma)
376 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Goccx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Goccx3c_chi)
377 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Gvirx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Gvirx3c_chi)
378 IF (
ALLOCATED(bs_env%skip_DR_R1_S2_Gx3c_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_S2_Gx3c_Sigma)
402 CALL safe_fm_destroy_1d(bs_env%fm_G_S)
403 CALL safe_fm_destroy_1d(bs_env%fm_Sigma_x_R)
404 CALL safe_fm_destroy_2d(bs_env%fm_V_xc_R)
405 CALL safe_fm_destroy_2d(bs_env%fm_chi_R_t)
406 CALL safe_fm_destroy_2d(bs_env%fm_MWM_R_t)
407 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_neg_tau)
408 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_pos_tau)
410 CALL t_destroy_2d(bs_env%t_3c_int)
412 CALL release_dbcsr_p_type(bs_env%mat_ao_ao)
413 CALL release_dbcsr_p_type(bs_env%mat_RI_RI)
414 CALL safe_dbcsr_deallocate_matrix_set_1d(bs_env%mat_chi_Gamma_tau)
416 CALL release_dbcsr_p_type(bs_env%mat_ao_ao_tensor)
417 CALL release_dbcsr_p_type(bs_env%mat_RI_RI_tensor)
419 CALL safe_cfm_destroy_1d(bs_env%cfm_s_kp)
420 CALL safe_cfm_destroy_2d(bs_env%cfm_ks_kp)
421 CALL safe_cfm_destroy_2d(bs_env%cfm_mo_coeff_kp)
426 CALL safe_dbt_destroy(bs_env%t_G)
427 CALL safe_dbt_destroy(bs_env%t_chi)
428 CALL safe_dbt_destroy(bs_env%t_W)
429 CALL safe_dbt_destroy(bs_env%t_RI_AO__AO)
430 CALL safe_dbt_destroy(bs_env%t_RI__AO_AO)
432 IF (
ALLOCATED(bs_env%basis_set_AO))
DEALLOCATE (bs_env%basis_set_AO)
433 IF (
ALLOCATED(bs_env%basis_set_RI))
DEALLOCATE (bs_env%basis_set_RI)
436 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
440 CALL safe_cfm_destroy_1d(bs_env%cfm_SOC_spinor_ao)
444 CALL timestop(handle)