10
1
mirror of https://github.com/pfloos/quack synced 2024-12-23 04:43:42 +01:00

add optimization in GF

This commit is contained in:
EnzoMonino 2023-07-10 13:53:39 +02:00
parent 06df6109fa
commit 6d4199f989
6 changed files with 97 additions and 78 deletions

View File

@ -11,9 +11,9 @@
# RPA* RPAx* crRPA ppRPA # RPA* RPAx* crRPA ppRPA
F F F F F F F F
# G0F2* evGF2* qsGF2* G0F3 evGF3 # G0F2* evGF2* qsGF2* G0F3 evGF3
F F F F F T F F F F
# G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW # G0W0* evGW* qsGW* SRG-qsGW ufG0W0 ufGW
T F F F F F F F F F F F
# G0T0pp evGTpp qsGTpp G0T0eh evGTeh qsGTeh # G0T0pp evGTpp qsGTpp G0T0eh evGTeh qsGTeh
T F F F F F F F F F F F
# * unrestricted version available # * unrestricted version available

View File

@ -36,15 +36,15 @@ subroutine GF2_phBSE2_dynamic_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
if(ispin == 1) then if(ispin == 1) then
ia = 0 jb = 0
do i=nC+1,nO do j=nC+1,nO
do a=nO+1,nBas-nR do b=nO+1,nBas-nR
ia = ia + 1 jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0 ia = 0
do j=nC+1,nO do i=nC+1,nO
do b=nO+1,nBas-nR do a=nO+1,nBas-nR
jb = jb + 1 ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -97,6 +97,7 @@ subroutine GF2_phBSE2_dynamic_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
end do end do
end do end do
!$omp end parallel do
end if end if
@ -104,15 +105,16 @@ subroutine GF2_phBSE2_dynamic_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
if(ispin == 2) then if(ispin == 2) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(A_dyn,ZA_dyn,ERI,OmBSE,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0
do j=nC+1,nO ia = 0
do b=nO+1,nBas-nR do i=nC+1,nO
jb = jb + 1 do a=nO+1,nBas-nR
ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -161,6 +163,7 @@ subroutine GF2_phBSE2_dynamic_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
end do end do
end do end do
!$omp end parallel do
end if end if

View File

@ -33,15 +33,16 @@ subroutine GF2_phBSE2_dynamic_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
if(ispin == 1) then if(ispin == 1) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(B_dyn,ERI,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0 ia = 0
do j=nC+1,nO do i=nC+1,nO
do b=nO+1,nBas-nR do a=nO+1,nBas-nR
jb = jb + 1 ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -90,6 +91,7 @@ subroutine GF2_phBSE2_dynamic_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
end do end do
end do end do
!$omp end parallel do
end if end if
@ -97,16 +99,17 @@ subroutine GF2_phBSE2_dynamic_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
if(ispin == 2) then if(ispin == 2) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(B_dyn,ERI,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0 ia = 0
do j=nC+1,nO do i=nC+1,nO
do b=nO+1,nBas-nR do a=nO+1,nBas-nR
jb = jb + 1 ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -150,6 +153,7 @@ subroutine GF2_phBSE2_dynamic_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,
end do end do
end do end do
!$omp end parallel do
end if end if

View File

@ -33,15 +33,17 @@ subroutine GF2_phBSE2_static_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
if(ispin == 1) then if(ispin == 1) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(A_sta,ERI,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0 ia = 0
do j=nC+1,nO do i=nC+1,nO
do b=nO+1,nBas-nR do a=nO+1,nBas-nR
jb = jb + 1 ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -90,6 +92,7 @@ subroutine GF2_phBSE2_static_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
end do end do
end do end do
!$omp end parallel do
end if end if
@ -97,15 +100,16 @@ subroutine GF2_phBSE2_static_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
if(ispin == 2) then if(ispin == 2) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(A_sta,ERI,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0 ia = 0
do j=nC+1,nO do i=nC+1,nO
do b=nO+1,nBas-nR do a=nO+1,nBas-nR
jb = jb + 1 ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -150,6 +154,7 @@ subroutine GF2_phBSE2_static_kernel_A(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
end do end do
end do end do
!$omp end parallel do
end if end if

View File

@ -33,15 +33,16 @@ subroutine GF2_phBSE2_static_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
if(ispin == 1) then if(ispin == 1) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(B_sta,ERI,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0
do j=nC+1,nO ia = 0
do b=nO+1,nBas-nR do i=nC+1,nO
jb = jb + 1 do a=nO+1,nBas-nR
ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -90,6 +91,7 @@ subroutine GF2_phBSE2_static_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
end do end do
end do end do
!$omp end parallel do
end if end if
@ -97,15 +99,16 @@ subroutine GF2_phBSE2_static_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
if(ispin == 2) then if(ispin == 2) then
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(B_sta,ERI,num,dem,eGF,nO,nBas,eta,nC,nR)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = (b-nO) + (j-1)*(nBas-nO)
jb = 0 ia = 0
do j=nC+1,nO do i=nC+1,nO
do b=nO+1,nBas-nR do a=nO+1,nBas-nR
jb = jb + 1 ia = (a-nO) + (i-1)*(nBas-nO)
do k=nC+1,nO do k=nC+1,nO
do c=nO+1,nBas-nR do c=nO+1,nBas-nR
@ -150,6 +153,7 @@ subroutine GF2_phBSE2_static_kernel_B(ispin,eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,e
end do end do
end do end do
!$omp end parallel do
end if end if

View File

@ -24,14 +24,16 @@ subroutine Bethe_Salpeter_A_matrix(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,
double precision,intent(out) :: A_lr(nS,nS) double precision,intent(out) :: A_lr(nS,nS)
ia = 0 jb = 0
do i=nC+1,nO !$omp parallel do default(private) shared(A_lr,ERI,Omega,rho,nO,nBas,nS,chi,eps,eta,nC,nR,lambda)
do a=nO+1,nBas-nR do j=nC+1,nO
ia = ia + 1 do b=nO+1,nBas-nR
jb = 0 jb = (b-nO) + (j-1)*(nBas-nO)
do j=nC+1,nO
do b=nO+1,nBas-nR ia = 0
jb = jb + 1 do i=nC+1,nO
do a=nO+1,nBas-nR
ia = (a-nO) + (i-1)*(nBas-nO)
chi = 0d0 chi = 0d0
do kc=1,nS do kc=1,nS
@ -46,5 +48,6 @@ subroutine Bethe_Salpeter_A_matrix(eta,nBas,nC,nO,nV,nR,nS,lambda,ERI,Omega,rho,
enddo enddo
enddo enddo
enddo enddo
!$omp end parallel do
end subroutine Bethe_Salpeter_A_matrix end subroutine Bethe_Salpeter_A_matrix