(git:e90df42)
Loading...
Searching...
No Matches
rpa_gw_static_cohsex Module Reference

Static Coulomb-hole screened-exchange (COHSEX) quasiparticle energies and MOs in the O(N^4) (RI_RPAGW) GW code for molecules. More...

Functions/Subroutines

subroutine, public static_cohsex_qp_energies (fm_mat_q, fm_mat_s_gw, fm_mat_s_gw_work, dimen_ri, nmo, homo, gw_corr_lev_occ, gw_corr_lev_virt, eigenval, mo_coeff, unit_nr, qs_env, mp2_env, eigenval_dg, eigenval_cn, u_qp_all)
 Compute and print the diagonal (ϵ^DG) static COHSEX quasiparticle energies; with COHSEX QP_UPDATE also the canonical (ϵ^CN) energies and the canonical MOs.
subroutine, public get_static_cohsex_mo_coeff (mo_coeff, u_qp, fm_qp_mo)
 Canonical static COHSEX MO coefficients C^QP_μn = Σ_m C_μm U_mn.
subroutine, public rotate_bse_slab (fm_slab, dimen_ri, n_outer, n_inner, u_outer, u_inner)
 Rotate an RI 3-center slab to the canonical static COHSEX MOs.

Detailed Description

Static Coulomb-hole screened-exchange (COHSEX) quasiparticle energies and MOs in the O(N^4) (RI_RPAGW) GW code for molecules.

Symbols μ,ν atomic orbitals (AOs) P,Q RI auxiliary functions (after the RI-basis reduction, dimen_RI) i / a occupied / virtual Kohn-Sham MOs, p any MO, m,n MOs in the window of corrected MOs [homo-CORR_MOS_OCC+1, homo+CORR_MOS_VIRT] ϵ_n DFT eigenvalue, ϵ_F Fermi level (between HOMO and LUMO) B^P_nm = Σ_Q (P|Q)^(-1/2) (Q|nm) RI 3-center integrals (fm_mat_S_gw)

Static screened Coulomb interaction (RPA, ω = 0), closed shell: Q_PQ(0) = 4 Σ_ia B^P_ia B^Q_ia / (ϵ_a - ϵ_i) W^c_PQ(0) = [1 + Q(0)]^(-1)_PQ - δ_PQ (-δ_PQ removes the bare Coulomb part) W^c_mp,pn = Σ_PQ B^P_mp W^c_PQ(0) B^Q_pn

static COHSEX self-energy = Coulomb hole (COH) + screened exchange (SEX): Σ^COH_mn = 1/2 Σ_p W^c_mp,pn Σ^SEX_mn = - Σ_i^occ W^c_mi,in (+ bare exchange Σ^x_mn) Σ^c_mn = Σ^COH_mn + Σ^SEX_mn = 1/2 Σ_p sgn(ϵ_p - ϵ_F) W^c_mp,pn Σ^x_mn = -Σ_i^occ Σ_P B^P_mi B^P_in (RI_SIGMA_X; else from HFX)

Quasiparticle Hamiltonian in the window: H^QP_mn = ϵ_n δ_mn + Σ^x_mn - v^xc_mn + α_mn Σ^c_mn α_mn = α_IP = COHSEX_SCALE_OCC (m,n occupied), α_EA = COHSEX_SCALE_VIRT (m,n virtual), H^QP_ia = 0 ϵ_n^DG = H^QP_nn (COHSEX DIAGONAL) H^QP U = U ϵ^CN, occ-occ and virt-virt block separately (COHSEX QP_UPDATE) C^QP_μn = Σ_m C_μm U_mn (COHSEX QP_UPDATE MOs) COHSEX DIAGONAL prints ϵ^DG only; COHSEX QP_UPDATE also diagonalizes H^QP, prints ϵ^CN and the canonical MOs.

History
09.2026 created [Ritaj Tyagi]

Function/Subroutine Documentation

◆ static_cohsex_qp_energies()

subroutine, public rpa_gw_static_cohsex::static_cohsex_qp_energies ( type(cp_fm_type), intent(inout) fm_mat_q,
type(cp_fm_type), dimension(:), intent(in) fm_mat_s_gw,
type(cp_fm_type), dimension(:), intent(in) fm_mat_s_gw_work,
integer, intent(in) dimen_ri,
integer, intent(in) nmo,
integer, dimension(:), intent(in) homo,
integer, dimension(:), intent(in) gw_corr_lev_occ,
integer, dimension(:), intent(in) gw_corr_lev_virt,
real(kind=dp), dimension(:, :), intent(in) eigenval,
type(cp_fm_type), dimension(:), intent(in) mo_coeff,
integer, intent(in) unit_nr,
type(qs_environment_type), pointer qs_env,
type(mp2_type) mp2_env,
real(kind=dp), dimension(:, :), intent(out), optional eigenval_dg,
real(kind=dp), dimension(:, :), intent(out), optional eigenval_cn,
real(kind=dp), dimension(:, :, :), intent(out), optional u_qp_all )

Compute and print the diagonal (ϵ^DG) static COHSEX quasiparticle energies; with COHSEX QP_UPDATE also the canonical (ϵ^CN) energies and the canonical MOs.

Parameters
fm_mat_Qon entry the spin-summed 1 + Q_PQ(ω=0); on exit W^c_PQ(0) = [1 + Q(0)]^(-1)_PQ - δ_PQ
fm_mat_S_gwper-spin B^P_mp
fm_mat_S_gw_work...
dimen_RI...
nmo...
homo...
gw_corr_lev_occ...
gw_corr_lev_virt...
Eigenval...
mo_coeff...
unit_nr...
qs_env...
mp2_env...
eigenval_dgϵ_n^DG of all MOs (scissor outside the window), nmo x nspins
eigenval_cnϵ_n^CN of all MOs (scissor outside the window), nmo x nspins, QP_UPDATE only
u_qp_allU_mn of all MOs (δ_mn outside the window), nmo x nmo x nspins, QP_UPDATE only

Definition at line 137 of file rpa_gw_static_cohsex.F.

Here is the call graph for this function:

◆ get_static_cohsex_mo_coeff()

subroutine, public rpa_gw_static_cohsex::get_static_cohsex_mo_coeff ( type(cp_fm_type), intent(in) mo_coeff,
real(kind=dp), dimension(:, :), intent(in) u_qp,
type(cp_fm_type), intent(out) fm_qp_mo )

Canonical static COHSEX MO coefficients C^QP_μn = Σ_m C_μm U_mn.

Parameters
mo_coeff...
u_qp...
fm_qp_mo...

Definition at line 662 of file rpa_gw_static_cohsex.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rotate_bse_slab()

subroutine, public rpa_gw_static_cohsex::rotate_bse_slab ( type(cp_fm_type), intent(in) fm_slab,
integer, intent(in) dimen_ri,
integer, intent(in) n_outer,
integer, intent(in) n_inner,
real(kind=dp), dimension(:, :), intent(in) u_outer,
real(kind=dp), dimension(:, :), intent(in) u_inner )

Rotate an RI 3-center slab to the canonical static COHSEX MOs.

Parameters
fm_slab...
dimen_RI...
n_outer...
n_inner...
u_outer...
u_inner...

Definition at line 694 of file rpa_gw_static_cohsex.F.

Here is the call graph for this function: