Documentation for module rpa_im_time

Rountines for RPA with imaginary time

source: rpa_im_time.F
Loading...

public Subroutines/Functions:

...
compute the matrix Q(it) (intermediate) and Fourier transform it directly to fm_mat_P_omega(iw) (output)
...
reflect from V = (A,B|B,A) to V_reflected = (B,A|A,B) where A belongs to the block of the molecule and B to the off diagonal block between molecule and image of the molecule
...
...

SUBROUTINEcommunicate_buffer(para_env, num_entries_rec, num_entries_send, buffer_rec, buffer_send, req_array, do_indx, do_msg)

...

Arguments:
POINTER
:: para_env ...
INTEGER,
ALLOCATABLE
:: num_entries_rec(:) ...
INTEGER,
ALLOCATABLE
:: num_entries_send(:) ...
ALLOCATABLE
:: buffer_rec(:) ...
ALLOCATABLE
:: buffer_send(:) ...
INTEGER,
POINTER
:: req_array(:,:) ...
LOGICAL,
OPTIONAL
:: do_indx ...
LOGICAL,
OPTIONAL
:: do_msg ...

SUBROUTINEcompute_mat_p_omega(mat_p_omega, fm_scaled_dm_occ_tau, fm_scaled_dm_virt_tau, fm_mo_coeff_occ, fm_mo_coeff_virt, fm_mo_coeff_occ_scaled, fm_mo_coeff_virt_scaled, mat_p_local, mat_p_global, mat_p_global_copy, mat_m_mu_pnu_occ, mat_m_mu_pnu_virt, matrix_s, mao_coeff_occ, mao_coeff_virt, ispin, mat_m_p_munu_occ, mat_m_p_munu_virt, mat_3c_overl_int_cut, mat_3c_overl_int_mao_for_occ_cut, mat_3c_overl_int_mao_for_virt_cut, mat_dm_loc_occ_cut, mat_dm_loc_virt_cut, weights_cos_tf_t_to_w, tj, tau_tj, e_fermi, eps_filter, alpha, eps_filter_im_time, eigenval, nmo, n_group_col, group_size_p, num_integ_points, jquad, cut_memory, cut_ri, unit_nr, mp2_env, para_env, para_env_sub, starts_array_prim_col, ends_array_prim_col, starts_array_prim_row, ends_array_prim_row, starts_array_prim_fullcol, ends_array_prim_fullcol, starts_array_prim_fullrow, ends_array_prim_fullrow, my_group_l_starts_im_time, my_group_l_sizes_im_time, offset_combi_block, starts_array_cm_mao_occ, starts_array_cm_mao_virt, ends_array_cm_mao_occ, ends_array_cm_mao_virt, mepos_p_from_ri_row, row_from_lll, cycle_due_to_sparse_dm, multiply_needed_occ, multiply_needed_virt, non_zero_blocks_3c, non_zero_blocks_3c_cut_col, buffer_mat_m, do_mao, stabilize_exp)

compute the matrix Q(it) (intermediate) and Fourier transform it directly to fm_mat_P_omega(iw) (output)

Arguments:
POINTER
:: mat_p_omega(:) ...
TYPE(cp_fm_type),
POINTER
:: fm_scaled_dm_occ_tau ...
TYPE(cp_fm_type),
POINTER
:: fm_scaled_dm_virt_tau ...
TYPE(cp_fm_type),
POINTER
:: fm_mo_coeff_occ ...
TYPE(cp_fm_type),
POINTER
:: fm_mo_coeff_virt ...
TYPE(cp_fm_type),
POINTER
:: fm_mo_coeff_occ_scaled ...
TYPE(cp_fm_type),
POINTER
:: fm_mo_coeff_virt_scaled ...
:: mat_p_local ...
:: mat_p_global ...
:: mat_p_global_copy ...
POINTER
:: mat_m_mu_pnu_occ(:) ...
POINTER
:: mat_m_mu_pnu_virt(:) ...
POINTER
:: matrix_s(:) ...
POINTER
:: mao_coeff_occ(:) ...
POINTER
:: mao_coeff_virt(:) ...
INTEGER
:: ispin ...
:: mat_m_p_munu_occ ...
:: mat_m_p_munu_virt ...
POINTER
:: mat_3c_overl_int_cut(:,:) ...
POINTER
:: mat_3c_overl_int_mao_for_occ_cut(:,:) ...
POINTER
:: mat_3c_overl_int_mao_for_virt_cut(:,:) ...
POINTER
:: mat_dm_loc_occ_cut(:,:) ...
POINTER
:: mat_dm_loc_virt_cut(:,:) ...
REAL(dp),
ALLOCATABLE
:: weights_cos_tf_t_to_w(:,:) ...
REAL(dp),
ALLOCATABLE
:: tj(:) ...
REAL(dp),
ALLOCATABLE
:: tau_tj(:) ...
REAL(dp)
:: e_fermi ...
REAL(dp)
:: eps_filter ...
REAL(dp)
:: alpha ...
REAL(dp)
:: eps_filter_im_time ...
REAL(dp)
:: eigenval(:) ...
INTEGER
:: nmo ...
INTEGER
:: n_group_col ...
INTEGER
:: group_size_p ...
INTEGER
:: num_integ_points ...
INTEGER
:: jquad ...
INTEGER
:: cut_memory ...
INTEGER
:: cut_ri ...
INTEGER
:: unit_nr ...
TYPE(mp2_type),
POINTER
:: mp2_env ...
POINTER
:: para_env ...
POINTER
:: para_env_sub ...
INTEGER,
ALLOCATABLE
:: starts_array_prim_col(:,:) ...
INTEGER,
ALLOCATABLE
:: ends_array_prim_col(:,:) ...
INTEGER,
ALLOCATABLE
:: starts_array_prim_row(:,:) ...
INTEGER,
ALLOCATABLE
:: ends_array_prim_row(:,:) ...
INTEGER,
ALLOCATABLE
:: starts_array_prim_fullcol(:,:) ...
INTEGER,
ALLOCATABLE
:: ends_array_prim_fullcol(:,:) ...
INTEGER,
ALLOCATABLE
:: starts_array_prim_fullrow(:,:) ...
INTEGER,
ALLOCATABLE
:: ends_array_prim_fullrow(:,:) ...
INTEGER,
ALLOCATABLE
:: my_group_l_starts_im_time(:) ...
INTEGER,
ALLOCATABLE
:: my_group_l_sizes_im_time(:) ...
ALLOCATABLE
:: offset_combi_block(:,:) ...
INTEGER
:: starts_array_cm_mao_occ(:) ...
INTEGER
:: starts_array_cm_mao_virt(:) ...
INTEGER
:: ends_array_cm_mao_occ(:) ...
INTEGER
:: ends_array_cm_mao_virt(:) ...
INTEGER,
ALLOCATABLE
:: mepos_p_from_ri_row(:) ...
INTEGER,
ALLOCATABLE
:: row_from_lll(:) ...
LOGICAL,
ALLOCATABLE
:: cycle_due_to_sparse_dm(:,:,:) ...
LOGICAL,
ALLOCATABLE
:: multiply_needed_occ(:,:) ...
LOGICAL,
ALLOCATABLE
:: multiply_needed_virt(:,:) ...
INTEGER,
ALLOCATABLE
:: non_zero_blocks_3c(:,:,:) ...
INTEGER,
ALLOCATABLE
:: non_zero_blocks_3c_cut_col(:,:,:,:) ...
REAL(dp),
ALLOCATABLE
:: buffer_mat_m(:,:) ...
LOGICAL
:: do_mao ...
REAL(dp)
:: stabilize_exp ...

