From 0283032a52a1572b66d579001bf3fb9204be2f0b Mon Sep 17 00:00:00 2001 From: Antoine MARIE Date: Thu, 11 Jul 2024 09:51:44 +0200 Subject: [PATCH] saving working in static ppBSE@GF2 --- src/GF/GF2_ppBSE2_static_kernel_B.f90 | 8 +++++--- src/GF/GF2_ppBSE2_static_kernel_C.f90 | 11 +++++++---- src/GF/GF2_ppBSE2_static_kernel_D.f90 | 8 +++++--- src/GW/GW_phBSE.f90 | 2 +- 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/GF/GF2_ppBSE2_static_kernel_B.f90 b/src/GF/GF2_ppBSE2_static_kernel_B.f90 index 03ff94f..9007dc2 100644 --- a/src/GF/GF2_ppBSE2_static_kernel_B.f90 +++ b/src/GF/GF2_ppBSE2_static_kernel_B.f90 @@ -22,6 +22,7 @@ subroutine GF2_ppBSE2_static_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nOO,nVV,lambda, ! Local variables + double precision,external :: Kronecker_delta double precision :: dem,num integer :: i,j,k,a,b,c integer :: ab,ij @@ -53,19 +54,20 @@ subroutine GF2_ppBSE2_static_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nOO,nVV,lambda, dem = eGF(k) - eGF(c) num = 2d0*ERI(a,k,i,c)*ERI(b,c,j,k) - ERI(a,k,i,c)*ERI(b,c,k,j) & - - ERI(a,k,c,i)*ERI(b,c,j,k) + 2d0*ERI(a,k,c,i)*ERI(b,c,k,j) + - ERI(a,k,c,i)*ERI(b,c,j,k) - ERI(a,k,c,i)*ERI(b,c,k,j) KB_sta(ab,ij) = KB_sta(ab,ij) + num*dem/(dem**2 + eta**2) dem = eGF(k) - eGF(c) num = 2d0*ERI(b,k,i,c)*ERI(a,c,j,k) - ERI(b,k,i,c)*ERI(a,c,k,j) & - - ERI(b,k,c,i)*ERI(a,c,j,k) + 2d0*ERI(b,k,c,i)*ERI(a,c,k,j) + - ERI(b,k,c,i)*ERI(a,c,j,k) - ERI(b,k,c,i)*ERI(a,c,k,j) - KB_sta(ab,ij) = KB_sta(ab,ij) - num*dem/(dem**2 + eta**2) + KB_sta(ab,ij) = KB_sta(ab,ij) + num*dem/(dem**2 + eta**2) end do end do + KB_sta(ab,ij) = 2d0*lambda*KB_sta(ab,ij)/sqrt((1d0 + Kronecker_delta(a,b))*(1d0 + Kronecker_delta(i,j))) end do end do diff --git a/src/GF/GF2_ppBSE2_static_kernel_C.f90 b/src/GF/GF2_ppBSE2_static_kernel_C.f90 index b34f700..62d75a1 100644 --- a/src/GF/GF2_ppBSE2_static_kernel_C.f90 +++ b/src/GF/GF2_ppBSE2_static_kernel_C.f90 @@ -21,6 +21,7 @@ subroutine GF2_ppBSE2_static_kernel_C(ispin,eta,nBas,nC,nO,nV,nR,nVV,lambda,ERI, ! Local variables + double precision,external :: Kronecker_delta double precision :: dem,num integer :: m integer :: a,b,c,d,e @@ -53,19 +54,21 @@ subroutine GF2_ppBSE2_static_kernel_C(ispin,eta,nBas,nC,nO,nV,nR,nVV,lambda,ERI, dem = eGF(m) - eGF(e) num = 2d0*ERI(a,m,c,e)*ERI(b,e,d,m) - ERI(a,m,c,e)*ERI(b,e,m,d) & - - ERI(a,m,e,c)*ERI(b,e,d,m) + 2d0*ERI(a,m,e,c)*ERI(b,e,m,d) + - ERI(a,m,e,c)*ERI(b,e,d,m) - ERI(a,m,e,c)*ERI(b,e,m,d) KC_sta(ab,cd) = KC_sta(ab,cd) + num*dem/(dem**2 + eta**2) dem = eGF(m) - eGF(e) num = 2d0*ERI(b,m,c,e)*ERI(a,e,d,m) - ERI(b,m,c,e)*ERI(a,e,m,d) & - - ERI(b,m,e,c)*ERI(a,e,d,m) + 2d0*ERI(b,m,e,c)*ERI(a,e,m,d) + - ERI(b,m,e,c)*ERI(a,e,d,m) - ERI(b,m,e,c)*ERI(a,e,m,d) - KC_sta(ab,cd) = KC_sta(ab,cd) - num*dem/(dem**2 + eta**2) + KC_sta(ab,cd) = KC_sta(ab,cd) + num*dem/(dem**2 + eta**2) end do - end do + end do + KC_sta(ab,cd) = 2d0*lambda*KC_sta(ab,cd)/sqrt((1d0 + Kronecker_delta(a,b))*(1d0 + Kronecker_delta(c,d))) + end do end do diff --git a/src/GF/GF2_ppBSE2_static_kernel_D.f90 b/src/GF/GF2_ppBSE2_static_kernel_D.f90 index 7e18345..f91000a 100644 --- a/src/GF/GF2_ppBSE2_static_kernel_D.f90 +++ b/src/GF/GF2_ppBSE2_static_kernel_D.f90 @@ -21,6 +21,7 @@ subroutine GF2_ppBSE2_static_kernel_D(ispin,eta,nBas,nC,nO,nV,nR,nOO,lambda,ERI, ! Local variables + double precision,external :: Kronecker_delta double precision :: dem,num integer :: i,j,k,l,m integer :: e @@ -53,19 +54,20 @@ subroutine GF2_ppBSE2_static_kernel_D(ispin,eta,nBas,nC,nO,nV,nR,nOO,lambda,ERI, dem = - eGF(e) + eGF(m) num = 2d0*ERI(i,e,k,m)*ERI(j,m,l,e) - ERI(i,e,k,m)*ERI(j,m,e,l) & - - ERI(i,e,m,k)*ERI(j,m,l,e) + 2d0*ERI(i,e,m,k)*ERI(j,m,e,l) + - ERI(i,e,m,k)*ERI(j,m,l,e) - ERI(i,e,m,k)*ERI(j,m,e,l) KD_sta(ij,kl) = KD_sta(ij,kl) + num*dem/(dem**2 + eta**2) dem = - eGF(e) + eGF(m) num = 2d0*ERI(j,e,k,m)*ERI(i,m,l,e) - ERI(j,e,k,m)*ERI(i,m,e,l) & - - ERI(j,e,m,k)*ERI(i,m,l,e) + 2d0*ERI(j,e,m,k)*ERI(i,m,e,l) + - ERI(j,e,m,k)*ERI(i,m,l,e) - ERI(j,e,m,k)*ERI(i,m,e,l) - KD_sta(ij,kl) = KD_sta(ij,kl) - num*dem/(dem**2 + eta**2) + KD_sta(ij,kl) = KD_sta(ij,kl) + num*dem/(dem**2 + eta**2) end do end do + KD_sta(ij,kl) = 2d0*lambda*KD_sta(ij,kl)/sqrt((1d0 + Kronecker_delta(i,j))*(1d0 + Kronecker_delta(k,l))) end do end do diff --git a/src/GW/GW_phBSE.f90 b/src/GW/GW_phBSE.f90 index 2ec503c..42b76c8 100644 --- a/src/GW/GW_phBSE.f90 +++ b/src/GW/GW_phBSE.f90 @@ -124,7 +124,7 @@ subroutine GW_phBSE(dophBSE2,TDA_W,TDA,dBSE,dTDA,singlet,triplet,eta,nBas,nC,nO, ! Cumulant expansion ! !--------------------! - call RGWC(.false.,nBas,nC,nO,nR,nS,OmBSE,rho_RPA,eGW) + ! call RGWC(.false.,nBas,nC,nO,nR,nS,OmBSE,rho_RPA,eGW) !----------------------------------------------------! ! Compute the dynamical screening at the phBSE level !