(git:c5411e0)
Loading...
Searching...
No Matches
bse_full_diag Module Reference

Routines for the full diagonalization of GW + Bethe-Salpeter for computing electronic excitations. More...

Functions/Subroutines

subroutine, public create_a (fm_mat_s_ia_bse, fm_mat_s_bar_ij_bse, fm_mat_s_ab_bse, fm_a, eigenval, unit_nr, homo, virtual, dimen_ri, mp2_env, para_env)
 Matrix A constructed from GW energies and 3c-B-matrices (cf. subroutine mult_B_with_W) A_ia,jb = (ε_a-ε_i) δ_ij δ_ab + α * v_ia,jb - W_ij,ab ε_a, ε_i are GW singleparticle energies from Eigenval_reduced α is a spin-dependent factor v_ia,jb = \sum_P B^P_ia B^P_jb (unscreened Coulomb interaction) W_ij,ab = \sum_P \bar{B}^P_ij B^P_ab (screened Coulomb interaction)
 
subroutine, public create_b (fm_mat_s_ia_bse, fm_mat_s_bar_ia_bse, fm_b, homo, virtual, dimen_ri, unit_nr, mp2_env)
 Matrix B constructed from 3c-B-matrices (cf. subroutine mult_B_with_W) B_ia,jb = α * v_ia,jb - W_ib,aj α is a spin-dependent factor v_ia,jb = \sum_P B^P_ia B^P_jb (unscreened Coulomb interaction) W_ib,aj = \sum_P \bar{B}^P_ib B^P_aj (screened Coulomb interaction)
 
subroutine, public create_hermitian_form_of_abba (fm_a, fm_b, fm_c, fm_sqrt_a_minus_b, fm_inv_sqrt_a_minus_b, homo, virtual, unit_nr, mp2_env, diag_est)
 Construct Matrix C=(A-B)^0.5 (A+B) (A-B)^0.5 to solve full BSE matrix as a hermitian problem (cf. Eq. (A7) in F. Furche J. Chem. Phys., Vol. 114, No. 14, (2001)). We keep fm_sqrt_A_minus_B and fm_inv_sqrt_A_minus_B for print of singleparticle transitions of ABBA as described in Eq. (A10) in F. Furche J. Chem. Phys., Vol. 114, No. 14, (2001).
 
subroutine, public diagonalize_c (fm_c, homo, virtual, homo_irred, fm_sqrt_a_minus_b, fm_inv_sqrt_a_minus_b, unit_nr, diag_est, mp2_env)
 Solving eigenvalue equation C Z^n = (Ω^n)^2 Z^n . Here, the eigenvectors Z^n relate to X^n via Eq. (A10) in F. Furche J. Chem. Phys., Vol. 114, No. 14, (2001).
 
subroutine, public diagonalize_a (fm_a, homo, virtual, homo_irred, unit_nr, diag_est, mp2_env)
 Solving hermitian eigenvalue equation A X^n = Ω^n X^n.
 

Detailed Description

Routines for the full diagonalization of GW + Bethe-Salpeter for computing electronic excitations.

History
10.2023 created [Maximilian Graml]

Function/Subroutine Documentation

◆ create_a()

subroutine, public bse_full_diag::create_a ( type(cp_fm_type), intent(in)  fm_mat_s_ia_bse,
type(cp_fm_type), intent(in)  fm_mat_s_bar_ij_bse,
type(cp_fm_type), intent(in)  fm_mat_s_ab_bse,
type(cp_fm_type), intent(inout)  fm_a,
real(kind=dp), dimension(:)  eigenval,
integer, intent(in)  unit_nr,
integer, intent(in)  homo,
integer, intent(in)  virtual,
integer, intent(in)  dimen_ri,
type(mp2_type), intent(inout)  mp2_env,
type(mp_para_env_type), intent(inout)  para_env 
)

Matrix A constructed from GW energies and 3c-B-matrices (cf. subroutine mult_B_with_W) A_ia,jb = (ε_a-ε_i) δ_ij δ_ab + α * v_ia,jb - W_ij,ab ε_a, ε_i are GW singleparticle energies from Eigenval_reduced α is a spin-dependent factor v_ia,jb = \sum_P B^P_ia B^P_jb (unscreened Coulomb interaction) W_ij,ab = \sum_P \bar{B}^P_ij B^P_ab (screened Coulomb interaction)

Parameters
fm_mat_S_ia_bse...
fm_mat_S_bar_ij_bse...
fm_mat_S_ab_bse...
fm_A...
Eigenval...
unit_nr...
homo...
virtual...
dimen_RI...
mp2_env...
para_env...

