diff --git a/src/GT/regularized_renormalization_factor_Tmatrix.f90 b/src/GT/regularized_renormalization_factor_Tmatrix.f90 new file mode 100644 index 0000000..457b93d --- /dev/null +++ b/src/GT/regularized_renormalization_factor_Tmatrix.f90 @@ -0,0 +1,74 @@ +subroutine regularized_renormalization_factor_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1,rho1,Omega2,rho2,Z) + +! Compute renormalization factor of the T-matrix self-energy + + implicit none + include 'parameters.h' + +! Input variables + + double precision,intent(in) :: eta + integer,intent(in) :: nBas,nC,nO,nV,nR + integer,intent(in) :: nOO + integer,intent(in) :: nVV + double precision,intent(in) :: e(nBas) + double precision,intent(in) :: Omega1(nVV) + double precision,intent(in) :: rho1(nBas,nBas,nVV) + double precision,intent(in) :: Omega2(nOO) + double precision,intent(in) :: rho2(nBas,nBas,nOO) + +! Local variables + + integer :: i,a,p,cd,kl + double precision :: eps + + double precision :: kappa + double precision :: fk,dfk + +! Output variables + + double precision,intent(out) :: Z(nBas) + +!-----------------------------------------! +! Parameters for regularized calculations ! +!-----------------------------------------! + + kappa = 1.1d0 + +! Occupied part of the T-matrix self-energy + + do p=nC+1,nBas-nR + do i=nC+1,nO + do cd=1,nVV + + eps = e(p) + e(i) - Omega1(cd) + + fk = (1d0 - exp(-kappa*abs(eps)))**2/eps + dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps))) + dfk = dfk*fk + + Z(p) = Z(p) - rho1(p,i,cd)**2*dfk + + enddo + enddo + enddo + +! Virtual part of the T-matrix self-energy + + do p=nC+1,nBas-nR + do a=1,nV-nR + do kl=1,nOO + + eps = e(p) + e(nO+a) - Omega2(kl) + + fk = (1d0 - exp(-kappa*abs(eps)))**2/eps + dfk = - 1d0/eps + 2d0*kappa*exp(-kappa*abs(eps))/(1d0 - exp(-kappa*abs(eps))) + dfk = dfk*fk + + Z(p) = Z(p) - rho2(p,nO+a,kl)**2*dfk + + enddo + enddo + enddo + +end subroutine regularized_renormalization_factor_Tmatrix diff --git a/src/GT/regularized_self_energy_Tmatrix.f90 b/src/GT/regularized_self_energy_Tmatrix.f90 new file mode 100644 index 0000000..b9f3cd0 --- /dev/null +++ b/src/GT/regularized_self_energy_Tmatrix.f90 @@ -0,0 +1,80 @@ +subroutine regularized_self_energy_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1,rho1,Omega2,rho2,SigT) + +! Compute the correlation part of the T-matrix self-energy + + implicit none + include 'parameters.h' + +! Input variables + + double precision,intent(in) :: eta + integer,intent(in) :: nBas + integer,intent(in) :: nC + integer,intent(in) :: nO + integer,intent(in) :: nV + integer,intent(in) :: nR + integer,intent(in) :: nOO + integer,intent(in) :: nVV + double precision,intent(in) :: e(nBas) + double precision,intent(in) :: Omega1(nVV) + double precision,intent(in) :: rho1(nBas,nBas,nVV) + double precision,intent(in) :: Omega2(nOO) + double precision,intent(in) :: rho2(nBas,nBas,nOO) + +! Local variables + + integer :: i,a,p,q,cd,kl + double precision :: eps + + double precision :: kappa + double precision :: fk + +! Output variables + + double precision,intent(inout) :: SigT(nBas,nBas) + +!-----------------------------------------! +! Parameters for regularized calculations ! +!-----------------------------------------! + + kappa = 1.1d0 + +!---------------------------------------------- +! Occupied part of the T-matrix self-energy +!---------------------------------------------- + + do p=nC+1,nBas-nR + do q=nC+1,nBas-nR + do i=nC+1,nO + do cd=1,nVV + + eps = e(p) + e(i) - Omega1(cd) + fk = (1d0 - exp(-kappa*abs(eps)))**2/eps + + SigT(p,q) = SigT(p,q) + rho1(p,i,cd)*rho1(q,i,cd)*eps/(eps**2 + eta**2) + + enddo + enddo + enddo + enddo + +!---------------------------------------------- + ! Virtual part of the T-matrix self-energy +!---------------------------------------------- + + do p=nC+1,nBas-nR + do q=nC+1,nBas-nR + do a=nO+1,nBas-nR + do kl=1,nOO + + eps = e(p) + e(a) - Omega2(kl) + fk = (1d0 - exp(-kappa*abs(eps)))**2/eps + + SigT(p,q) = SigT(p,q) + rho2(p,a,kl)*rho2(q,a,kl)*eps/(eps**2 + eta**2) + + enddo + enddo + enddo + enddo + +end subroutine regularized_self_energy_Tmatrix diff --git a/src/GT/regularized_self_energy_Tmatrix_diag.f90 b/src/GT/regularized_self_energy_Tmatrix_diag.f90 new file mode 100644 index 0000000..90b5f89 --- /dev/null +++ b/src/GT/regularized_self_energy_Tmatrix_diag.f90 @@ -0,0 +1,76 @@ +subroutine regularized_self_energy_Tmatrix_diag(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1,rho1,Omega2,rho2,SigT) + +! Compute diagonal of the correlation part of the T-matrix self-energy + + implicit none + include 'parameters.h' + +! Input variables + + double precision,intent(in) :: eta + integer,intent(in) :: nBas + integer,intent(in) :: nC + integer,intent(in) :: nO + integer,intent(in) :: nV + integer,intent(in) :: nR + integer,intent(in) :: nOO + integer,intent(in) :: nVV + double precision,intent(in) :: e(nBas) + double precision,intent(in) :: Omega1(nVV) + double precision,intent(in) :: rho1(nBas,nBas,nVV) + double precision,intent(in) :: Omega2(nOO) + double precision,intent(in) :: rho2(nBas,nBas,nOO) + +! Local variables + + integer :: i,a,p,cd,kl + double precision :: eps + + double precision :: kappa + double precision :: fk + +! Output variables + + double precision,intent(inout) :: SigT(nBas) + +!-----------------------------------------! +! Parameters for regularized calculations ! +!-----------------------------------------! + + kappa = 1.1d0 + +!---------------------------------------------- +! Occupied part of the T-matrix self-energy +!---------------------------------------------- + + do p=nC+1,nBas-nR + do i=nC+1,nO + do cd=1,nVV + + eps = e(p) + e(i) - Omega1(cd) + fk = (1d0 - exp(-kappa*abs(eps)))**2/eps + + SigT(p) = SigT(p) + rho1(p,i,cd)**2*fk + + enddo + enddo + enddo + +!---------------------------------------------- +! Virtual part of the T-matrix self-energy +!---------------------------------------------- + + do p=nC+1,nBas-nR + do a=nO+1,nBas-nR + do kl=1,nOO + + eps = e(p) + e(a) - Omega2(kl) + fk = (1d0 - exp(-kappa*abs(eps)))**2/eps + + SigT(p) = SigT(p) + rho2(p,a,kl)**2*fk + + enddo + enddo + enddo + +end subroutine regularized_self_energy_Tmatrix_diag diff --git a/src/GT/renormalization_factor_Tmatrix.f90 b/src/GT/renormalization_factor_Tmatrix.f90 index 59dbd7f..a05080d 100644 --- a/src/GT/renormalization_factor_Tmatrix.f90 +++ b/src/GT/renormalization_factor_Tmatrix.f90 @@ -19,7 +19,7 @@ subroutine renormalization_factor_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1, ! Local variables - integer :: i,j,k,l,a,b,c,d,p,cd,kl + integer :: i,a,p,cd,kl double precision :: eps ! Output variables diff --git a/src/GT/self_energy_Tmatrix.f90 b/src/GT/self_energy_Tmatrix.f90 index fc06791..1a3b437 100644 --- a/src/GT/self_energy_Tmatrix.f90 +++ b/src/GT/self_energy_Tmatrix.f90 @@ -23,7 +23,7 @@ subroutine self_energy_Tmatrix(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1,rho1,Omega2 ! Local variables - integer :: i,j,k,l,a,b,c,d,p,q,cd,kl + integer :: i,a,p,q,cd,kl double precision :: eps ! Output variables diff --git a/src/GT/self_energy_Tmatrix_diag.f90 b/src/GT/self_energy_Tmatrix_diag.f90 index f18ac6e..548c405 100644 --- a/src/GT/self_energy_Tmatrix_diag.f90 +++ b/src/GT/self_energy_Tmatrix_diag.f90 @@ -23,7 +23,7 @@ subroutine self_energy_Tmatrix_diag(eta,nBas,nC,nO,nV,nR,nOO,nVV,e,Omega1,rho1,O ! Local variables - integer :: i,j,k,l,a,b,c,d,p,cd,kl + integer :: i,a,p,cd,kl double precision :: eps ! Output variables