SUBROUTINEget_mat_3c_overl_int_gw(mat_3c_overl_int, mat_3c_overl_int_gw, mo_coeff, matrix_s, gw_corr_lev_occ, gw_corr_lev_virt, homo, nmo, mat_dm_virt_local, para_env, para_env_sub, cut_ri, row_from_lll, my_group_l_starts_im_time, my_group_l_sizes_im_time, do_ic_model, do_ic_opt_homo_lumo, mat_3c_overl_nnp_ic, mat_3c_overl_nnp_ic_reflected, qs_env, unit_nr, do_beta)

...

Arguments:
POINTER
:: mat_3c_overl_int(:) ...
POINTER
:: mat_3c_overl_int_gw(:) ...
TYPE(cp_fm_type),
POINTER
:: mo_coeff ...
POINTER
:: matrix_s(:) ...
INTEGER
:: gw_corr_lev_occ ...
INTEGER
:: gw_corr_lev_virt ...
INTEGER
:: homo ...
INTEGER
:: nmo ...
:: mat_dm_virt_local ...
POINTER
:: para_env ...
POINTER
:: para_env_sub ...
INTEGER
:: cut_ri ...
INTEGER,
ALLOCATABLE
:: row_from_lll(:) ...
INTEGER,
ALLOCATABLE
:: my_group_l_starts_im_time(:) ...
INTEGER,
ALLOCATABLE
:: my_group_l_sizes_im_time(:) ...
LOGICAL
:: do_ic_model ...
LOGICAL
:: do_ic_opt_homo_lumo ...
POINTER
:: mat_3c_overl_nnp_ic(:) ...
POINTER
:: mat_3c_overl_nnp_ic_reflected(:) ...
POINTER
:: qs_env ...
INTEGER
:: unit_nr ...
LOGICAL,
OPTIONAL
:: do_beta ...

SUBROUTINEreflect_mat_row(mat_reflected, mat_orig, para_env, qs_env, unit_nr, do_beta)

reflect from V = (A,B|B,A) to V_reflected = (B,A|A,B) where A belongs to the block of the molecule and B to the off diagonal block between molecule and image of the molecule

Arguments:
:: mat_reflected ...
:: mat_orig ...
POINTER
:: para_env ...
POINTER
:: qs_env ...
INTEGER
:: unit_nr ...
LOGICAL
:: do_beta ...

SUBROUTINEsetup_mat_for_mem_cut_3c(mat_3c_overl_int_cut, mat_3c_overl_int, cut_memory, cut_ri, starts_array_cm, ends_array_cm, my_group_l_sizes_im_time, eps_filter)

...

Arguments:
POINTER
:: mat_3c_overl_int_cut(:,:) ...
POINTER
:: mat_3c_overl_int(:) ...
INTEGER
:: cut_memory ...
INTEGER
:: cut_ri ...
INTEGER
:: starts_array_cm(:) ...
INTEGER
:: ends_array_cm(:) ...
INTEGER
:: my_group_l_sizes_im_time(:) ...
REAL(dp)
:: eps_filter ...

SUBROUTINEzero_mat_p_omega(mat_p_omega, num_integ_points)

...

Arguments:
POINTER
:: mat_p_omega(:) ...
INTEGER
:: num_integ_points ...