Definition at line 73 of file bse_full_diag.F.

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

◆ create_b()

subroutine, public bse_full_diag::create_b ( type(cp_fm_type), intent(in)  fm_mat_s_ia_bse,
type(cp_fm_type), intent(in)  fm_mat_s_bar_ia_bse,
type(cp_fm_type), intent(inout)  fm_b,
integer, intent(in)  homo,
integer, intent(in)  virtual,
integer, intent(in)  dimen_ri,
integer, intent(in)  unit_nr,
type(mp2_type), intent(inout)  mp2_env 
)

Matrix B constructed from 3c-B-matrices (cf. subroutine mult_B_with_W) B_ia,jb = α * v_ia,jb - W_ib,aj α is a spin-dependent factor v_ia,jb = \sum_P B^P_ia B^P_jb (unscreened Coulomb interaction) W_ib,aj = \sum_P \bar{B}^P_ib B^P_aj (screened Coulomb interaction)

Parameters
fm_mat_S_ia_bse...
fm_mat_S_bar_ia_bse...
fm_B...
homo...
virtual...
dimen_RI...
unit_nr...
mp2_env...

Definition at line 211 of file bse_full_diag.F.

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

◆ create_hermitian_form_of_abba()

subroutine, public bse_full_diag::create_hermitian_form_of_abba ( type(cp_fm_type), intent(in)  fm_a,
type(cp_fm_type), intent(in)  fm_b,
type(cp_fm_type), intent(inout)  fm_c,
type(cp_fm_type), intent(inout)  fm_sqrt_a_minus_b,
type(cp_fm_type), intent(inout)  fm_inv_sqrt_a_minus_b,
integer, intent(in)  homo,
integer, intent(in)  virtual,
integer, intent(in)  unit_nr,
type(mp2_type), intent(inout)  mp2_env,
real(kind=dp), intent(in)  diag_est 
)

Construct Matrix C=(A-B)^0.5 (A+B) (A-B)^0.5 to solve full BSE matrix as a hermitian problem (cf. Eq. (A7) in F. Furche J. Chem. Phys., Vol. 114, No. 14, (2001)). We keep fm_sqrt_A_minus_B and fm_inv_sqrt_A_minus_B for print of singleparticle transitions of ABBA as described in Eq. (A10) in F. Furche J. Chem. Phys., Vol. 114, No. 14, (2001).

Parameters
fm_A...
fm_B...
fm_C...
fm_sqrt_A_minus_B...
fm_inv_sqrt_A_minus_B...
homo...
virtual...
unit_nr...
mp2_env...
diag_est...

Definition at line 291 of file bse_full_diag.F.

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

◆ diagonalize_c()

subroutine, public bse_full_diag::diagonalize_c ( type(cp_fm_type), intent(inout)  fm_c,
integer, intent(in)  homo,
integer, intent(in)  virtual,
integer, intent(in)  homo_irred,
type(cp_fm_type), intent(inout)  fm_sqrt_a_minus_b,
type(cp_fm_type), intent(inout)  fm_inv_sqrt_a_minus_b,
integer, intent(in)  unit_nr,
real(kind=dp), intent(in)  diag_est,
type(mp2_type), intent(inout)  mp2_env 
)

Solving eigenvalue equation C Z^n = (Ω^n)^2 Z^n . Here, the eigenvectors Z^n relate to X^n via Eq. (A10) in F. Furche J. Chem. Phys., Vol. 114, No. 14, (2001).

Parameters
fm_C...
homo...
virtual...
homo_irred...
fm_sqrt_A_minus_B...
fm_inv_sqrt_A_minus_B...
unit_nr...
diag_est...
mp2_env...

Definition at line 408 of file bse_full_diag.F.

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

◆ diagonalize_a()

subroutine, public bse_full_diag::diagonalize_a ( type(cp_fm_type), intent(inout)  fm_a,
integer, intent(in)  homo,
integer, intent(in)  virtual,
integer, intent(in)  homo_irred,
integer, intent(in)  unit_nr,
real(kind=dp), intent(in)  diag_est,
type(mp2_type), intent(inout)  mp2_env 
)

Solving hermitian eigenvalue equation A X^n = Ω^n X^n.

Parameters
fm_A...
homo...
virtual...
homo_irred...
unit_nr...
diag_est...
mp2_env...

Definition at line 496 of file bse_full_diag.F.

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