1
0
mirror of https://gitlab.com/scemama/qp_plugins_scemama.git synced 2024-07-26 04:37:31 +02:00

Removed tau

This commit is contained in:
Anthony Scemama 2019-09-14 14:32:41 +02:00
parent 10ae28d78d
commit 3e6b874f9e
5 changed files with 17 additions and 74 deletions

View File

@ -36,8 +36,6 @@ subroutine CCSD
double precision,allocatable :: r1(:,:) double precision,allocatable :: r1(:,:)
double precision,allocatable :: r2(:,:,:,:) double precision,allocatable :: r2(:,:,:,:)
double precision,allocatable :: tau(:,:,:,:)
! Hello world ! Hello world
write(*,*) write(*,*)
@ -62,10 +60,6 @@ subroutine CCSD
nBas2 = spin_mo_num nBas2 = spin_mo_num
! Guess amplitudes
allocate(tau(spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num))
! Initialization ! Initialization
allocate(cFvv(spin_vir_num,spin_vir_num),cFoo(spin_occ_num,spin_occ_num),cFov(spin_occ_num,spin_vir_num), & allocate(cFvv(spin_vir_num,spin_vir_num),cFoo(spin_occ_num,spin_occ_num),cFov(spin_occ_num,spin_vir_num), &
@ -75,9 +69,7 @@ subroutine CCSD
Conv = 1d0 Conv = 1d0
nSCF = 0 nSCF = 0
call form_tau_nc (tau) EcMP2 = 0.25d0*u_dot_v(OOVV,tau_cc,size(OOVV))
EcMP2 = 0.25d0*u_dot_v(OOVV,tau,size(OOVV))
write(*,'(1X,A10,1X,F10.6)') 'Ec(MP2) = ',EcMP2 write(*,'(1X,A10,1X,F10.6)') 'Ec(MP2) = ',EcMP2
write(*,'(1X,A10,1X,F10.6)') 'E (MP2) = ',EcMP2 + ERHF write(*,'(1X,A10,1X,F10.6)') 'E (MP2) = ',EcMP2 + ERHF
@ -104,15 +96,14 @@ subroutine CCSD
spin_fock_matrix_mo_vv, & spin_fock_matrix_mo_vv, &
cFoo,cFov,cFvv) cFoo,cFov,cFvv)
call form_cw_nc (tau, & call form_cw_nc (cWoooo,cWovvo,cWvvvv)
cWoooo,cWovvo,cWvvvv)
! Compute residuals ! Compute residuals
call form_r1_nc(spin_fock_matrix_mo_ov, & call form_r1_nc(spin_fock_matrix_mo_ov, &
cFoo,cFov,cFvv,r1) cFoo,cFov,cFvv,r1)
call form_r2_nc(tau,cFoo,cFov,cFvv, & call form_r2_nc(cFoo,cFov,cFvv, &
cWoooo,cWvvvv,cWovvo,r2) cWoooo,cWvvvv,cWovvo,r2)
! Check convergence ! Check convergence
@ -125,8 +116,6 @@ subroutine CCSD
t2_cc(:,:,:,:) = t2_cc(:,:,:,:) - r2(:,:,:,:)/delta_OOVV(:,:,:,:) t2_cc(:,:,:,:) = t2_cc(:,:,:,:) - r2(:,:,:,:)/delta_OOVV(:,:,:,:)
TOUCH t1_cc t2_cc TOUCH t1_cc t2_cc
call form_tau_nc (tau)
! Compute correlation energy ! Compute correlation energy
call CCSD_Ec_nc(spin_fock_matrix_mo_ov,EcCCSD) call CCSD_Ec_nc(spin_fock_matrix_mo_ov,EcCCSD)
@ -163,7 +152,6 @@ subroutine CCSD
deallocate( & deallocate( &
cFvv,cFoo,cFov, & cFvv,cFoo,cFov, &
cWoooo,cWvvvv,cWovvo, & cWoooo,cWvvvv,cWovvo, &
tau, &
r1,r2) r1,r2)
!------------------------------------------------------------------------ !------------------------------------------------------------------------

View File

@ -1,13 +1,9 @@
subroutine form_cW_nc(tau,cWoooo,cWovvo,cWvvvv) subroutine form_cW_nc(cWoooo,cWovvo,cWvvvv)
! Compute W terms in CCSD ! Compute W terms in CCSD
implicit none implicit none
! Input variables
double precision,intent(in) :: tau(spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num)
! Local variables ! Local variables
integer :: i,j,m,n integer :: i,j,m,n
@ -42,7 +38,7 @@ subroutine form_cW_nc(tau,cWoooo,cWovvo,cWvvvv)
do e=1,spin_vir_num do e=1,spin_vir_num
do j=1,spin_occ_num do j=1,spin_occ_num
do i=1,spin_occ_num do i=1,spin_occ_num
x = 0.25d0*tau(i,j,e,f) x = 0.25d0*tau_cc(i,j,e,f)
do n=1,spin_occ_num do n=1,spin_occ_num
do m=1,spin_occ_num do m=1,spin_occ_num
cWoooo(m,n,i,j) = cWoooo(m,n,i,j) + x*OOVV(m,n,e,f) cWoooo(m,n,i,j) = cWoooo(m,n,i,j) + x*OOVV(m,n,e,f)
@ -119,7 +115,7 @@ subroutine form_cW_nc(tau,cWoooo,cWovvo,cWvvvv)
x = 0.d0 x = 0.d0
do n=1,spin_occ_num do n=1,spin_occ_num
do m=1,spin_occ_num do m=1,spin_occ_num
x = x + tau(m,n,a,b)*OOVV(m,n,e,f) x = x + tau_cc(m,n,a,b)*OOVV(m,n,e,f)
end do end do
end do end do
cWvvvv(a,b,e,f) = cWvvvv(a,b,e,f) + 0.25d0*x cWvvvv(a,b,e,f) = cWvvvv(a,b,e,f) + 0.25d0*x

