mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-07-17 00:20:41 +02:00
549 lines
15 KiB
Fortran
549 lines
15 KiB
Fortran
|
! -*- F90 -*-
|
|||
|
! diagonalize D0tu
|
|||
|
! save the diagonal somewhere, in inverse order
|
|||
|
! 4-index-transform the 2-particle density matrix over active orbitals
|
|||
|
! correct the bielectronic integrals
|
|||
|
! correct the monoelectronic integrals
|
|||
|
! put integrals on file, as well orbitals, and the density matrices
|
|||
|
!
|
|||
|
subroutine trf_to_natorb
|
|||
|
implicit none
|
|||
|
integer :: i,j,k,l,t,u,p,q,pp
|
|||
|
real*8 :: eigval(n_act_orb),natorbsCI(n_act_orb,n_act_orb)
|
|||
|
real*8 :: d(n_act_orb),d1(n_act_orb),d2(n_act_orb)
|
|||
|
|
|||
|
call lapack_diag(eigval,natorbsCI,D0tu,n_act_orb,n_act_orb)
|
|||
|
write(6,*) ' found occupation numbers as '
|
|||
|
do i=1,n_act_orb
|
|||
|
write(6,*) i,eigval(i)
|
|||
|
end do
|
|||
|
|
|||
|
if (bavard) then
|
|||
|
!
|
|||
|
|
|||
|
integer :: nmx
|
|||
|
real*8 :: xmx
|
|||
|
do i=1,n_act_orb
|
|||
|
! largest element of the eigenvector should be positive
|
|||
|
xmx=0.D0
|
|||
|
nmx=0
|
|||
|
do j=1,n_act_orb
|
|||
|
if (abs(natOrbsCI(j,i)).gt.xmx) then
|
|||
|
nmx=j
|
|||
|
xmx=abs(natOrbsCI(j,i))
|
|||
|
end if
|
|||
|
end do
|
|||
|
xmx=sign(1.D0,natOrbsCI(nmx,i))
|
|||
|
do j=1,n_act_orb
|
|||
|
natOrbsCI(j,i)*=xmx
|
|||
|
end do
|
|||
|
|
|||
|
|
|||
|
write(6,*) ' Eigenvector No ',i
|
|||
|
write(6,'(5(I3,F12.5))') (j,natOrbsCI(j,i),j=1,n_act_orb)
|
|||
|
end do
|
|||
|
end if
|
|||
|
|
|||
|
do i=1,n_act_orb
|
|||
|
do j=1,n_act_orb
|
|||
|
D0tu(i,j)=0.D0
|
|||
|
end do
|
|||
|
! fill occupation numbers in descending order
|
|||
|
D0tu(i,i)=eigval(n_act_orb-i+1)
|
|||
|
end do
|
|||
|
!
|
|||
|
! 4-index transformation of 2part matrices
|
|||
|
!
|
|||
|
! index per index
|
|||
|
! first quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=P0tuvx(q,j,k,l)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
P0tuvx(p,j,k,l)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 2nd quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=P0tuvx(j,q,k,l)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
P0tuvx(j,p,k,l)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 3rd quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=P0tuvx(j,k,q,l)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
P0tuvx(j,k,p,l)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 4th quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=P0tuvx(j,k,l,q)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
P0tuvx(j,k,l,p)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
write(6,*) ' transformed P0tuvx '
|
|||
|
!
|
|||
|
! one-electron integrals
|
|||
|
!
|
|||
|
do i=1,mo_num
|
|||
|
do j=1,mo_num
|
|||
|
onetrf(i,j)=mo_one_e_integrals(i,j)
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 1st half-trf
|
|||
|
do j=1,mo_num
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=onetrf(list_act(q),j)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
onetrf(list_act(p),j)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 2nd half-trf
|
|||
|
do j=1,mo_num
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=onetrf(j,list_act(q))*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
onetrf(j,list_act(p))=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
write(6,*) ' transformed onetrf '
|
|||
|
!
|
|||
|
! Orbitals
|
|||
|
!
|
|||
|
do j=1,ao_num
|
|||
|
do i=1,mo_num
|
|||
|
NatOrbsFCI(j,i)=mo_coef(j,i)
|
|||
|
end do
|
|||
|
end do
|
|||
|
|
|||
|
do j=1,ao_num
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=NatOrbsFCI(j,list_act(q))*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
NatOrbsFCI(j,list_act(p))=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
write(6,*) ' transformed orbitals '
|
|||
|
!
|
|||
|
! now the bielectronic integrals
|
|||
|
!
|
|||
|
!!$ write(6,*) ' before the transformation '
|
|||
|
!!$integer :: kk,ll,ii,jj
|
|||
|
!!$real*8 :: h1,h2,h3
|
|||
|
!!$ do i=1,n_act_orb
|
|||
|
!!$ ii=list_act(i)
|
|||
|
!!$ do j=1,n_act_orb
|
|||
|
!!$ jj=list_act(j)
|
|||
|
!!$ do k=1,n_act_orb
|
|||
|
!!$ kk=list_act(k)
|
|||
|
!!$ do l=1,n_act_orb
|
|||
|
!!$ ll=list_act(l)
|
|||
|
!!$ h1=bielec_PQxxtmp(ii,jj,k+n_core_orb,l+n_core_orb)
|
|||
|
!!$ h2=bielec_PxxQtmp(ii,j+n_core_orb,k+n_core_orb,ll)
|
|||
|
!!$ h3=bielecCItmp(i,j,k,ll)
|
|||
|
!!$ if ((h1.ne.h2).or.(h1.ne.h3)) then
|
|||
|
!!$ write(6,9901) i,j,k,l,h1,h2,h3
|
|||
|
!!$9901 format(' aie ',4i4,3E20.12)
|
|||
|
!!$9902 format('correct',4i4,3E20.12)
|
|||
|
!!$ else
|
|||
|
!!$ write(6,9902) i,j,k,l,h1,h2,h3
|
|||
|
!!$ end if
|
|||
|
!!$ end do
|
|||
|
!!$ end do
|
|||
|
!!$ end do
|
|||
|
!!$ end do
|
|||
|
|
|||
|
do j=1,mo_num
|
|||
|
do k=1,n_core_orb+n_act_orb
|
|||
|
do l=1,n_core_orb+n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d1(p)=0.D0
|
|||
|
d2(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d1(pp)+=bielec_PQxxtmp(list_act(q),j,k,l)*natorbsCI(q,p)
|
|||
|
d2(pp)+=bielec_PxxQtmp(list_act(q),k,l,j)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielec_PQxxtmp(list_act(p),j,k,l)=d1(p)
|
|||
|
bielec_PxxQtmp(list_act(p),k,l,j)=d2(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 2nd quarter
|
|||
|
do j=1,mo_num
|
|||
|
do k=1,n_core_orb+n_act_orb
|
|||
|
do l=1,n_core_orb+n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d1(p)=0.D0
|
|||
|
d2(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d1(pp)+=bielec_PQxxtmp(j,list_act(q),k,l)*natorbsCI(q,p)
|
|||
|
d2(pp)+=bielec_PxxQtmp(j,k,l,list_act(q))*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielec_PQxxtmp(j,list_act(p),k,l)=d1(p)
|
|||
|
bielec_PxxQtmp(j,k,l,list_act(p))=d2(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 3rd quarter
|
|||
|
do j=1,mo_num
|
|||
|
do k=1,mo_num
|
|||
|
do l=1,n_core_orb+n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d1(p)=0.D0
|
|||
|
d2(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d1(pp)+=bielec_PQxxtmp(j,k,n_core_orb+q,l)*natorbsCI(q,p)
|
|||
|
d2(pp)+=bielec_PxxQtmp(j,n_core_orb+q,l,k)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielec_PQxxtmp(j,k,n_core_orb+p,l)=d1(p)
|
|||
|
bielec_PxxQtmp(j,n_core_orb+p,l,k)=d2(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 4th quarter
|
|||
|
do j=1,mo_num
|
|||
|
do k=1,mo_num
|
|||
|
do l=1,n_core_orb+n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d1(p)=0.D0
|
|||
|
d2(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d1(pp)+=bielec_PQxxtmp(j,k,l,n_core_orb+q)*natorbsCI(q,p)
|
|||
|
d2(pp)+=bielec_PxxQtmp(j,l,n_core_orb+q,k)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielec_PQxxtmp(j,k,l,n_core_orb+p)=d1(p)
|
|||
|
bielec_PxxQtmp(j,l,n_core_orb+p,k)=d2(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
write(6,*) ' transformed PQxx and PxxQ '
|
|||
|
!
|
|||
|
! and finally the bielecCI integrals
|
|||
|
!
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,mo_num
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=bielecCItmp(q,j,k,l)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielecCItmp(p,j,k,l)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 2nd quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,mo_num
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=bielecCItmp(j,q,k,l)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielecCItmp(j,p,k,l)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 3rd quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,mo_num
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=bielecCItmp(j,k,q,l)*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielecCItmp(j,k,p,l)=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
! 4th quarter
|
|||
|
do j=1,n_act_orb
|
|||
|
do k=1,n_act_orb
|
|||
|
do l=1,n_act_orb
|
|||
|
do p=1,n_act_orb
|
|||
|
d(p)=0.D0
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
pp=n_act_orb-p+1
|
|||
|
do q=1,n_act_orb
|
|||
|
d(pp)+=bielecCItmp(j,k,l,list_act(q))*natorbsCI(q,p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
do p=1,n_act_orb
|
|||
|
bielecCItmp(j,k,l,list_act(p))=d(p)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
write(6,*) ' transformed tuvP '
|
|||
|
!
|
|||
|
! that's all
|
|||
|
!
|
|||
|
!!$
|
|||
|
!!$! test coherence of the bielectronic integals
|
|||
|
!!$! PQxx = PxxQ = tuvP for some of the indices
|
|||
|
!!$ write(6,*) ' after the transformation '
|
|||
|
!!$ do i=1,n_act_orb
|
|||
|
!!$ ii=list_act(i)
|
|||
|
!!$ do j=1,n_act_orb
|
|||
|
!!$ jj=list_act(j)
|
|||
|
!!$ do k=1,n_act_orb
|
|||
|
!!$ kk=list_act(k)
|
|||
|
!!$ do l=1,n_act_orb
|
|||
|
!!$ ll=list_act(l)
|
|||
|
!!$ h1=bielec_PQxxtmp(ii,jj,k+n_core_orb,l+n_core_orb)
|
|||
|
!!$ h2=bielec_PxxQtmp(ii,j+n_core_orb,k+n_core_orb,ll)
|
|||
|
!!$ h3=bielecCItmp(i,j,k,ll)
|
|||
|
!!$ if ((abs(h1-h2).gt.1.D-14).or.(abs(h1-h3).gt.1.D-14)) then
|
|||
|
!!$ write(6,9901) i,j,k,l,h1,h1-h2,h1-h3
|
|||
|
!!$ else
|
|||
|
!!$ write(6,9902) i,j,k,l,h1,h2,h3
|
|||
|
!!$ end if
|
|||
|
!!$ end do
|
|||
|
!!$ end do
|
|||
|
!!$ end do
|
|||
|
!!$ end do
|
|||
|
|
|||
|
! we recalculate total energies
|
|||
|
write(6,*)
|
|||
|
write(6,*) ' recalculating energies after the transformation '
|
|||
|
write(6,*)
|
|||
|
write(6,*)
|
|||
|
real*8 :: e_one_all
|
|||
|
real*8 :: e_two_all
|
|||
|
integer :: ii
|
|||
|
integer :: jj
|
|||
|
integer :: t3
|
|||
|
integer :: tt
|
|||
|
integer :: u3
|
|||
|
integer :: uu
|
|||
|
integer :: v
|
|||
|
integer :: v3
|
|||
|
integer :: vv
|
|||
|
integer :: x
|
|||
|
integer :: x3
|
|||
|
integer :: xx
|
|||
|
|
|||
|
e_one_all=0.D0
|
|||
|
e_two_all=0.D0
|
|||
|
do i=1,n_core_orb
|
|||
|
ii=list_core(i)
|
|||
|
e_one_all+=2.D0*onetrf(ii,ii)
|
|||
|
do j=1,n_core_orb
|
|||
|
jj=list_core(j)
|
|||
|
e_two_all+=2.D0*bielec_PQxxtmp(ii,ii,j,j)-bielec_PQxxtmp(ii,jj,j,i)
|
|||
|
end do
|
|||
|
do t=1,n_act_orb
|
|||
|
tt=list_act(t)
|
|||
|
t3=t+n_core_orb
|
|||
|
do u=1,n_act_orb
|
|||
|
uu=list_act(u)
|
|||
|
u3=u+n_core_orb
|
|||
|
e_two_all+=D0tu(t,u)*(2.D0*bielec_PQxxtmp(tt,uu,i,i) &
|
|||
|
-bielec_PQxxtmp(tt,ii,i,u3))
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
do t=1,n_act_orb
|
|||
|
tt=list_act(t)
|
|||
|
do u=1,n_act_orb
|
|||
|
uu=list_act(u)
|
|||
|
e_one_all+=D0tu(t,u)*onetrf(tt,uu)
|
|||
|
do v=1,n_act_orb
|
|||
|
v3=v+n_core_orb
|
|||
|
do x=1,n_act_orb
|
|||
|
x3=x+n_core_orb
|
|||
|
e_two_all +=P0tuvx(t,u,v,x)*bielec_PQxxtmp(tt,uu,v3,x3)
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
write(6,*) ' e_one_all = ',e_one_all
|
|||
|
write(6,*) ' e_two_all = ',e_two_all
|
|||
|
ecore =nuclear_repulsion
|
|||
|
ecore_bis=nuclear_repulsion
|
|||
|
do i=1,n_core_orb
|
|||
|
ii=list_core(i)
|
|||
|
ecore +=2.D0*onetrf(ii,ii)
|
|||
|
ecore_bis+=2.D0*onetrf(ii,ii)
|
|||
|
do j=1,n_core_orb
|
|||
|
jj=list_core(j)
|
|||
|
ecore +=2.D0*bielec_PQxxtmp(ii,ii,j,j)-bielec_PQxxtmp(ii,jj,j,i)
|
|||
|
ecore_bis+=2.D0*bielec_PxxQtmp(ii,i,j,jj)-bielec_PxxQtmp(ii,j,j,ii)
|
|||
|
end do
|
|||
|
end do
|
|||
|
eone =0.D0
|
|||
|
eone_bis=0.D0
|
|||
|
etwo =0.D0
|
|||
|
etwo_bis=0.D0
|
|||
|
etwo_ter=0.D0
|
|||
|
do t=1,n_act_orb
|
|||
|
tt=list_act(t)
|
|||
|
t3=t+n_core_orb
|
|||
|
do u=1,n_act_orb
|
|||
|
uu=list_act(u)
|
|||
|
u3=u+n_core_orb
|
|||
|
eone +=D0tu(t,u)*onetrf(tt,uu)
|
|||
|
eone_bis+=D0tu(t,u)*onetrf(tt,uu)
|
|||
|
do i=1,n_core_orb
|
|||
|
ii=list_core(i)
|
|||
|
eone +=D0tu(t,u)*(2.D0*bielec_PQxxtmp(tt,uu,i,i) &
|
|||
|
-bielec_PQxxtmp(tt,ii,i,u3))
|
|||
|
eone_bis+=D0tu(t,u)*(2.D0*bielec_PxxQtmp(tt,u3,i,ii) &
|
|||
|
-bielec_PxxQtmp(tt,i,i,uu))
|
|||
|
end do
|
|||
|
do v=1,n_act_orb
|
|||
|
vv=list_act(v)
|
|||
|
v3=v+n_core_orb
|
|||
|
do x=1,n_act_orb
|
|||
|
xx=list_act(x)
|
|||
|
x3=x+n_core_orb
|
|||
|
real*8 :: h1,h2,h3
|
|||
|
h1=bielec_PQxxtmp(tt,uu,v3,x3)
|
|||
|
h2=bielec_PxxQtmp(tt,u3,v3,xx)
|
|||
|
h3=bielecCItmp(t,u,v,xx)
|
|||
|
etwo +=P0tuvx(t,u,v,x)*h1
|
|||
|
etwo_bis+=P0tuvx(t,u,v,x)*h2
|
|||
|
etwo_ter+=P0tuvx(t,u,v,x)*h3
|
|||
|
if ((abs(h1-h2).gt.1.D-14).or.(abs(h1-h3).gt.1.D-14)) then
|
|||
|
write(6,9901) t,u,v,x,h1,h2,h3
|
|||
|
9901 format('aie: ',4I4,3E20.12)
|
|||
|
end if
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
end do
|
|||
|
|
|||
|
write(6,*) ' energy contributions '
|
|||
|
write(6,*) ' core energy = ',ecore,' using PQxx integrals '
|
|||
|
write(6,*) ' core energy (bis) = ',ecore,' using PxxQ integrals '
|
|||
|
write(6,*) ' 1el energy = ',eone ,' using PQxx integrals '
|
|||
|
write(6,*) ' 1el energy (bis) = ',eone ,' using PxxQ integrals '
|
|||
|
write(6,*) ' 2el energy = ',etwo ,' using PQxx integrals '
|
|||
|
write(6,*) ' 2el energy (bis) = ',etwo_bis,' using PxxQ integrals '
|
|||
|
write(6,*) ' 2el energy (ter) = ',etwo_ter,' using tuvP integrals '
|
|||
|
write(6,*) ' ----------------------------------------- '
|
|||
|
write(6,*) ' sum of all = ',eone+etwo+ecore
|
|||
|
write(6,*)
|
|||
|
|
|||
|
end subroutine trf_to_natorb
|
|||
|
|
|||
|
BEGIN_PROVIDER [real*8, onetrf, (mo_num,mo_num)]
|
|||
|
&BEGIN_PROVIDER [real*8, NatOrbsFCI, (ao_num,mo_num)]
|
|||
|
END_PROVIDER
|