151 LOGICAL :: do_gw = .false., &
154 do_gw_ri_rs = .false., &
155 do_dos_pdos = .false., &
156 do_floquet = .false., &
157 do_static_cohsex = .false.
165 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_gamma
166 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: eigenval_scf, &
176 LOGICAL :: do_hedin_shift = .false.
183 REAL(kind=
dp) :: cohsex_scale_occ = 1.0_dp, &
184 cohsex_scale_virt = 1.0_dp
197 INTEGER(KIND=int_8) :: dbcsr_msg_elem_limit = &
198 int(huge(0_int_4),
int_8)
202 INTEGER :: n_mo_retained = -1
203 INTEGER :: n_ao = -1, &
207 max_ao_bf_per_atom = -1
208 INTEGER,
DIMENSION(:),
ALLOCATABLE :: i_ao_start_from_atom, &
209 i_ao_end_from_atom, &
210 i_ri_start_from_atom, &
212 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: min_ri_idx_from_ao_ao_atom, &
213 max_ri_idx_from_ao_ao_atom, &
214 min_ao_idx_from_ri_ao_atom, &
215 max_ao_idx_from_ri_ao_atom
216 INTEGER,
DIMENSION(2) :: n_occ = -1, &
218 INTEGER,
DIMENSION(2) :: n_electron = -1
222 INTEGER,
DIMENSION(2) :: n_occ_nosmear = -1
223 LOGICAL :: do_smear = .false.
224 INTEGER :: smear_method = -1
225 REAL(kind=
dp) :: smear_width = 0.0_dp
226 REAL(kind=
dp) :: fixed_mag_mom = -1.0_dp
227 REAL(kind=
dp) :: spin_degeneracy = -1.0_dp
228 REAL(kind=
dp),
DIMENSION(2) :: e_fermi = -1.0_dp
231 INTEGER,
DIMENSION(:),
POINTER :: nkp_grid_dos_input => null(), &
232 nkp_grid_chi_eps_w_input => null()
233 INTEGER,
DIMENSION(3) :: nkp_grid_chi_eps_w_orig = -1, &
234 nkp_grid_chi_eps_w_extra = -1
235 INTEGER :: nkp_chi_eps_w_orig = -1, &
236 nkp_chi_eps_w_orig_plus_extra = -1, &
237 nkp_chi_eps_w_batch = -1, &
238 num_chi_eps_w_batches = -1, &
239 size_lattice_sum_v = -1
241 kpoints_dos => null()
242 LOGICAL :: approx_kp_extrapol = .false.
244 REAL(kind=
dp) :: wkp_orig = -1.0_dp
245 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: wkp_s_p, &
247 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l_ri
248 INTEGER :: input_kp_bs_npoints = -1, &
249 input_kp_bs_n_sp_pts = -1, &
250 nkp_bs_and_dos = -1, &
253 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: xkp_special
256 INTEGER :: gw_implementation = -1, &
258 INTEGER,
DIMENSION(3) :: periodic = -1
259 LOGICAL :: do_periodic = .false.
260 REAL(kind=
dp),
DIMENSION(3, 3) :: hmat = -1.0_dp
263 INTEGER :: num_time_freq_points = -1, &
264 num_freq_points_fit = -1
266 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: imag_freq_points_fit
267 INTEGER :: nparam_pade = -1, &
268 num_points_per_magnitude = -1
269 REAL(kind=
dp) :: freq_max_fit = -1.0_dp, &
270 input_regularization_minimax = -1.0_dp, &
271 regularization_minimax = -1.0_dp, &
272 stabilize_exp = -1.0_dp
275 REAL(kind=
dp) :: eps_filter = -1.0_dp, &
276 eps_atom_grid_2d_mat = -1.0_dp
279 REAL(kind=
dp) :: eps_eigval_mat_s = -1.0_dp, &
280 eps_eigval_mat_ri = -1.0_dp, &
281 input_regularization_ri = -1.0_dp, &
282 regularization_ri = -1.0_dp
305 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_chi_gamma_tau => null()
312#if defined(FTN_NO_DEFAULT_INIT)
313 TYPE(dbt_type) :: t_g, &
319 TYPE(dbt_type) :: t_g = dbt_type(), &
320 t_chi = dbt_type(), &
322 t_ri_ao__ao = dbt_type(), &
323 t_ri__ao_ao = dbt_type()
327 INTEGER :: group_size_tensor = -1, &
328 tensor_group_color = -1, &
329 num_tensor_groups = -1
330 REAL(kind=
dp) :: input_memory_per_proc_gb = -1.0_dp
331 LOGICAL :: auto_memory_per_proc = .false.
333 para_env_tensor => null()
334 REAL(kind=
dp) :: occupation_3c_int = -1.0_dp, &
335 max_dist_ao_atoms = -1.0_dp, &
336 safety_factor_memory = -1.0_dp
339 INTEGER,
DIMENSION(2) :: atoms_i = -1, &
341 INTEGER :: n_atom_i = -1, &
342 n_intervals_i = -1, &
344 n_intervals_j = -1, &
345 n_intervals_inner_loop_atoms = -1, &
348 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: i_atom_intervals, &
350 inner_loop_atom_intervals, &
353 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: skip_sigma_occ, &
357 INTEGER :: rtp_method = -1
360 LOGICAL :: keep_w_freq_zero = .false., &
364 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: read_chi, &
366 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: sigma_c_exists
367 LOGICAL :: all_w_exist = .false., &
368 sigma_x_exists = .false., &
369 sigma_c_freq_zero_exists = .false.
370 CHARACTER(LEN=3) :: chi_name =
"chi"
371 CHARACTER(LEN=6) :: w_time_name =
"W_time"
372 CHARACTER(LEN=7) :: sigma_x_name =
"Sigma_x"
373 CHARACTER(LEN=17) :: sigma_c_freq_zero_name =
"Sigma_c_freq_zero"
374 CHARACTER(LEN=13) :: sigma_p_name =
"Sigma_pos_tau", &
375 sigma_n_name =
"Sigma_neg_tau"
376 CHARACTER(LEN=default_path_length) :: prefix =
""
377 INTEGER :: unit_nr = -1
381 DIMENSION(:),
ALLOCATABLE :: basis_set_ao, &
383 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sizes_ao, &
386 TYPE(libint_potential_type) :: ri_metric = libint_potential_type(), &
387 trunc_coulomb = libint_potential_type()
390 REAL(kind=
dp) :: soc_window_occ = -1.0_dp
391 REAL(kind=
dp) :: soc_window_virt = -1.0_dp
392 REAL(kind=
dp) :: soc_window_smearing = 1.0_dp/
evolt
393 INTEGER :: soc_nbands_occ = -1.0_dp
394 INTEGER :: soc_nbands_virt = -1.0_dp
397 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_v_soc_xyz => null()
402 REAL(kind=
dp) :: energy_window_dos = -1.0_dp, &
403 energy_step_dos = -1.0_dp, &
404 broadening_dos = -1.0_dp
407 INTEGER :: int_ldos_xyz = -1
408 INTEGER,
DIMENSION(:),
POINTER :: bin_mesh => null()
409 INTEGER :: n_bins_max_for_printing = -1
410 REAL(kind=
dp) :: unit_ldos_int_z_inv_ang2_ev = -1.0_dp
413 INTEGER :: max_floquet_index = -1
414 INTEGER :: max_nmo_floquet = -1
415 REAL(kind=
dp),
DIMENSION(:),
POINTER :: floquet_polarisation => null(), &
416 floquet_phi => null()
417 REAL(kind=
dp) :: floquet_omega = -1.0_dp, &
418 floquet_amplitude = -1.0_dp, &
419 eps_floquet = -1.0_dp, &
420 broadening_floquet = -1.0_dp, &
421 energy_step_floquet = -1.0_dp, &
422 energy_window_floquet = -1.0_dp, &
423 floquet_mem_fill_fraction = -1.0_dp, &
424 floquet_temperature = -1.0_dp
425 CHARACTER(LEN=default_string_length) :: floquet_dos_file =
"", &
426 floquet_qe_file =
"", &
430 INTEGER :: nkp_scf_desymm = -1, &
432 nimages_scf_desymm = -1, &
435 INTEGER,
DIMENSION(3) :: cell_grid_scf_desymm = -1
436 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: index_to_cell_3c, &
437 index_to_cell_delta_r
438 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index_3c => null(), &
439 cell_to_index_delta_r => null()
440 REAL(kind=
dp) :: heuristic_filter_factor = -1.0_dp
443 INTEGER :: n_tasks_delta_r_local = -1
444 INTEGER,
DIMENSION(:),
ALLOCATABLE :: task_delta_r
445 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: nblocks_3c
446 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: skip_dr_chi, &
448 LOGICAL,
DIMENSION(:, :, :),
ALLOCATABLE :: skip_dr_r_r2_mxm_chi, &
449 skip_dr_r1_r_mxm_sigma, &
450 skip_dr_r12_s_goccx3c_chi, &
451 skip_dr_r12_s_gvirx3c_chi, &
452 skip_dr_r1_s2_gx3c_sigma
456 TYPE(
cp_cfm_type),
DIMENSION(:, :),
ALLOCATABLE :: cfm_mo_coeff_kp, &
460 TYPE(
cp_fm_type),
DIMENSION(:, :),
ALLOCATABLE :: fm_v_xc_r, &
463 TYPE(
cp_fm_type),
DIMENSION(:, :, :),
ALLOCATABLE :: fm_sigma_c_r_neg_tau, &
465 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: v_xc_n
466 TYPE(dbt_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_int
483 CHARACTER(LEN=*),
PARAMETER :: routinen =
'bs_env_release'
487 CALL timeset(routinen, handle)
489 cpassert(
ASSOCIATED(bs_env))
491 CALL safe_kpoints_release(bs_env%kpoints_chi_eps_W)
492 CALL safe_kpoints_release(bs_env%kpoints_DOS)
493 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm)
495 IF (
ALLOCATED(bs_env%wkp_s_p))
DEALLOCATE (bs_env%wkp_s_p)
496 IF (
ALLOCATED(bs_env%wkp_no_extra))
DEALLOCATE (bs_env%wkp_no_extra)
497 IF (
ALLOCATED(bs_env%l_RI))
DEALLOCATE (bs_env%l_RI)
498 IF (
ALLOCATED(bs_env%xkp_special))
DEALLOCATE (bs_env%xkp_special)
500 IF (
ALLOCATED(bs_env%eigenval_scf_Gamma))
DEALLOCATE (bs_env%eigenval_scf_Gamma)
501 IF (
ALLOCATED(bs_env%eigenval_scf))
DEALLOCATE (bs_env%eigenval_scf)
502 IF (
ALLOCATED(bs_env%eigenval_GW))
DEALLOCATE (bs_env%eigenval_GW)
503 IF (
ALLOCATED(bs_env%eigenval_G0W0))
DEALLOCATE (bs_env%eigenval_G0W0)
504 IF (
ALLOCATED(bs_env%eigenval_HF))
DEALLOCATE (bs_env%eigenval_HF)
505 IF (
ALLOCATED(bs_env%eigenval_evGW0))
DEALLOCATE (bs_env%eigenval_evGW0)
506 IF (
ALLOCATED(bs_env%i_ao_start_from_atom))
DEALLOCATE (bs_env%i_ao_start_from_atom)
507 IF (
ALLOCATED(bs_env%i_ao_end_from_atom))
DEALLOCATE (bs_env%i_ao_end_from_atom)
508 IF (
ALLOCATED(bs_env%i_RI_start_from_atom))
DEALLOCATE (bs_env%i_RI_start_from_atom)
509 IF (
ALLOCATED(bs_env%i_RI_end_from_atom))
DEALLOCATE (bs_env%i_RI_end_from_atom)
510 IF (
ALLOCATED(bs_env%min_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%min_RI_idx_from_AO_AO_atom)
511 IF (
ALLOCATED(bs_env%max_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%max_RI_idx_from_AO_AO_atom)
512 IF (
ALLOCATED(bs_env%min_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%min_AO_idx_from_RI_AO_atom)
513 IF (
ALLOCATED(bs_env%max_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%max_AO_idx_from_RI_AO_atom)
514 IF (
ALLOCATED(bs_env%i_atom_intervals))
DEALLOCATE (bs_env%i_atom_intervals)
515 IF (
ALLOCATED(bs_env%j_atom_intervals))
DEALLOCATE (bs_env%j_atom_intervals)
516 IF (
ALLOCATED(bs_env%atoms_i_t_group))
DEALLOCATE (bs_env%atoms_i_t_group)
517 IF (
ALLOCATED(bs_env%atoms_j_t_group))
DEALLOCATE (bs_env%atoms_j_t_group)
518 IF (
ALLOCATED(bs_env%skip_Sigma_occ))
DEALLOCATE (bs_env%skip_Sigma_occ)
519 IF (
ALLOCATED(bs_env%skip_Sigma_vir))
DEALLOCATE (bs_env%skip_Sigma_vir)
520 IF (
ALLOCATED(bs_env%skip_chi))
DEALLOCATE (bs_env%skip_chi)
521 IF (
ALLOCATED(bs_env%read_chi))
DEALLOCATE (bs_env%read_chi)
522 IF (
ALLOCATED(bs_env%calc_chi))
DEALLOCATE (bs_env%calc_chi)
523 IF (
ALLOCATED(bs_env%Sigma_c_exists))
DEALLOCATE (bs_env%Sigma_c_exists)
524 IF (
ALLOCATED(bs_env%sizes_AO))
DEALLOCATE (bs_env%sizes_AO)
525 IF (
ALLOCATED(bs_env%sizes_RI))
DEALLOCATE (bs_env%sizes_RI)
526 IF (
ALLOCATED(bs_env%index_to_cell_3c))
DEALLOCATE (bs_env%index_to_cell_3c)
527 IF (
ALLOCATED(bs_env%index_to_cell_Delta_R))
DEALLOCATE (bs_env%index_to_cell_Delta_R)
528 IF (
ASSOCIATED(bs_env%cell_to_index_3c))
DEALLOCATE (bs_env%cell_to_index_3c)
529 IF (
ASSOCIATED(bs_env%cell_to_index_Delta_R))
DEALLOCATE (bs_env%cell_to_index_Delta_R)
530 IF (
ALLOCATED(bs_env%task_Delta_R))
DEALLOCATE (bs_env%task_Delta_R)
531 IF (
ALLOCATED(bs_env%nblocks_3c))
DEALLOCATE (bs_env%nblocks_3c)
532 IF (
ALLOCATED(bs_env%skip_DR_chi))
DEALLOCATE (bs_env%skip_DR_chi)
533 IF (
ALLOCATED(bs_env%skip_DR_Sigma))
DEALLOCATE (bs_env%skip_DR_Sigma)
534 IF (
ALLOCATED(bs_env%skip_DR_R_R2_MxM_chi))
DEALLOCATE (bs_env%skip_DR_R_R2_MxM_chi)
535 IF (
ALLOCATED(bs_env%skip_DR_R1_R_MxM_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_R_MxM_Sigma)
536 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Goccx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Goccx3c_chi)
537 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Gvirx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Gvirx3c_chi)
538 IF (
ALLOCATED(bs_env%skip_DR_R1_S2_Gx3c_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_S2_Gx3c_Sigma)
563 CALL safe_fm_destroy_1d(bs_env%fm_G_S)
564 CALL safe_fm_destroy_1d(bs_env%fm_Sigma_x_R)
565 CALL safe_fm_destroy_2d(bs_env%fm_V_xc_R)
566 CALL safe_fm_destroy_2d(bs_env%fm_chi_R_t)
567 CALL safe_fm_destroy_2d(bs_env%fm_MWM_R_t)
568 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_neg_tau)
569 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_pos_tau)
571 CALL t_destroy_2d(bs_env%t_3c_int)
573 CALL release_dbcsr_p_type(bs_env%mat_ao_ao)
574 CALL release_dbcsr_p_type(bs_env%mat_RI_RI)
575 CALL safe_dbcsr_deallocate_matrix_set_1d(bs_env%mat_chi_Gamma_tau)
577 CALL release_dbcsr_p_type(bs_env%mat_ao_ao_tensor)
578 CALL release_dbcsr_p_type(bs_env%mat_RI_RI_tensor)
580 CALL safe_cfm_destroy_1d(bs_env%cfm_s_kp)
581 CALL safe_cfm_destroy_2d(bs_env%cfm_ks_kp)
582 CALL safe_cfm_destroy_2d(bs_env%cfm_mo_coeff_kp)
587 CALL safe_dbt_destroy(bs_env%t_G)
588 CALL safe_dbt_destroy(bs_env%t_chi)
589 CALL safe_dbt_destroy(bs_env%t_W)
590 CALL safe_dbt_destroy(bs_env%t_RI_AO__AO)
591 CALL safe_dbt_destroy(bs_env%t_RI__AO_AO)
593 IF (
ALLOCATED(bs_env%basis_set_AO))
DEALLOCATE (bs_env%basis_set_AO)
594 IF (
ALLOCATED(bs_env%basis_set_RI))
DEALLOCATE (bs_env%basis_set_RI)
597 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
598 CALL safe_cfm_destroy_1d(bs_env%cfm_SOC_spinor_ao)
601 IF (bs_env%ri_rs%grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_phi_mu_l)
602 IF (bs_env%ri_rs%grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_Z_lP)
603 IF (bs_env%ri_rs%V_grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_V_aux_rtbse)
604 IF (bs_env%ri_rs%W0_grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_W0_grid_rtbse)
605 IF (
ALLOCATED(bs_env%ri_rs%grid_points))
DEALLOCATE (bs_env%ri_rs%grid_points)
606 IF (
ALLOCATED(bs_env%ri_rs%atomic_grids))
DEALLOCATE (bs_env%ri_rs%atomic_grids)
607 IF (
ALLOCATED(bs_env%ri_rs%radius_ao_per_atom))
DEALLOCATE (bs_env%ri_rs%radius_ao_per_atom)
608 IF (
ALLOCATED(bs_env%ri_rs%radius_ri_per_atom))
DEALLOCATE (bs_env%ri_rs%radius_ri_per_atom)
609 IF (
ALLOCATED(bs_env%ri_rs%chunk_centroids))
DEALLOCATE (bs_env%ri_rs%chunk_centroids)
610 IF (
ALLOCATED(bs_env%ri_rs%grid_atom_boundaries))
DEALLOCATE (bs_env%ri_rs%grid_atom_boundaries)
611 NULLIFY (bs_env%ri_rs%atomic_kind_set, bs_env%ri_rs%cell, bs_env%ri_rs%particle_set)
612 IF (
ALLOCATED(bs_env%ri_rs%pan_first))
DEALLOCATE (bs_env%ri_rs%pan_first)
613 IF (
ALLOCATED(bs_env%ri_rs%pan_last))
DEALLOCATE (bs_env%ri_rs%pan_last)
618 CALL timestop(handle)