View File

@ -1,4 +1,4 @@
subroutine form_r2_nc(tau,cFoo,cFov,cFvv,cWoooo,cWvvvv,cWovvo,r2) subroutine form_r2_nc(cFoo,cFov,cFvv,cWoooo,cWvvvv,cWovvo,r2)
! Form t2 residues in non-canonical CCSD ! Form t2 residues in non-canonical CCSD
@ -14,7 +14,6 @@ subroutine form_r2_nc(tau,cFoo,cFov,cFvv,cWoooo,cWvvvv,cWovvo,r2)
double precision,intent(in) :: cWvvvv(spin_vir_num,spin_vir_num,spin_vir_num,spin_vir_num) double precision,intent(in) :: cWvvvv(spin_vir_num,spin_vir_num,spin_vir_num,spin_vir_num)
double precision,intent(in) :: cWovvo(spin_occ_num,spin_vir_num,spin_vir_num,spin_occ_num) double precision,intent(in) :: cWovvo(spin_occ_num,spin_vir_num,spin_vir_num,spin_occ_num)
double precision,intent(in) :: tau(spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num)
double precision :: x double precision :: x
! Local variables ! Local variables
@ -155,7 +154,7 @@ subroutine form_r2_nc(tau,cFoo,cFov,cFvv,cWoooo,cWvvvv,cWovvo,r2)
do i=1,spin_occ_num do i=1,spin_occ_num
do n=1,spin_occ_num do n=1,spin_occ_num
do m=1,spin_occ_num do m=1,spin_occ_num
r2(i,j,a,b) = r2(i,j,a,b) + 0.5d0*tau(m,n,a,b)*cWoooo(m,n,i,j) r2(i,j,a,b) = r2(i,j,a,b) + 0.5d0*tau_cc(m,n,a,b)*cWoooo(m,n,i,j)
end do end do
end do end do
end do end do
@ -171,7 +170,7 @@ subroutine form_r2_nc(tau,cFoo,cFov,cFvv,cWoooo,cWvvvv,cWovvo,r2)
x = 0.5d0*cWvvvv(a,b,e,f) x = 0.5d0*cWvvvv(a,b,e,f)
do j=1,spin_occ_num do j=1,spin_occ_num
do i=1,spin_occ_num do i=1,spin_occ_num
r2(i,j,a,b) = r2(i,j,a,b) + x*tau(i,j,e,f) r2(i,j,a,b) = r2(i,j,a,b) + x*tau_cc(i,j,e,f)
end do end do
end do end do
end do end do

View File

@ -1,33 +0,0 @@
subroutine form_tau(t1,t2,tau)
! Form tau in CCSD
implicit none
! Input variables
double precision,intent(in) :: t1(spin_occ_num,spin_vir_num)
double precision,intent(in) :: t2(spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num)
! Local variables
integer :: i,j,k,l
integer :: a,b,c,d
! Output variables
double precision,intent(out) :: tau(spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num)
do b=1,spin_vir_num
do a=1,spin_vir_num
do j=1,spin_occ_num
do i=1,spin_occ_num
tau(i,j,a,b) = 0.5d0*t2(i,j,a,b) + t1(i,a)*t1(j,b)
enddo
enddo
enddo
enddo
end subroutine form_tau

View File

@ -1,28 +1,21 @@
subroutine form_tau_nc(tau) BEGIN_PROVIDER [ double precision, tau_cc, (spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num) ]
implicit none
BEGIN_DOC
! Tau in CCSD
END_DOC
! Form tau in CCSD integer :: i,j,a,b
implicit none
! Local variables
integer :: i,j,k,l
integer :: a,b,c,d
! Output variables
double precision,intent(out) :: tau(spin_occ_num,spin_occ_num,spin_vir_num,spin_vir_num)
do b=1,spin_vir_num do b=1,spin_vir_num
do a=1,spin_vir_num do a=1,spin_vir_num
do j=1,spin_occ_num do j=1,spin_occ_num
do i=1,spin_occ_num do i=1,spin_occ_num
tau(i,j,a,b) = t2_cc(i,j,a,b) + t1_cc(i,a)*t1_cc(j,b) - t1_cc(i,b)*t1_cc(j,a) tau_cc(i,j,a,b) = t2_cc(i,j,a,b) + t1_cc(i,a)*t1_cc(j,b) - t1_cc(i,b)*t1_cc(j,a)
enddo enddo
enddo enddo
enddo enddo
enddo enddo
end subroutine form_tau_nc END_PROVIDER