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(:, :),
ALLOCATABLE :: min_ri_idx_from_ao_ao_atom, &
93 max_ri_idx_from_ao_ao_atom, &
94 min_ao_idx_from_ri_ao_atom, &
95 max_ao_idx_from_ri_ao_atom
96 INTEGER,
DIMENSION(2) :: n_occ = -1, &
98 REAL(kind=
dp) :: spin_degeneracy = -1.0_dp
99 REAL(kind=
dp),
DIMENSION(2) :: e_fermi = -1.0_dp
102 INTEGER,
DIMENSION(:),
POINTER :: nkp_grid_dos_input => null(), &
103 nkp_grid_chi_eps_w_input => null()
104 INTEGER,
DIMENSION(3) :: nkp_grid_chi_eps_w_orig = -1, &
105 nkp_grid_chi_eps_w_extra = -1
106 INTEGER :: nkp_chi_eps_w_orig = -1, &
107 nkp_chi_eps_w_extra = -1, &
108 nkp_chi_eps_w_orig_plus_extra = -1, &
109 nkp_chi_eps_w_batch = -1, &
110 num_chi_eps_w_batches = -1, &
111 size_lattice_sum_v = -1
113 kpoints_dos => null()
114 LOGICAL :: approx_kp_extrapol = .false.
116 REAL(kind=
dp) :: wkp_orig = -1.0_dp
117 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: wkp_s_p, &
119 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l_ri
120 INTEGER :: input_kp_bs_npoints = -1, &
121 input_kp_bs_n_sp_pts = -1, &
122 nkp_bs_and_dos = -1, &
125 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: xkp_special
128 INTEGER :: small_cell_full_kp_or_large_cell_gamma = -1, &
130 INTEGER,
DIMENSION(3) :: periodic = -1
131 REAL(kind=
dp),
DIMENSION(3, 3) :: hmat = -1.0_dp
134 INTEGER :: num_time_freq_points = -1, &
135 num_freq_points_fit = -1
136 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: imag_time_points, &
137 imag_time_weights_freq_zero, &
140 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: weights_cos_t_to_w, &
141 weights_cos_w_to_t, &
143 INTEGER :: nparam_pade = -1, &
144 num_points_per_magnitude = -1
145 REAL(kind=
dp) :: freq_max_fit = -1.0_dp, &
146 input_regularization_minimax = -1.0_dp, &
147 regularization_minimax = -1.0_dp, &
148 stabilize_exp = -1.0_dp
151 REAL(kind=
dp) :: eps_filter = -1.0_dp, &
152 eps_atom_grid_2d_mat = -1.0_dp
155 REAL(kind=
dp) :: eps_eigval_mat_s = -1.0_dp, &
156 eps_eigval_mat_ri = -1.0_dp, &
157 input_regularization_ri = -1.0_dp, &
158 regularization_ri = -1.0_dp
181 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_chi_gamma_tau => null()
188#if defined(FTN_NO_DEFAULT_INIT)
189 TYPE(dbt_type) :: t_g, &
195 TYPE(dbt_type) :: t_g = dbt_type(), &
196 t_chi = dbt_type(), &
198 t_ri_ao__ao = dbt_type(), &
199 t_ri__ao_ao = dbt_type()
203 INTEGER :: group_size_tensor = -1, &
204 tensor_group_color = -1, &
205 num_tensor_groups = -1
206 REAL(kind=
dp) :: input_memory_per_proc_gb = -1.0_dp
208 para_env_tensor => null()
209 REAL(kind=
dp) :: occupation_3c_int = -1.0_dp, &
210 max_dist_ao_atoms = -1.0_dp, &
211 safety_factor_memory = -1.0_dp
214 INTEGER,
DIMENSION(2) :: atoms_i = -1, &
216 INTEGER :: n_atom_i = -1, &
217 n_intervals_i = -1, &
219 n_intervals_j = -1, &
220 n_atom_per_interval_ij = -1, &
221 n_intervals_inner_loop_atoms = -1, &
222 n_atom_per_il_interval = -1, &
225 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: i_atom_intervals, &
227 inner_loop_atom_intervals, &
230 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: skip_sigma_occ, &
237 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: read_chi, &
239 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: sigma_c_exists
240 LOGICAL :: all_w_exist = .false., &
241 sigma_x_exists = .false.
242 CHARACTER(LEN=3) :: chi_name =
"chi"
243 CHARACTER(LEN=6) :: w_time_name =
"W_time"
244 CHARACTER(LEN=7) :: sigma_x_name =
"Sigma_x"
245 CHARACTER(LEN=13) :: sigma_p_name =
"Sigma_pos_tau", &
246 sigma_n_name =
"Sigma_neg_tau"
247 CHARACTER(LEN=default_string_length) :: prefix =
""
248 INTEGER :: unit_nr = -1, &
249 unit_nr_contract = -1
253 DIMENSION(:),
ALLOCATABLE :: basis_set_ao, &
255 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sizes_ao, &
262 REAL(kind=
dp) :: energy_window_soc = -1.0_dp
264 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_v_soc_xyz => null()
272 REAL(kind=
dp) :: energy_window_dos = -1.0_dp, &
273 energy_step_dos = -1.0_dp, &
274 broadening_dos = -1.0_dp
277 INTEGER :: int_ldos_xyz = -1
278 INTEGER,
DIMENSION(:),
POINTER :: bin_mesh => null()
279 INTEGER :: n_bins_max_for_printing = -1
280 REAL(kind=
dp) :: unit_ldos_int_z_inv_ang2_ev = -1.0_dp
283 INTEGER :: nkp_scf_desymm = -1, &
285 nimages_scf_desymm = -1, &
288 kpoints_scf_desymm_2 => null()
289 INTEGER,
DIMENSION(3) :: cell_grid_scf_desymm = -1
290 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: index_to_cell_3c, &
291 index_to_cell_delta_r
292 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index_3c => null(), &
293 cell_to_index_delta_r => null()
294 REAL(kind=
dp) :: heuristic_filter_factor = -1.0_dp
297 INTEGER :: n_tasks_delta_r_local = -1
298 INTEGER,
DIMENSION(:),
ALLOCATABLE :: task_delta_r
299 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: nblocks_3c
300 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: skip_dr_chi, &
302 LOGICAL,
DIMENSION(:, :, :),
ALLOCATABLE :: skip_dr_r_r2_mxm_chi, &
303 skip_dr_r1_r_mxm_sigma, &
304 skip_dr_r12_s_goccx3c_chi, &
305 skip_dr_r12_s_gvirx3c_chi, &
306 skip_dr_r1_s2_gx3c_sigma
310 TYPE(
cp_cfm_type),
DIMENSION(:, :),
ALLOCATABLE :: cfm_mo_coeff_kp, &
314 TYPE(
cp_fm_type),
DIMENSION(:, :),
ALLOCATABLE :: fm_v_xc_r, &
317 TYPE(
cp_fm_type),
DIMENSION(:, :, :),
ALLOCATABLE :: fm_sigma_c_r_neg_tau, &
319 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: v_xc_n
320 TYPE(dbt_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_int
323 LOGICAL :: print_contract = .false., &
324 print_contract_verbose = .false.
337 CHARACTER(LEN=*),
PARAMETER :: routinen =
'bs_env_release'
341 CALL timeset(routinen, handle)
343 cpassert(
ASSOCIATED(bs_env))
345 CALL safe_kpoints_release(bs_env%kpoints_chi_eps_W)
346 CALL safe_kpoints_release(bs_env%kpoints_DOS)
347 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm)
348 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm_2)
350 IF (
ALLOCATED(bs_env%wkp_s_p))
DEALLOCATE (bs_env%wkp_s_p)
351 IF (
ALLOCATED(bs_env%wkp_no_extra))
DEALLOCATE (bs_env%wkp_no_extra)
352 IF (
ALLOCATED(bs_env%l_RI))
DEALLOCATE (bs_env%l_RI)
353 IF (
ALLOCATED(bs_env%xkp_special))
DEALLOCATE (bs_env%xkp_special)
354 IF (
ALLOCATED(bs_env%imag_time_points))
DEALLOCATE (bs_env%imag_time_points)
355 IF (
ALLOCATED(bs_env%imag_time_weights_freq_zero))
DEALLOCATE (bs_env%imag_time_weights_freq_zero)
356 IF (
ALLOCATED(bs_env%imag_freq_points))
DEALLOCATE (bs_env%imag_freq_points)
357 IF (
ALLOCATED(bs_env%eigenval_scf_Gamma))
DEALLOCATE (bs_env%eigenval_scf_Gamma)
358 IF (
ALLOCATED(bs_env%eigenval_scf))
DEALLOCATE (bs_env%eigenval_scf)
359 IF (
ALLOCATED(bs_env%eigenval_G0W0))
DEALLOCATE (bs_env%eigenval_G0W0)
360 IF (
ALLOCATED(bs_env%eigenval_HF))
DEALLOCATE (bs_env%eigenval_HF)
361 IF (
ALLOCATED(bs_env%eigenval_scGW0))
DEALLOCATE (bs_env%eigenval_scGW0)
362 IF (
ALLOCATED(bs_env%eigenval_scf_soc))
DEALLOCATE (bs_env%eigenval_scf_soc)
363 IF (
ALLOCATED(bs_env%eigenval_G0W0_soc))
DEALLOCATE (bs_env%eigenval_G0W0_soc)
364 IF (
ALLOCATED(bs_env%i_ao_start_from_atom))
DEALLOCATE (bs_env%i_ao_start_from_atom)
365 IF (
ALLOCATED(bs_env%i_ao_end_from_atom))
DEALLOCATE (bs_env%i_ao_end_from_atom)
366 IF (
ALLOCATED(bs_env%i_RI_start_from_atom))
DEALLOCATE (bs_env%i_RI_start_from_atom)
367 IF (
ALLOCATED(bs_env%i_RI_end_from_atom))
DEALLOCATE (bs_env%i_RI_end_from_atom)
368 IF (
ALLOCATED(bs_env%min_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%min_RI_idx_from_AO_AO_atom)
369 IF (
ALLOCATED(bs_env%max_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%max_RI_idx_from_AO_AO_atom)
370 IF (
ALLOCATED(bs_env%min_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%min_AO_idx_from_RI_AO_atom)
371 IF (
ALLOCATED(bs_env%max_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%max_AO_idx_from_RI_AO_atom)
372 IF (
ALLOCATED(bs_env%i_atom_intervals))
DEALLOCATE (bs_env%i_atom_intervals)
373 IF (
ALLOCATED(bs_env%j_atom_intervals))
DEALLOCATE (bs_env%j_atom_intervals)
374 IF (
ALLOCATED(bs_env%atoms_i_t_group))
DEALLOCATE (bs_env%atoms_i_t_group)
375 IF (
ALLOCATED(bs_env%atoms_j_t_group))
DEALLOCATE (bs_env%atoms_j_t_group)
376 IF (
ALLOCATED(bs_env%skip_Sigma_occ))
DEALLOCATE (bs_env%skip_Sigma_occ)
377 IF (
ALLOCATED(bs_env%skip_Sigma_vir))
DEALLOCATE (bs_env%skip_Sigma_vir)
378 IF (
ALLOCATED(bs_env%skip_chi))
DEALLOCATE (bs_env%skip_chi)
379 IF (
ALLOCATED(bs_env%read_chi))
DEALLOCATE (bs_env%read_chi)
380 IF (
ALLOCATED(bs_env%calc_chi))
DEALLOCATE (bs_env%calc_chi)
381 IF (
ALLOCATED(bs_env%Sigma_c_exists))
DEALLOCATE (bs_env%Sigma_c_exists)
382 IF (
ALLOCATED(bs_env%sizes_AO))
DEALLOCATE (bs_env%sizes_AO)
383 IF (
ALLOCATED(bs_env%sizes_RI))
DEALLOCATE (bs_env%sizes_RI)
384 IF (
ALLOCATED(bs_env%index_to_cell_3c))
DEALLOCATE (bs_env%index_to_cell_3c)
385 IF (
ALLOCATED(bs_env%index_to_cell_Delta_R))
DEALLOCATE (bs_env%index_to_cell_Delta_R)
386 IF (
ASSOCIATED(bs_env%cell_to_index_3c))
DEALLOCATE (bs_env%cell_to_index_3c)
387 IF (
ASSOCIATED(bs_env%cell_to_index_Delta_R))
DEALLOCATE (bs_env%cell_to_index_Delta_R)
388 IF (
ALLOCATED(bs_env%task_Delta_R))
DEALLOCATE (bs_env%task_Delta_R)
389 IF (
ALLOCATED(bs_env%nblocks_3c))
DEALLOCATE (bs_env%nblocks_3c)
390 IF (
ALLOCATED(bs_env%skip_DR_chi))
DEALLOCATE (bs_env%skip_DR_chi)
391 IF (
ALLOCATED(bs_env%skip_DR_Sigma))
DEALLOCATE (bs_env%skip_DR_Sigma)
392 IF (
ALLOCATED(bs_env%skip_DR_R_R2_MxM_chi))
DEALLOCATE (bs_env%skip_DR_R_R2_MxM_chi)
393 IF (
ALLOCATED(bs_env%skip_DR_R1_R_MxM_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_R_MxM_Sigma)
394 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Goccx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Goccx3c_chi)
395 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Gvirx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Gvirx3c_chi)
396 IF (
ALLOCATED(bs_env%skip_DR_R1_S2_Gx3c_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_S2_Gx3c_Sigma)
420 CALL safe_fm_destroy_1d(bs_env%fm_G_S)
421 CALL safe_fm_destroy_1d(bs_env%fm_Sigma_x_R)
422 CALL safe_fm_destroy_2d(bs_env%fm_V_xc_R)
423 CALL safe_fm_destroy_2d(bs_env%fm_chi_R_t)
424 CALL safe_fm_destroy_2d(bs_env%fm_MWM_R_t)
425 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_neg_tau)
426 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_pos_tau)
428 CALL t_destroy_2d(bs_env%t_3c_int)
430 CALL release_dbcsr_p_type(bs_env%mat_ao_ao)
431 CALL release_dbcsr_p_type(bs_env%mat_RI_RI)
432 CALL safe_dbcsr_deallocate_matrix_set_1d(bs_env%mat_chi_Gamma_tau)
434 CALL release_dbcsr_p_type(bs_env%mat_ao_ao_tensor)
435 CALL release_dbcsr_p_type(bs_env%mat_RI_RI_tensor)
437 CALL safe_cfm_destroy_1d(bs_env%cfm_s_kp)
438 CALL safe_cfm_destroy_2d(bs_env%cfm_ks_kp)
439 CALL safe_cfm_destroy_2d(bs_env%cfm_mo_coeff_kp)
444 CALL safe_dbt_destroy(bs_env%t_G)
445 CALL safe_dbt_destroy(bs_env%t_chi)
446 CALL safe_dbt_destroy(bs_env%t_W)
447 CALL safe_dbt_destroy(bs_env%t_RI_AO__AO)
448 CALL safe_dbt_destroy(bs_env%t_RI__AO_AO)
450 IF (
ALLOCATED(bs_env%basis_set_AO))
DEALLOCATE (bs_env%basis_set_AO)
451 IF (
ALLOCATED(bs_env%basis_set_RI))
DEALLOCATE (bs_env%basis_set_RI)
454 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
458 CALL safe_cfm_destroy_1d(bs_env%cfm_SOC_spinor_ao)
462 CALL timestop(handle)