157 LOGICAL :: do_gw = .false., &
160 do_gw_ri_rs = .false., &
161 do_dos_pdos = .false., &
170 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: eigenval_scf_gamma
171 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: eigenval_scf, &
182 LOGICAL :: do_hedin_shift = .false.
194 INTEGER(KIND=int_8) :: dbcsr_msg_elem_limit = &
195 int(huge(0_int_4),
int_8)
199 INTEGER :: n_mo_retained = -1
200 INTEGER :: n_ao = -1, &
204 max_ao_bf_per_atom = -1
205 INTEGER,
DIMENSION(:),
ALLOCATABLE :: i_ao_start_from_atom, &
206 i_ao_end_from_atom, &
207 i_ri_start_from_atom, &
209 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: min_ri_idx_from_ao_ao_atom, &
210 max_ri_idx_from_ao_ao_atom, &
211 min_ao_idx_from_ri_ao_atom, &
212 max_ao_idx_from_ri_ao_atom
213 INTEGER,
DIMENSION(2) :: n_occ = -1, &
215 REAL(kind=
dp) :: spin_degeneracy = -1.0_dp
216 REAL(kind=
dp),
DIMENSION(2) :: e_fermi = -1.0_dp
219 INTEGER,
DIMENSION(:),
POINTER :: nkp_grid_dos_input => null(), &
220 nkp_grid_chi_eps_w_input => null()
221 INTEGER,
DIMENSION(3) :: nkp_grid_chi_eps_w_orig = -1, &
222 nkp_grid_chi_eps_w_extra = -1
223 INTEGER :: nkp_chi_eps_w_orig = -1, &
224 nkp_chi_eps_w_extra = -1, &
225 nkp_chi_eps_w_orig_plus_extra = -1, &
226 nkp_chi_eps_w_batch = -1, &
227 num_chi_eps_w_batches = -1, &
228 size_lattice_sum_v = -1
230 kpoints_dos => null()
231 LOGICAL :: approx_kp_extrapol = .false.
233 REAL(kind=
dp) :: wkp_orig = -1.0_dp
234 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: wkp_s_p, &
236 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l_ri
237 INTEGER :: input_kp_bs_npoints = -1, &
238 input_kp_bs_n_sp_pts = -1, &
239 nkp_bs_and_dos = -1, &
242 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: xkp_special
245 INTEGER :: small_cell_full_kp_or_large_cell_gamma = -1, &
247 INTEGER,
DIMENSION(3) :: periodic = -1
248 REAL(kind=
dp),
DIMENSION(3, 3) :: hmat = -1.0_dp
251 INTEGER :: num_time_freq_points = -1, &
252 num_freq_points_fit = -1
253 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: imag_time_points, &
254 imag_time_weights_freq_zero, &
257 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: weights_cos_t_to_w, &
258 weights_cos_w_to_t, &
260 INTEGER :: nparam_pade = -1, &
261 num_points_per_magnitude = -1
262 REAL(kind=
dp) :: freq_max_fit = -1.0_dp, &
263 input_regularization_minimax = -1.0_dp, &
264 regularization_minimax = -1.0_dp, &
265 stabilize_exp = -1.0_dp
268 REAL(kind=
dp) :: eps_filter = -1.0_dp, &
269 eps_atom_grid_2d_mat = -1.0_dp
272 REAL(kind=
dp) :: eps_eigval_mat_s = -1.0_dp, &
273 eps_eigval_mat_ri = -1.0_dp, &
274 input_regularization_ri = -1.0_dp, &
275 regularization_ri = -1.0_dp
298 TYPE(
dbcsr_p_type),
DIMENSION(:),
POINTER :: mat_chi_gamma_tau => null()
305#if defined(FTN_NO_DEFAULT_INIT)
306 TYPE(dbt_type) :: t_g, &
312 TYPE(dbt_type) :: t_g = dbt_type(), &
313 t_chi = dbt_type(), &
315 t_ri_ao__ao = dbt_type(), &
316 t_ri__ao_ao = dbt_type()
320 INTEGER :: group_size_tensor = -1, &
321 tensor_group_color = -1, &
322 num_tensor_groups = -1
323 REAL(kind=
dp) :: input_memory_per_proc_gb = -1.0_dp
325 para_env_tensor => null()
326 REAL(kind=
dp) :: occupation_3c_int = -1.0_dp, &
327 max_dist_ao_atoms = -1.0_dp, &
328 safety_factor_memory = -1.0_dp
331 INTEGER,
DIMENSION(2) :: atoms_i = -1, &
333 INTEGER :: n_atom_i = -1, &
334 n_intervals_i = -1, &
336 n_intervals_j = -1, &
337 n_atom_per_interval_ij = -1, &
338 n_intervals_inner_loop_atoms = -1, &
339 n_atom_per_il_interval = -1, &
342 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: i_atom_intervals, &
344 inner_loop_atom_intervals, &
347 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: skip_sigma_occ, &
351 INTEGER :: rtp_method = -1
354 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: read_chi, &
356 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: sigma_c_exists
357 LOGICAL :: all_w_exist = .false., &
358 sigma_x_exists = .false.
359 CHARACTER(LEN=3) :: chi_name =
"chi"
360 CHARACTER(LEN=6) :: w_time_name =
"W_time"
361 CHARACTER(LEN=7) :: sigma_x_name =
"Sigma_x"
362 CHARACTER(LEN=13) :: sigma_p_name =
"Sigma_pos_tau", &
363 sigma_n_name =
"Sigma_neg_tau"
364 CHARACTER(LEN=default_path_length) :: prefix =
""
365 INTEGER :: unit_nr = -1
369 DIMENSION(:),
ALLOCATABLE :: basis_set_ao, &
371 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sizes_ao, &
374 TYPE(libint_potential_type) :: ri_metric = libint_potential_type(), &
375 trunc_coulomb = libint_potential_type()
378 REAL(kind=
dp) :: soc_window_occ = -1.0_dp
379 REAL(kind=
dp) :: soc_window_virt = -1.0_dp
380 REAL(kind=
dp) :: soc_window_smearing = 1.0_dp/
evolt
382 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: mat_v_soc_xyz => null()
390 REAL(kind=
dp) :: energy_window_dos = -1.0_dp, &
391 energy_step_dos = -1.0_dp, &
392 broadening_dos = -1.0_dp
395 INTEGER :: int_ldos_xyz = -1
396 INTEGER,
DIMENSION(:),
POINTER :: bin_mesh => null()
397 INTEGER :: n_bins_max_for_printing = -1
398 REAL(kind=
dp) :: unit_ldos_int_z_inv_ang2_ev = -1.0_dp
401 INTEGER :: max_floquet_index = -1
402 REAL(kind=
dp),
DIMENSION(:),
POINTER :: floquet_polarisation => null(), &
403 floquet_phi => null()
404 REAL(kind=
dp) :: floquet_omega = -1.0_dp, &
405 floquet_amplitude = -1.0_dp, &
406 eps_floquet = -1.0_dp, &
407 broadening_floquet = -1.0_dp, &
408 energy_step_floquet = -1.0_dp, &
409 energy_window_floquet = -1.0_dp, &
410 floquet_mem_fill_fraction = -1.0_dp, &
411 floquet_temperature = -1.0_dp
412 CHARACTER(LEN=default_string_length) :: floquet_dos_file =
"", &
413 floquet_qe_file =
"", &
417 INTEGER :: nkp_scf_desymm = -1, &
419 nimages_scf_desymm = -1, &
422 kpoints_scf_desymm_2 => null()
423 INTEGER,
DIMENSION(3) :: cell_grid_scf_desymm = -1
424 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: index_to_cell_3c, &
425 index_to_cell_delta_r
426 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index_3c => null(), &
427 cell_to_index_delta_r => null()
428 REAL(kind=
dp) :: heuristic_filter_factor = -1.0_dp
431 INTEGER :: n_tasks_delta_r_local = -1
432 INTEGER,
DIMENSION(:),
ALLOCATABLE :: task_delta_r
433 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: nblocks_3c
434 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: skip_dr_chi, &
436 LOGICAL,
DIMENSION(:, :, :),
ALLOCATABLE :: skip_dr_r_r2_mxm_chi, &
437 skip_dr_r1_r_mxm_sigma, &
438 skip_dr_r12_s_goccx3c_chi, &
439 skip_dr_r12_s_gvirx3c_chi, &
440 skip_dr_r1_s2_gx3c_sigma
444 TYPE(
cp_cfm_type),
DIMENSION(:, :),
ALLOCATABLE :: cfm_mo_coeff_kp, &
448 TYPE(
cp_fm_type),
DIMENSION(:, :),
ALLOCATABLE :: fm_v_xc_r, &
451 TYPE(
cp_fm_type),
DIMENSION(:, :, :),
ALLOCATABLE :: fm_sigma_c_r_neg_tau, &
453 REAL(kind=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: v_xc_n
454 TYPE(dbt_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_int
471 CHARACTER(LEN=*),
PARAMETER :: routinen =
'bs_env_release'
475 CALL timeset(routinen, handle)
477 cpassert(
ASSOCIATED(bs_env))
479 CALL safe_kpoints_release(bs_env%kpoints_chi_eps_W)
480 CALL safe_kpoints_release(bs_env%kpoints_DOS)
481 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm)
482 CALL safe_kpoints_release(bs_env%kpoints_scf_desymm_2)
484 IF (
ALLOCATED(bs_env%wkp_s_p))
DEALLOCATE (bs_env%wkp_s_p)
485 IF (
ALLOCATED(bs_env%wkp_no_extra))
DEALLOCATE (bs_env%wkp_no_extra)
486 IF (
ALLOCATED(bs_env%l_RI))
DEALLOCATE (bs_env%l_RI)
487 IF (
ALLOCATED(bs_env%xkp_special))
DEALLOCATE (bs_env%xkp_special)
488 IF (
ALLOCATED(bs_env%imag_time_points))
DEALLOCATE (bs_env%imag_time_points)
489 IF (
ALLOCATED(bs_env%imag_time_weights_freq_zero))
DEALLOCATE (bs_env%imag_time_weights_freq_zero)
490 IF (
ALLOCATED(bs_env%imag_freq_points))
DEALLOCATE (bs_env%imag_freq_points)
491 IF (
ALLOCATED(bs_env%eigenval_scf_Gamma))
DEALLOCATE (bs_env%eigenval_scf_Gamma)
492 IF (
ALLOCATED(bs_env%eigenval_scf))
DEALLOCATE (bs_env%eigenval_scf)
493 IF (
ALLOCATED(bs_env%eigenval_GW))
DEALLOCATE (bs_env%eigenval_GW)
494 IF (
ALLOCATED(bs_env%eigenval_G0W0))
DEALLOCATE (bs_env%eigenval_G0W0)
495 IF (
ALLOCATED(bs_env%eigenval_HF))
DEALLOCATE (bs_env%eigenval_HF)
496 IF (
ALLOCATED(bs_env%eigenval_evGW0))
DEALLOCATE (bs_env%eigenval_evGW0)
497 IF (
ALLOCATED(bs_env%i_ao_start_from_atom))
DEALLOCATE (bs_env%i_ao_start_from_atom)
498 IF (
ALLOCATED(bs_env%i_ao_end_from_atom))
DEALLOCATE (bs_env%i_ao_end_from_atom)
499 IF (
ALLOCATED(bs_env%i_RI_start_from_atom))
DEALLOCATE (bs_env%i_RI_start_from_atom)
500 IF (
ALLOCATED(bs_env%i_RI_end_from_atom))
DEALLOCATE (bs_env%i_RI_end_from_atom)
501 IF (
ALLOCATED(bs_env%min_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%min_RI_idx_from_AO_AO_atom)
502 IF (
ALLOCATED(bs_env%max_RI_idx_from_AO_AO_atom))
DEALLOCATE (bs_env%max_RI_idx_from_AO_AO_atom)
503 IF (
ALLOCATED(bs_env%min_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%min_AO_idx_from_RI_AO_atom)
504 IF (
ALLOCATED(bs_env%max_AO_idx_from_RI_AO_atom))
DEALLOCATE (bs_env%max_AO_idx_from_RI_AO_atom)
505 IF (
ALLOCATED(bs_env%i_atom_intervals))
DEALLOCATE (bs_env%i_atom_intervals)
506 IF (
ALLOCATED(bs_env%j_atom_intervals))
DEALLOCATE (bs_env%j_atom_intervals)
507 IF (
ALLOCATED(bs_env%atoms_i_t_group))
DEALLOCATE (bs_env%atoms_i_t_group)
508 IF (
ALLOCATED(bs_env%atoms_j_t_group))
DEALLOCATE (bs_env%atoms_j_t_group)
509 IF (
ALLOCATED(bs_env%skip_Sigma_occ))
DEALLOCATE (bs_env%skip_Sigma_occ)
510 IF (
ALLOCATED(bs_env%skip_Sigma_vir))
DEALLOCATE (bs_env%skip_Sigma_vir)
511 IF (
ALLOCATED(bs_env%skip_chi))
DEALLOCATE (bs_env%skip_chi)
512 IF (
ALLOCATED(bs_env%read_chi))
DEALLOCATE (bs_env%read_chi)
513 IF (
ALLOCATED(bs_env%calc_chi))
DEALLOCATE (bs_env%calc_chi)
514 IF (
ALLOCATED(bs_env%Sigma_c_exists))
DEALLOCATE (bs_env%Sigma_c_exists)
515 IF (
ALLOCATED(bs_env%sizes_AO))
DEALLOCATE (bs_env%sizes_AO)
516 IF (
ALLOCATED(bs_env%sizes_RI))
DEALLOCATE (bs_env%sizes_RI)
517 IF (
ALLOCATED(bs_env%index_to_cell_3c))
DEALLOCATE (bs_env%index_to_cell_3c)
518 IF (
ALLOCATED(bs_env%index_to_cell_Delta_R))
DEALLOCATE (bs_env%index_to_cell_Delta_R)
519 IF (
ASSOCIATED(bs_env%cell_to_index_3c))
DEALLOCATE (bs_env%cell_to_index_3c)
520 IF (
ASSOCIATED(bs_env%cell_to_index_Delta_R))
DEALLOCATE (bs_env%cell_to_index_Delta_R)
521 IF (
ALLOCATED(bs_env%task_Delta_R))
DEALLOCATE (bs_env%task_Delta_R)
522 IF (
ALLOCATED(bs_env%nblocks_3c))
DEALLOCATE (bs_env%nblocks_3c)
523 IF (
ALLOCATED(bs_env%skip_DR_chi))
DEALLOCATE (bs_env%skip_DR_chi)
524 IF (
ALLOCATED(bs_env%skip_DR_Sigma))
DEALLOCATE (bs_env%skip_DR_Sigma)
525 IF (
ALLOCATED(bs_env%skip_DR_R_R2_MxM_chi))
DEALLOCATE (bs_env%skip_DR_R_R2_MxM_chi)
526 IF (
ALLOCATED(bs_env%skip_DR_R1_R_MxM_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_R_MxM_Sigma)
527 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Goccx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Goccx3c_chi)
528 IF (
ALLOCATED(bs_env%skip_DR_R12_S_Gvirx3c_chi))
DEALLOCATE (bs_env%skip_DR_R12_S_Gvirx3c_chi)
529 IF (
ALLOCATED(bs_env%skip_DR_R1_S2_Gx3c_Sigma))
DEALLOCATE (bs_env%skip_DR_R1_S2_Gx3c_Sigma)
555 CALL safe_fm_destroy_1d(bs_env%fm_G_S)
556 CALL safe_fm_destroy_1d(bs_env%fm_Sigma_x_R)
557 CALL safe_fm_destroy_2d(bs_env%fm_V_xc_R)
558 CALL safe_fm_destroy_2d(bs_env%fm_chi_R_t)
559 CALL safe_fm_destroy_2d(bs_env%fm_MWM_R_t)
560 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_neg_tau)
561 CALL safe_fm_destroy_3d(bs_env%fm_Sigma_c_R_pos_tau)
563 CALL t_destroy_2d(bs_env%t_3c_int)
565 CALL release_dbcsr_p_type(bs_env%mat_ao_ao)
566 CALL release_dbcsr_p_type(bs_env%mat_RI_RI)
567 CALL safe_dbcsr_deallocate_matrix_set_1d(bs_env%mat_chi_Gamma_tau)
569 CALL release_dbcsr_p_type(bs_env%mat_ao_ao_tensor)
570 CALL release_dbcsr_p_type(bs_env%mat_RI_RI_tensor)
572 CALL safe_cfm_destroy_1d(bs_env%cfm_s_kp)
573 CALL safe_cfm_destroy_2d(bs_env%cfm_ks_kp)
574 CALL safe_cfm_destroy_2d(bs_env%cfm_mo_coeff_kp)
579 CALL safe_dbt_destroy(bs_env%t_G)
580 CALL safe_dbt_destroy(bs_env%t_chi)
581 CALL safe_dbt_destroy(bs_env%t_W)
582 CALL safe_dbt_destroy(bs_env%t_RI_AO__AO)
583 CALL safe_dbt_destroy(bs_env%t_RI__AO_AO)
585 IF (
ALLOCATED(bs_env%basis_set_AO))
DEALLOCATE (bs_env%basis_set_AO)
586 IF (
ALLOCATED(bs_env%basis_set_RI))
DEALLOCATE (bs_env%basis_set_RI)
589 CALL safe_dbcsr_deallocate_matrix_set_2d(bs_env%mat_V_SOC_xyz)
593 CALL safe_cfm_destroy_1d(bs_env%cfm_SOC_spinor_ao)
596 IF (bs_env%ri_rs%grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_phi_mu_l)
597 IF (bs_env%ri_rs%grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_Z_lP)
598 IF (bs_env%ri_rs%V_grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_V_aux_rtbse)
599 IF (bs_env%ri_rs%W0_grid_built)
CALL dbcsr_release(bs_env%ri_rs%mat_W0_grid_rtbse)
600 IF (
ALLOCATED(bs_env%ri_rs%grid_points))
DEALLOCATE (bs_env%ri_rs%grid_points)
601 IF (
ALLOCATED(bs_env%ri_rs%grid_cache))
DEALLOCATE (bs_env%ri_rs%grid_cache)
602 IF (
ALLOCATED(bs_env%ri_rs%radius_ao_per_atom))
DEALLOCATE (bs_env%ri_rs%radius_ao_per_atom)
603 IF (
ALLOCATED(bs_env%ri_rs%radius_ri_per_atom))
DEALLOCATE (bs_env%ri_rs%radius_ri_per_atom)
604 IF (
ALLOCATED(bs_env%ri_rs%chunk_centroids))
DEALLOCATE (bs_env%ri_rs%chunk_centroids)
605 IF (
ALLOCATED(bs_env%ri_rs%atom_centers))
DEALLOCATE (bs_env%ri_rs%atom_centers)
606 IF (
ALLOCATED(bs_env%ri_rs%grid_atom_boundaries))
DEALLOCATE (bs_env%ri_rs%grid_atom_boundaries)
607 NULLIFY (bs_env%ri_rs%atomic_kind_set, bs_env%ri_rs%cell, bs_env%ri_rs%particle_set)
608 IF (
ALLOCATED(bs_env%ri_rs%pan_first))
DEALLOCATE (bs_env%ri_rs%pan_first)
609 IF (
ALLOCATED(bs_env%ri_rs%pan_last))
DEALLOCATE (bs_env%ri_rs%pan_last)
613 CALL timestop(handle)