87 LOGICAL :: do_gw = .false., &
94 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_gamma
95 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: eigenval_scf, &
99 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_soc, &
107 LOGICAL :: do_hedin_shift = .false.
110 TYPE(ri_rs_env) :: ri_rs
113 INTEGER :: n_ao = -1, &
117 max_ao_bf_per_atom = -1
118 INTEGER,
DIMENSION(:),
ALLOCATABLE :: i_ao_start_from_atom, &
119 i_ao_end_from_atom, &
120 i_ri_start_from_atom, &
122 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: min_ri_idx_from_ao_ao_atom, &
123 max_ri_idx_from_ao_ao_atom, &
124 min_ao_idx_from_ri_ao_atom, &
125 max_ao_idx_from_ri_ao_atom
126 INTEGER,
DIMENSION(2) :: n_occ = -1, &
128 REAL(kind=
dp) :: spin_degeneracy = -1.0_dp
129 REAL(kind=
dp),
DIMENSION(2) :: e_fermi = -1.0_dp
132 INTEGER,
DIMENSION(:),
POINTER :: nkp_grid_dos_input => null(), &
133 nkp_grid_chi_eps_w_input => null()
134 INTEGER,
DIMENSION(3) :: nkp_grid_chi_eps_w_orig = -1, &
135 nkp_grid_chi_eps_w_extra = -1
136 INTEGER :: nkp_chi_eps_w_orig = -1, &
137 nkp_chi_eps_w_extra = -1, &
138 nkp_chi_eps_w_orig_plus_extra = -1, &
139 nkp_chi_eps_w_batch = -1, &
140 num_chi_eps_w_batches = -1, &
141 size_lattice_sum_v = -1
143 kpoints_dos => null()
144 LOGICAL :: approx_kp_extrapol = .false.
146 REAL(kind=
dp) :: wkp_orig = -1.0_dp
147 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: wkp_s_p, &
149 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l_ri
150 INTEGER :: input_kp_bs_npoints = -1, &
151 input_kp_bs_n_sp_pts = -1, &
152 nkp_bs_and_dos = -1, &
155 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: xkp_special
158 INTEGER :: small_cell_full_kp_or_large_cell_gamma = -1, &
160 INTEGER,
DIMENSION(3) :: periodic = -1
161 REAL(kind=
dp),
DIMENSION(3, 3) :: hmat = -1.0_dp
164 INTEGER :: num_time_freq_points = -1, &
165 num_freq_points_fit = -1
166 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: imag_time_points, &
167 imag_time_weights_freq_zero, &
170 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: weights_cos_t_to_w, &
171 weights_cos_w_to_t, &
173 INTEGER :: nparam_pade = -1, &
174 num_points_per_magnitude = -1
175 REAL(kind=
dp) :: freq_max_fit = -1.0_dp, &
176 input_regularization_minimax = -1.0_dp, &
177 regularization_minimax = -1.0_dp, &
178 stabilize_exp = -1.0_dp
181 REAL(kind=
dp) :: eps_filter = -1.0_dp, &
182 eps_atom_grid_2d_mat = -1.0_dp
185 REAL(kind=
dp) :: eps_eigval_mat_s = -1.0_dp, &
186 eps_eigval_mat_ri = -1.0_dp, &
187 input_regularization_ri = -1.0_dp, &
188 regularization_ri = -1.0_dp
211 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_chi_gamma_tau => null()
218#if defined(FTN_NO_DEFAULT_INIT)
219 TYPE(dbt_type) :: t_g, &
225 TYPE(dbt_type) :: t_g = dbt_type(), &
226 t_chi = dbt_type(), &
228 t_ri_ao__ao = dbt_type(), &
229 t_ri__ao_ao = dbt_type()
233 INTEGER :: group_size_tensor = -1, &
234 tensor_group_color = -1, &
235 num_tensor_groups = -1
236 REAL(kind=
dp) :: input_memory_per_proc_gb = -1.0_dp
238 para_env_tensor => null()
239 REAL(kind=
dp) :: occupation_3c_int = -1.0_dp, &
240 max_dist_ao_atoms = -1.0_dp, &
241 safety_factor_memory = -1.0_dp
244 INTEGER,
DIMENSION(2) :: atoms_i = -1, &
246 INTEGER :: n_atom_i = -1, &
247 n_intervals_i = -1, &
249 n_intervals_j = -1, &
250 n_atom_per_interval_ij = -1, &
251 n_intervals_inner_loop_atoms = -1, &
252 n_atom_per_il_interval = -1, &
255 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: i_atom_intervals, &
257 inner_loop_atom_intervals, &
260 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: skip_sigma_occ, &
267 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: read_chi, &
269 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: sigma_c_exists
270 LOGICAL :: all_w_exist = .false., &
271 sigma_x_exists = .false.
272 CHARACTER(LEN=3) :: chi_name =
"chi"
273 CHARACTER(LEN=6) :: w_time_name =
"W_time"
274 CHARACTER(LEN=7) :: sigma_x_name =
"Sigma_x"
275 CHARACTER(LEN=13) :: sigma_p_name =
"Sigma_pos_tau", &
276 sigma_n_name =
"Sigma_neg_tau"
277 CHARACTER(LEN=default_path_length) :: prefix =
""
278 INTEGER :: unit_nr = -1, &
279 unit_nr_contract = -1
283 DIMENSION(:),
ALLOCATABLE :: basis_set_ao, &
285 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sizes_ao, &
292 REAL(kind=
dp) :: energy_window_soc = -1.0_dp
294 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_v_soc_xyz => null()
302 REAL(kind=
dp) :: energy_window_dos = -1.0_dp, &
303 energy_step_dos = -1.0_dp, &
304 broadening_dos = -1.0_dp
307 INTEGER :: int_ldos_xyz = -1
308 INTEGER,
DIMENSION(:),
POINTER :: bin_mesh => null()
309 INTEGER :: n_bins_max_for_printing = -1
310 REAL(kind=
dp) :: unit_ldos_int_z_inv_ang2_ev = -1.0_dp
313 INTEGER :: nkp_scf_desymm = -1, &
315 nimages_scf_desymm = -1, &
318 kpoints_scf_desymm_2 => null()
319 INTEGER,
DIMENSION(3) :: cell_grid_scf_desymm = -1
320 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: index_to_cell_3c, &
321 index_to_cell_delta_r
322 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index_3c => null(), &
323 cell_to_index_delta_r => null()
324 REAL(kind=
dp) :: heuristic_filter_factor = -1.0_dp
327 INTEGER :: n_tasks_delta_r_local = -1
328 INTEGER,
DIMENSION(:),
ALLOCATABLE :: task_delta_r
329 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: nblocks_3c
330 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: skip_dr_chi, &
332 LOGICAL,
DIMENSION(:, :, :),
ALLOCATABLE :: skip_dr_r_r2_mxm_chi, &
333 skip_dr_r1_r_mxm_sigma, &
334 skip_dr_r12_s_goccx3c_chi, &
335 skip_dr_r12_s_gvirx3c_chi, &
336 skip_dr_r1_s2_gx3c_sigma
340 TYPE(
cp_cfm_type),
DIMENSION(:, :),
ALLOCATABLE :: cfm_mo_coeff_kp, &
344 TYPE(
cp_fm_type),
DIMENSION(:, :),
ALLOCATABLE :: fm_v_xc_r, &
347 TYPE(
cp_fm_type),
DIMENSION(:, :, :),
ALLOCATABLE :: fm_sigma_c_r_neg_tau, &
349 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: v_xc_n
350 TYPE(dbt_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_int
353 LOGICAL :: print_contract = .false., &
354 print_contract_verbose = .false.
367 CHARACTER(LEN=*),
PARAMETER :: routinen =
'bs_env_release'
371 CALL timeset(routinen, handle)
373 cpassert(
ASSOCIATED(bs_env))
375 CALL safe_kpoints_release(bs_env%kpoints_chi_eps_W)
376 CALL safe_kpoints_release(bs_env%kpoints_DOS)
377 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm)
378 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm_2)
380 IF (
ALLOCATED(bs_env%wkp_s_p))
DEALLOCATE (bs_env%wkp_s_p)
381 IF (
ALLOCATED(bs_env%wkp_no_extra))
DEALLOCATE (bs_env%wkp_no_extra)
382 IF (
ALLOCATED(bs_env%l_RI))
DEALLOCATE (bs_env%l_RI)
383 IF (
ALLOCATED(bs_env%xkp_special))
DEALLOCATE (bs_env%xkp_special)
384 IF (
ALLOCATED(bs_env%imag_time_points))
DEALLOCATE (bs_env%imag_time_points)
385 IF (
ALLOCATED(bs_env%imag_time_weights_freq_zero))
DEALLOCATE (bs_env%imag_time_weights_freq_zero)
386 IF (
ALLOCATED(bs_env%imag_freq_points))
DEALLOCATE (bs_env%imag_freq_points)
387 IF (
ALLOCATED(bs_env%eigenval_scf_Gamma))
DEALLOCATE (bs_env%eigenval_scf_Gamma)
388 IF (
ALLOCATED(bs_env%eigenval_scf))
DEALLOCATE (bs_env%eigenval_scf)
389 IF (
ALLOCATED(bs_env%eigenval_G0W0))
DEALLOCATE (bs_env%eigenval_G0W0)
390 IF (
ALLOCATED(bs_env%eigenval_HF))
DEALLOCATE (bs_env%eigenval_HF)
391 IF (
ALLOCATED(bs_env%eigenval_scGW0))
DEALLOCATE (bs_env%eigenval_scGW0)
392 IF (
ALLOCATED(bs_env%eigenval_scf_soc))
DEALLOCATE (bs_env%eigenval_scf_soc)
393 IF (
ALLOCATED(bs_env%eigenval_G0W0_soc))
DEALLOCATE (bs_env%eigenval_G0W0_soc)
394 IF (
ALLOCATED(bs_env%i_ao_start_from_atom))
DEALLOCATE (bs_env%i_ao_start_from_atom)
395 IF (
ALLOCATED(bs_env%i_ao_end_from_atom))
DEALLOCATE (bs_env%i_ao_end_from_atom)
396 IF (
ALLOCATED(bs_env%i_RI_start_from_atom))
DEALLOCATE (bs_env%i_RI_start_from_atom)
397 IF (
ALLOCATED(bs_env%i_RI_end_from_atom))
DEALLOCATE (bs_env%i_RI_end_from_atom)
398 IF (
ALLOCATED(bs_env%min_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%min_RI_idx_from_AO_AO_atom)
399 IF (
ALLOCATED(bs_env%max_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%max_RI_idx_from_AO_AO_atom)
400 IF (
ALLOCATED(bs_env%min_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%min_AO_idx_from_RI_AO_atom)
401 IF (
ALLOCATED(bs_env%max_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%max_AO_idx_from_RI_AO_atom)
402 IF (
ALLOCATED(bs_env%i_atom_intervals))
DEALLOCATE (bs_env%i_atom_intervals)
403 IF (
ALLOCATED(bs_env%j_atom_intervals))
DEALLOCATE (bs_env%j_atom_intervals)
404 IF (
ALLOCATED(bs_env%atoms_i_t_group))
DEALLOCATE (bs_env%atoms_i_t_group)
405 IF (
ALLOCATED(bs_env%atoms_j_t_group))
DEALLOCATE (bs_env%atoms_j_t_group)
406 IF (
ALLOCATED(bs_env%skip_Sigma_occ))
DEALLOCATE (bs_env%skip_Sigma_occ)
407 IF (
ALLOCATED(bs_env%skip_Sigma_vir))
DEALLOCATE (bs_env%skip_Sigma_vir)
408 IF (
ALLOCATED(bs_env%skip_chi))
DEALLOCATE (bs_env%skip_chi)
409 IF (
ALLOCATED(bs_env%read_chi))
DEALLOCATE (bs_env%read_chi)
410 IF (
ALLOCATED(bs_env%calc_chi))
DEALLOCATE (bs_env%calc_chi)
411 IF (
ALLOCATED(bs_env%Sigma_c_exists))
DEALLOCATE (bs_env%Sigma_c_exists)
412 IF (
ALLOCATED(bs_env%sizes_AO))
DEALLOCATE (bs_env%sizes_AO)
413 IF (
ALLOCATED(bs_env%sizes_RI))
DEALLOCATE (bs_env%sizes_RI)
414 IF (
ALLOCATED(bs_env%index_to_cell_3c))
DEALLOCATE (bs_env%index_to_cell_3c)
415 IF (
ALLOCATED(bs_env%index_to_cell_Delta_R))
DEALLOCATE (bs_env%index_to_cell_Delta_R)
416 IF (
ASSOCIATED(bs_env%cell_to_index_3c))
DEALLOCATE (bs_env%cell_to_index_3c)
417 IF (
ASSOCIATED(bs_env%cell_to_index_Delta_R))
DEALLOCATE (bs_env%cell_to_index_Delta_R)
418 IF (
ALLOCATED(bs_env%task_Delta_R))
DEALLOCATE (bs_env%task_Delta_R)
419 IF (
ALLOCATED(bs_env%nblocks_3c))
DEALLOCATE (bs_env%nblocks_3c)
420 IF (
ALLOCATED(bs_env%skip_DR_chi))
DEALLOCATE (bs_env%skip_DR_chi)
421 IF (
ALLOCATED(bs_env%skip_DR_Sigma))
DEALLOCATE (bs_env%skip_DR_Sigma)
422 IF (
ALLOCATED(bs_env%skip_DR_R_R2_MxM_chi))
DEALLOCATE (bs_env%skip_DR_R_R2_MxM_chi)
423 IF (
ALLOCATED(bs_env%skip_DR_R1_R_MxM_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_R_MxM_Sigma)
424 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Goccx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Goccx3c_chi)
425 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Gvirx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Gvirx3c_chi)
426 IF (
ALLOCATED(bs_env%skip_DR_R1_S2_Gx3c_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_S2_Gx3c_Sigma)
450 CALL safe_fm_destroy_1d(bs_env%fm_G_S)
451 CALL safe_fm_destroy_1d(bs_env%fm_Sigma_x_R)
452 CALL safe_fm_destroy_2d(bs_env%fm_V_xc_R)
453 CALL safe_fm_destroy_2d(bs_env%fm_chi_R_t)
454 CALL safe_fm_destroy_2d(bs_env%fm_MWM_R_t)
455 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_neg_tau)
456 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_pos_tau)
458 CALL t_destroy_2d(bs_env%t_3c_int)
460 CALL release_dbcsr_p_type(bs_env%mat_ao_ao)
461 CALL release_dbcsr_p_type(bs_env%mat_RI_RI)
462 CALL safe_dbcsr_deallocate_matrix_set_1d(bs_env%mat_chi_Gamma_tau)
464 CALL release_dbcsr_p_type(bs_env%mat_ao_ao_tensor)
465 CALL release_dbcsr_p_type(bs_env%mat_RI_RI_tensor)
467 CALL safe_cfm_destroy_1d(bs_env%cfm_s_kp)
468 CALL safe_cfm_destroy_2d(bs_env%cfm_ks_kp)
469 CALL safe_cfm_destroy_2d(bs_env%cfm_mo_coeff_kp)
474 CALL safe_dbt_destroy(bs_env%t_G)
475 CALL safe_dbt_destroy(bs_env%t_chi)
476 CALL safe_dbt_destroy(bs_env%t_W)
477 CALL safe_dbt_destroy(bs_env%t_RI_AO__AO)
478 CALL safe_dbt_destroy(bs_env%t_RI__AO_AO)
480 IF (
ALLOCATED(bs_env%basis_set_AO))
DEALLOCATE (bs_env%basis_set_AO)
481 IF (
ALLOCATED(bs_env%basis_set_RI))
DEALLOCATE (bs_env%basis_set_RI)
484 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
488 CALL safe_cfm_destroy_1d(bs_env%cfm_SOC_spinor_ao)
491 IF (bs_env%do_gw_ri_rs)
CALL dbcsr_release(bs_env%ri_rs%mat_phi_mu_l)
492 IF (bs_env%do_gw_ri_rs)
CALL dbcsr_release(bs_env%ri_rs%mat_Z_lP)
493 IF (
ALLOCATED(bs_env%ri_rs%grid_points))
DEALLOCATE (bs_env%ri_rs%grid_points)
494 IF (
ALLOCATED(bs_env%ri_rs%grid_cache))
DEALLOCATE (bs_env%ri_rs%grid_cache)
498 CALL timestop(handle)