mirror of
https://code.it4i.cz/sccs/easyconfigs-it4i.git
synced 2025-04-17 04:00:49 +01:00
1550 lines
66 KiB
Fortran
Executable File
1550 lines
66 KiB
Fortran
Executable File
************************************************************************
|
|
subroutine calcorbh(ngrid,grid,natoms,nangmax,ncontrmax,nprimmax,
|
|
$ncartmax,nsphermax,nang,ncontr,nprim,gexp,gcoef,coord,ctostr,
|
|
$cartg,dvec,nbasis,gexp2,ibasis,nangmin,gcn,itol,lpre,bfmap,
|
|
$iatrange)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,natoms,nangmax,ncontrmax,nprimmax,ncartmax,nsphermax
|
|
integer nang(natoms),ncontr(0:nangmax,natoms),iatoms,igrid,jbasis
|
|
integer nprim(0:nangmax,natoms),nicontr,niprim,nicart,nispher,iang
|
|
integer nangmin(natoms),gcn(2,ncontrmax,0:nangmax,natoms),i,j,ii
|
|
integer nbasis,ibasis,iprim,bfmap(nbasis),iatrange(2,natoms)
|
|
integer icontr
|
|
real*8 grid(3,ngrid),gexp(nprimmax,0:nangmax,natoms),r2,itol,cmax
|
|
real*8 gcoef(nprimmax,ncontrmax,0:nangmax,natoms)
|
|
real*8 coord(3,natoms),ctostr(ncartmax**2,0:nangmax),rmin,rmax
|
|
real*8 x,y,z,ax,ay,az,gexp2(nprimmax),dvec(ngrid*10,nbasis),amin,a
|
|
logical cartg,lat,lpre
|
|
C Loop over atoms
|
|
ibasis=0
|
|
jbasis=0
|
|
do iatoms=1,natoms
|
|
if(lpre) iatrange(1,iatoms)=ibasis
|
|
x=coord(1,iatoms)
|
|
y=coord(2,iatoms)
|
|
z=coord(3,iatoms)
|
|
C Prescreening
|
|
rmin=1d30
|
|
rmax=1.d0
|
|
C$OMP PARALLEL DO Schedule(Static)
|
|
C$OMP& DEFAULT(SHARED)
|
|
C$OMP& PRIVATE(igrid,ax,ay,az,r2)
|
|
C$OMP& REDUCTION(min:rmin)
|
|
C$OMP& REDUCTION(max:rmax)
|
|
do igrid=1,ngrid
|
|
ax=grid(1,igrid)-x
|
|
ay=grid(2,igrid)-y
|
|
az=grid(3,igrid)-z
|
|
r2=ax*ax+ay*ay+az*az
|
|
rmin=min(rmin,r2)
|
|
rmax=max(rmax,r2)
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
rmin=dsqrt(rmin)
|
|
rmax=dsqrt(rmax)
|
|
C Loop over angular momenta
|
|
do iang=nangmin(iatoms),nang(iatoms)
|
|
nicontr=ncontr(iang,iatoms)
|
|
niprim=nprim(iang,iatoms)
|
|
nicart=(iang+1)*(iang+2)/2
|
|
nispher=2*iang+1
|
|
if(cartg) nispher=nicart
|
|
amin=1d30
|
|
cmax=0.d0
|
|
do iprim=1,niprim
|
|
a=gexp(iprim,iang,iatoms)
|
|
amin=min(amin,a)
|
|
gexp2(iprim)=-2.d0*a
|
|
do icontr=1,nicontr
|
|
cmax=max(cmax,dabs(gcoef(iprim,icontr,iang,iatoms)))
|
|
enddo
|
|
enddo
|
|
cmax=dble(niprim)*cmax
|
|
if(cmax*rmax**(iang+2)*dexp(-amin*rmin*rmin).ge.itol) then
|
|
if(iang.gt.5.or.cartg) then
|
|
call calco2_gn(ngrid,grid,x,y,z,niprim,nicontr,nispher,
|
|
$nicart,nprimmax,gcoef(1,1,iang,iatoms),ctostr(1,iang),gexp2,iang,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
else if(iang.eq.0) then
|
|
call calco2_s(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef(1,1,iang,iatoms),gexp2,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
else if(iang.eq.1) then
|
|
call calco2_p(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef(1,1,iang,iatoms),gexp2,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
else if(iang.eq.2) then
|
|
call calco2_d(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef(1,1,iang,iatoms),gexp2,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
else if(iang.eq.3) then
|
|
call calco2_f(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef(1,1,iang,iatoms),gexp2,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
else if(iang.eq.4) then
|
|
call calco2_g(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef(1,1,iang,iatoms),gexp2,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
else if(iang.eq.5) then
|
|
call calco2_h(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef(1,1,iang,iatoms),gexp2,
|
|
$gcn(1,1,iang,iatoms),dvec(1,ibasis+1),nbasis)
|
|
endif
|
|
if(lpre) then
|
|
ii=0
|
|
do i=ibasis+1,ibasis+nispher*nicontr
|
|
jbasis=jbasis+1
|
|
lat=.false.
|
|
do j=1,ngrid*10
|
|
if(dabs(dvec(j,i)).ge.itol) then
|
|
lat=.true.
|
|
exit
|
|
endif
|
|
enddo
|
|
if(lat) then
|
|
ii=ii+1
|
|
bfmap(ibasis+ii)=jbasis
|
|
if(ibasis+ii.ne.i)
|
|
$ dvec(1:ngrid*10,ibasis+ii)=dvec(1:ngrid*10,i)
|
|
endif
|
|
enddo
|
|
ibasis=ibasis+ii
|
|
else
|
|
ibasis=ibasis+nispher*nicontr
|
|
endif
|
|
else
|
|
if(lpre) then
|
|
jbasis=jbasis+nispher*nicontr
|
|
else
|
|
ibasis=ibasis+nispher*nicontr
|
|
endif
|
|
endif
|
|
enddo
|
|
if(lpre) iatrange(2,iatoms)=ibasis
|
|
enddo
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_gn(ngrid,grid,x,y,z,niprim,nicontr,nispher,
|
|
$nicart,nprimmax,gcoef,ctostr,gexp2,iang,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid, gen. shell
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,iang,nicontr,nispher
|
|
integer nicart,nprimmax,icart,gcn(2,*),icontr,j1,j2,ispher
|
|
integer nbasis
|
|
real*8 grid(3,ngrid),ax,ay,az,r2,x,y,z,a,gexp2(niprim),ex,exa
|
|
real*8 gcoef(nprimmax,*),ctostr(nispher,nicart),inta(nicart,10)
|
|
real*8 intr(niprim,10),ints(nispher,10),inti(10)
|
|
real*8 dvec(ngrid,10,nbasis),axy,axz,ayz,ax2,ay2,az2,exa2
|
|
C Loop over grid points
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,iang,gcn,ctostr,gcoef,dvec)
|
|
C$OMP& SHARED(nicontr,nispher)
|
|
do igrid=1,ngrid
|
|
ax=grid(1,igrid)-x
|
|
ay=grid(2,igrid)-y
|
|
az=grid(3,igrid)-z
|
|
axy=ax*ay
|
|
axz=ax*az
|
|
ayz=ay*az
|
|
ax2=ax*ax
|
|
ay2=ay*ay
|
|
az2=az*az
|
|
r2=0.5d0*(ax2+ay2+az2)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*ax
|
|
intr(iprim, 3)=exa*ay
|
|
intr(iprim, 4)=exa*az
|
|
intr(iprim, 5)=exa*(a*ax2+1.d0)
|
|
intr(iprim, 6)=exa*(a*ay2+1.d0)
|
|
intr(iprim, 7)=exa*(a*az2+1.d0)
|
|
intr(iprim, 8)=exa2*axy
|
|
intr(iprim, 9)=exa2*axz
|
|
intr(iprim,10)=exa2*ayz
|
|
enddo
|
|
icart=0
|
|
do i=0,iang
|
|
do j=0,iang-i
|
|
k=iang-i-j
|
|
icart=icart+1
|
|
inta(icart, 1)=ax**i*ay**j*az**k
|
|
inta(icart, 2)=i*ax**max(0,(i-1))*ay**j*az**k
|
|
inta(icart, 3)=ax**i*j*ay**max(0,(j-1))*az**k
|
|
inta(icart, 4)=ax**i*ay**j*k*az**max(0,(k-1))
|
|
inta(icart, 5)=i*(i-1)*ax**max(0,(i-2))*ay**j*az**k
|
|
inta(icart, 6)=ax**i*j*(j-1)*ay**max(0,(j-2))*az**k
|
|
inta(icart, 7)=ax**i*ay**j*k*(k-1)*az**max(0,(k-2))
|
|
inta(icart, 8)=i*ax**max(0,(i-1))*j*ay**max(0,(j-1))*az**k
|
|
inta(icart, 9)=i*ax**max(0,(i-1))*ay**j*k*az**max(0,(k-1))
|
|
inta(icart,10)=ax**i*j*ay**max(0,(j-1))*k*az**max(0,(k-1))
|
|
enddo
|
|
enddo
|
|
ints=matmul(ctostr,inta)
|
|
ii=0
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
inti(1:10)=matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
do ispher=1,nispher
|
|
ii=ii+1
|
|
dvec(igrid, 1,ii)=ints(ispher, 1)*inti( 1)
|
|
dvec(igrid, 2,ii)=ints(ispher, 2)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 2)
|
|
dvec(igrid, 3,ii)=ints(ispher, 3)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 3)
|
|
dvec(igrid, 4,ii)=ints(ispher, 4)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 4)
|
|
dvec(igrid, 5,ii)=ints(ispher, 5)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 5)+
|
|
$ ints(ispher, 2)*inti( 2)*2.d0
|
|
dvec(igrid, 6,ii)=ints(ispher, 6)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 6)+
|
|
$ ints(ispher, 3)*inti( 3)*2.d0
|
|
dvec(igrid, 7,ii)=ints(ispher, 7)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 7)+
|
|
$ ints(ispher, 4)*inti( 4)*2.d0
|
|
dvec(igrid, 8,ii)=ints(ispher, 8)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 8)+
|
|
$ ints(ispher, 2)*inti( 3)+
|
|
$ ints(ispher, 3)*inti( 2)
|
|
dvec(igrid, 9,ii)=ints(ispher, 9)*inti( 1)+
|
|
$ ints(ispher, 1)*inti( 9)+
|
|
$ ints(ispher, 2)*inti( 4)+
|
|
$ ints(ispher, 4)*inti( 2)
|
|
dvec(igrid,10,ii)=ints(ispher,10)*inti( 1)+
|
|
$ ints(ispher, 1)*inti(10)+
|
|
$ ints(ispher, 3)*inti( 4)+
|
|
$ ints(ispher, 4)*inti( 3)
|
|
enddo
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_s(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef,gexp2,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,nicontr
|
|
integer nprimmax,gcn(2,*),icontr,j1,j2,ispher,nbasis
|
|
real*8 grid(3,ngrid),x,y,z,a,gexp2(niprim)
|
|
real*8 gcoef(nprimmax,*),dvec(ngrid,10,nbasis),ex,exa,exa2
|
|
real*8 intr(niprim,10),inti(10)
|
|
real*8 r2,a001,a002,a010,a011,a020,a100,a101,a110,a200
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,gcn,gcoef,dvec,nicontr)
|
|
do igrid=1,ngrid
|
|
a100=grid(1,igrid)-x
|
|
a010=grid(2,igrid)-y
|
|
a001=grid(3,igrid)-z
|
|
a002=a001*a001
|
|
a011=a010*a001
|
|
a020=a010*a010
|
|
a101=a100*a001
|
|
a110=a100*a010
|
|
a200=a100*a100
|
|
r2=0.5d0*(a200+a020+a002)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*a100
|
|
intr(iprim, 3)=exa*a010
|
|
intr(iprim, 4)=exa*a001
|
|
intr(iprim, 5)=exa*(a*a200+1.d0)
|
|
intr(iprim, 6)=exa*(a*a020+1.d0)
|
|
intr(iprim, 7)=exa*(a*a002+1.d0)
|
|
intr(iprim, 8)=exa2*a110
|
|
intr(iprim, 9)=exa2*a101
|
|
intr(iprim,10)=exa2*a011
|
|
enddo
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
dvec(igrid,1:10,icontr)=
|
|
$matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_p(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef,gexp2,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,nicontr
|
|
integer nprimmax,gcn(2,*),icontr,j1,j2,ispher,nbasis
|
|
real*8 grid(3,ngrid),x,y,z,a,gexp2(niprim)
|
|
real*8 gcoef(nprimmax,*),dvec(ngrid,10,nbasis),ex,exa,exa2
|
|
real*8 intr(niprim,10),inti(10)
|
|
real*8 r2,a001,a002,a010,a011,a020,a100,a101,a110,a200
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,gcn,gcoef,dvec,nicontr)
|
|
do igrid=1,ngrid
|
|
a100=grid(1,igrid)-x
|
|
a010=grid(2,igrid)-y
|
|
a001=grid(3,igrid)-z
|
|
a002=a001*a001
|
|
a011=a010*a001
|
|
a020=a010*a010
|
|
a101=a100*a001
|
|
a110=a100*a010
|
|
a200=a100*a100
|
|
r2=0.5d0*(a200+a020+a002)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*a100
|
|
intr(iprim, 3)=exa*a010
|
|
intr(iprim, 4)=exa*a001
|
|
intr(iprim, 5)=exa*(a*a200+1.d0)
|
|
intr(iprim, 6)=exa*(a*a020+1.d0)
|
|
intr(iprim, 7)=exa*(a*a002+1.d0)
|
|
intr(iprim, 8)=exa2*a110
|
|
intr(iprim, 9)=exa2*a101
|
|
intr(iprim,10)=exa2*a011
|
|
enddo
|
|
ii=0
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
inti(1:10)=matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=a001*inti(1)
|
|
dvec(igrid,2,ii)=a001*inti(2)
|
|
dvec(igrid,3,ii)=a001*inti(3)
|
|
dvec(igrid,4,ii)=inti(1)+a001*inti(4)
|
|
dvec(igrid,5,ii)=a001*inti(5)
|
|
dvec(igrid,6,ii)=a001*inti(6)
|
|
dvec(igrid,7,ii)=a001*inti(7)+inti(4)*2.d0
|
|
dvec(igrid,8,ii)=a001*inti(8)
|
|
dvec(igrid,9,ii)=a001*inti(9)+inti(2)
|
|
dvec(igrid,10,ii)=a001*inti(10)+inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=a010*inti(1)
|
|
dvec(igrid,2,ii)=a010*inti(2)
|
|
dvec(igrid,3,ii)=inti(1)+a010*inti(3)
|
|
dvec(igrid,4,ii)=a010*inti(4)
|
|
dvec(igrid,5,ii)=a010*inti(5)
|
|
dvec(igrid,6,ii)=a010*inti(6)+inti(3)*2.d0
|
|
dvec(igrid,7,ii)=a010*inti(7)
|
|
dvec(igrid,8,ii)=a010*inti(8)+inti(2)
|
|
dvec(igrid,9,ii)=a010*inti(9)
|
|
dvec(igrid,10,ii)=a010*inti(10)+inti(4)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=a100*inti(1)
|
|
dvec(igrid,2,ii)=inti(1)+a100*inti(2)
|
|
dvec(igrid,3,ii)=a100*inti(3)
|
|
dvec(igrid,4,ii)=a100*inti(4)
|
|
dvec(igrid,5,ii)=a100*inti(5)+inti(2)*2.d0
|
|
dvec(igrid,6,ii)=a100*inti(6)
|
|
dvec(igrid,7,ii)=a100*inti(7)
|
|
dvec(igrid,8,ii)=a100*inti(8)+inti(3)
|
|
dvec(igrid,9,ii)=a100*inti(9)+inti(4)
|
|
dvec(igrid,10,ii)=a100*inti(10)
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_d(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef,gexp2,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,nicontr
|
|
integer nprimmax,gcn(2,*),icontr,j1,j2,ispher,nbasis
|
|
real*8 grid(3,ngrid),x,y,z,a,gexp2(niprim)
|
|
real*8 gcoef(nprimmax,*),dvec(ngrid,10,nbasis),ex,exa,exa2
|
|
real*8 intr(niprim,10),ints(50),inti(10)
|
|
real*8 r2,a001,a002,a010,a011,a020,a100,a101,a110,a200
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,gcn,gcoef,dvec,nicontr)
|
|
do igrid=1,ngrid
|
|
a100=grid(1,igrid)-x
|
|
a010=grid(2,igrid)-y
|
|
a001=grid(3,igrid)-z
|
|
a002=a001*a001
|
|
a011=a010*a001
|
|
a020=a010*a010
|
|
a101=a100*a001
|
|
a110=a100*a010
|
|
a200=a100*a100
|
|
r2=0.5d0*(a200+a020+a002)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*a100
|
|
intr(iprim, 3)=exa*a010
|
|
intr(iprim, 4)=exa*a001
|
|
intr(iprim, 5)=exa*(a*a200+1.d0)
|
|
intr(iprim, 6)=exa*(a*a020+1.d0)
|
|
intr(iprim, 7)=exa*(a*a002+1.d0)
|
|
intr(iprim, 8)=exa2*a110
|
|
intr(iprim, 9)=exa2*a101
|
|
intr(iprim,10)=exa2*a011
|
|
enddo
|
|
ints(1)=a110*1.73205080756887697113d0
|
|
ints(2)=a011*1.73205080756887697113d0
|
|
ints(3)=a002-(a020+a200)*0.5d0
|
|
ints(4)=a101*1.73205080756887697113d0
|
|
ints(5)=(a200-a020)*0.86602540378443848557d0
|
|
ints(6)=a010*1.73205080756887697113d0
|
|
ints(7)=a001*1.73205080756887697113d0
|
|
ints(8)=a100*2.d0*0.86602540378443848557d0
|
|
ints(9)=a100*1.73205080756887697113d0
|
|
ints(10)=a001*1.73205080756887697113d0
|
|
ints(11)=-a010*2.d0*0.86602540378443848557d0
|
|
ints(12)=a010*1.73205080756887697113d0
|
|
ints(13)=a001*2.d0
|
|
ints(14)=a100*1.73205080756887697113d0
|
|
ii=0
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
inti(1:10)=matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(1)*inti(1)
|
|
dvec(igrid,2,ii)=ints(6)*inti(1)+ints(1)*inti(2)
|
|
dvec(igrid,3,ii)=ints(9)*inti(1)+ints(1)*inti(3)
|
|
dvec(igrid,4,ii)=ints(1)*inti(4)
|
|
dvec(igrid,5,ii)=ints(1)*inti(5)+ints(6)*inti(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(1)*inti(6)+ints(9)*inti(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(1)*inti(7)
|
|
dvec(igrid,8,ii)=1.73205080756887697113d0*inti(1)+ints(1)*inti
|
|
$(8)+ints(6)*inti(3)+ints(9)*inti(2)
|
|
dvec(igrid,9,ii)=ints(1)*inti(9)+ints(6)*inti(4)
|
|
dvec(igrid,10,ii)=ints(1)*inti(10)+ints(9)*inti(4)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(2)*inti(1)
|
|
dvec(igrid,2,ii)=ints(2)*inti(2)
|
|
dvec(igrid,3,ii)=ints(10)*inti(1)+ints(2)*inti(3)
|
|
dvec(igrid,4,ii)=ints(12)*inti(1)+ints(2)*inti(4)
|
|
dvec(igrid,5,ii)=ints(2)*inti(5)
|
|
dvec(igrid,6,ii)=ints(2)*inti(6)+ints(10)*inti(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(2)*inti(7)+ints(12)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(2)*inti(8)+ints(10)*inti(2)
|
|
dvec(igrid,9,ii)=ints(2)*inti(9)+ints(12)*inti(2)
|
|
dvec(igrid,10,ii)=1.73205080756887697113d0*inti(1)+ints(2)*int
|
|
$i(10)+ints(10)*inti(4)+ints(12)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(3)*inti(1)
|
|
dvec(igrid,2,ii)=-a100*inti(1)+ints(3)*inti(2)
|
|
dvec(igrid,3,ii)=-a010*inti(1)+ints(3)*inti(3)
|
|
dvec(igrid,4,ii)=ints(13)*inti(1)+ints(3)*inti(4)
|
|
dvec(igrid,5,ii)=-inti(1)+ints(3)*inti(5)-a100*inti(2)*2.d0
|
|
dvec(igrid,6,ii)=-inti(1)+ints(3)*inti(6)-a010*inti(3)*2.d0
|
|
dvec(igrid,7,ii)=2.d0*inti(1)+ints(3)*inti(7)+ints(13)*inti(4)
|
|
$*2.d0
|
|
dvec(igrid,8,ii)=ints(3)*inti(8)-a100*inti(3)-a010*inti(2)
|
|
dvec(igrid,9,ii)=ints(3)*inti(9)-a100*inti(4)+ints(13)*inti(2)
|
|
dvec(igrid,10,ii)=ints(3)*inti(10)-a010*inti(4)+ints(13)*inti(
|
|
$3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(4)*inti(1)
|
|
dvec(igrid,2,ii)=ints(7)*inti(1)+ints(4)*inti(2)
|
|
dvec(igrid,3,ii)=ints(4)*inti(3)
|
|
dvec(igrid,4,ii)=ints(14)*inti(1)+ints(4)*inti(4)
|
|
dvec(igrid,5,ii)=ints(4)*inti(5)+ints(7)*inti(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(4)*inti(6)
|
|
dvec(igrid,7,ii)=ints(4)*inti(7)+ints(14)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(4)*inti(8)+ints(7)*inti(3)
|
|
dvec(igrid,9,ii)=1.73205080756887697113d0*inti(1)+ints(4)*inti
|
|
$(9)+ints(7)*inti(4)+ints(14)*inti(2)
|
|
dvec(igrid,10,ii)=ints(4)*inti(10)+ints(14)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(5)*inti(1)
|
|
dvec(igrid,2,ii)=ints(8)*inti(1)+ints(5)*inti(2)
|
|
dvec(igrid,3,ii)=ints(11)*inti(1)+ints(5)*inti(3)
|
|
dvec(igrid,4,ii)=ints(5)*inti(4)
|
|
dvec(igrid,5,ii)=1.73205080756887697113d0*inti(1)+ints(5)*inti
|
|
$(5)+ints(8)*inti(2)*2.d0
|
|
dvec(igrid,6,ii)=-1.73205080756887697113d0*inti(1)+ints(5)*int
|
|
$i(6)+ints(11)*inti(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(5)*inti(7)
|
|
dvec(igrid,8,ii)=ints(5)*inti(8)+ints(8)*inti(3)+ints(11)*inti
|
|
$(2)
|
|
dvec(igrid,9,ii)=ints(5)*inti(9)+ints(8)*inti(4)
|
|
dvec(igrid,10,ii)=ints(5)*inti(10)+ints(11)*inti(4)
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_f(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef,gexp2,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,nicontr
|
|
integer nprimmax,gcn(2,*),icontr,j1,j2,ispher,nbasis
|
|
real*8 grid(3,ngrid),x,y,z,a,gexp2(niprim)
|
|
real*8 gcoef(nprimmax,*),dvec(ngrid,10,nbasis),ex,exa,exa2
|
|
real*8 intr(niprim,10),ints(70),inti(10)
|
|
real*8 r2,a001,a002,a003,a010,a011,a012,a020,a021,a030,a100,a101,a
|
|
$102,a110,a111,a120,a200,a201,a210,a300
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,gcn,gcoef,dvec,nicontr)
|
|
do igrid=1,ngrid
|
|
a100=grid(1,igrid)-x
|
|
a010=grid(2,igrid)-y
|
|
a001=grid(3,igrid)-z
|
|
a002=a001*a001
|
|
a003=a002*a001
|
|
a011=a010*a001
|
|
a020=a010*a010
|
|
a030=a020*a010
|
|
a101=a100*a001
|
|
a110=a100*a010
|
|
a200=a100*a100
|
|
a300=a200*a100
|
|
r2=0.5d0*(a200+a020+a002)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*a100
|
|
intr(iprim, 3)=exa*a010
|
|
intr(iprim, 4)=exa*a001
|
|
intr(iprim, 5)=exa*(a*a200+1.d0)
|
|
intr(iprim, 6)=exa*(a*a020+1.d0)
|
|
intr(iprim, 7)=exa*(a*a002+1.d0)
|
|
intr(iprim, 8)=exa2*a110
|
|
intr(iprim, 9)=exa2*a101
|
|
intr(iprim,10)=exa2*a011
|
|
enddo
|
|
a012=a011*a001
|
|
a021=a020*a001
|
|
a102=a101*a001
|
|
a111=a110*a001
|
|
a120=a110*a010
|
|
a201=a200*a001
|
|
a210=a200*a010
|
|
ints(1)=a210*2.37170824512628453107d0-a030*0.7905694150420947696
|
|
$7d0
|
|
ints(2)=a111*3.87298334620741657730d0
|
|
ints(3)=a012*2.44948974278317788134d0-(a030+a210)*0.612372435695
|
|
$79447033d0
|
|
ints(4)=a003-(a021+a201)*1.5d0
|
|
ints(5)=a102*2.44948974278317788134d0-(a120+a300)*0.612372435695
|
|
$79447033d0
|
|
ints(6)=(a201-a021)*1.93649167310370828865d0
|
|
ints(7)=a300*0.79056941504209476967d0-a120*2.3717082451262845310
|
|
$7d0
|
|
ints(8)=a110*2.d0*2.37170824512628453107d0
|
|
ints(9)=a011*3.87298334620741657730d0
|
|
ints(10)=-a110*2.d0*0.61237243569579447033d0
|
|
ints(11)=-a101*2.d0*1.5d0
|
|
ints(12)=a002*2.44948974278317788134d0-(a020+a200*3.d0)*0.612372
|
|
$43569579447033d0
|
|
ints(13)=a101*2.d0*1.93649167310370828865d0
|
|
ints(14)=a200*3.d0*0.79056941504209476967d0-a020*2.3717082451262
|
|
$8453107d0
|
|
ints(15)=a200*2.37170824512628453107d0-a020*3.d0*0.7905694150420
|
|
$9476967d0
|
|
ints(16)=a101*3.87298334620741657730d0
|
|
ints(17)=a002*2.44948974278317788134d0-(a020*3.d0+a200)*0.612372
|
|
$43569579447033d0
|
|
ints(18)=-a011*2.d0*1.5d0
|
|
ints(19)=-a110*2.d0*0.61237243569579447033d0
|
|
ints(20)=-a011*2.d0*1.93649167310370828865d0
|
|
ints(21)=-a110*2.d0*2.37170824512628453107d0
|
|
ints(22)=a110*3.87298334620741657730d0
|
|
ints(23)=a011*2.d0*2.44948974278317788134d0
|
|
ints(24)=a002*3.d0-(a020+a200)*1.5d0
|
|
ints(25)=a101*2.d0*2.44948974278317788134d0
|
|
ints(26)=(a200-a020)*1.93649167310370828865d0
|
|
ints(27)=a010*2.d0*2.37170824512628453107d0
|
|
ints(28)=-a010*2.d0*0.61237243569579447033d0
|
|
ints(29)=-a001*2.d0*1.5d0
|
|
ints(30)=-a100*6.d0*0.61237243569579447033d0
|
|
ints(31)=a001*2.d0*1.93649167310370828865d0
|
|
ints(32)=a100*6.d0*0.79056941504209476967d0
|
|
ints(33)=-a010*6.d0*0.79056941504209476967d0
|
|
ints(34)=-a010*6.d0*0.61237243569579447033d0
|
|
ints(35)=-a001*2.d0*1.5d0
|
|
ints(36)=-a100*2.d0*0.61237243569579447033d0
|
|
ints(37)=-a001*2.d0*1.93649167310370828865d0
|
|
ints(38)=-a100*2.d0*2.37170824512628453107d0
|
|
ints(39)=a010*2.d0*2.44948974278317788134d0
|
|
ints(40)=a001*6.d0
|
|
ints(41)=a100*2.d0*2.44948974278317788134d0
|
|
ints(42)=a100*2.d0*2.37170824512628453107d0
|
|
ints(43)=a001*3.87298334620741657730d0
|
|
ints(44)=-a100*2.d0*0.61237243569579447033d0
|
|
ints(45)=-a010*2.d0*0.61237243569579447033d0
|
|
ints(46)=-a010*2.d0*2.37170824512628453107d0
|
|
ints(47)=a010*3.87298334620741657730d0
|
|
ints(48)=-a100*2.d0*1.5d0
|
|
ints(49)=a001*2.d0*2.44948974278317788134d0
|
|
ints(50)=a100*2.d0*1.93649167310370828865d0
|
|
ints(51)=a100*3.87298334620741657730d0
|
|
ints(52)=a001*2.d0*2.44948974278317788134d0
|
|
ints(53)=-a010*2.d0*1.5d0
|
|
ints(54)=-a010*2.d0*1.93649167310370828865d0
|
|
ii=0
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
inti(1:10)=matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(1)*inti(1)
|
|
dvec(igrid,2,ii)=ints(8)*inti(1)+ints(1)*inti(2)
|
|
dvec(igrid,3,ii)=ints(15)*inti(1)+ints(1)*inti(3)
|
|
dvec(igrid,4,ii)=ints(1)*inti(4)
|
|
dvec(igrid,5,ii)=ints(27)*inti(1)+ints(1)*inti(5)+ints(8)*inti
|
|
$(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(33)*inti(1)+ints(1)*inti(6)+ints(15)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(1)*inti(7)
|
|
dvec(igrid,8,ii)=ints(42)*inti(1)+ints(1)*inti(8)+ints(8)*inti
|
|
$(3)+ints(15)*inti(2)
|
|
dvec(igrid,9,ii)=ints(1)*inti(9)+ints(8)*inti(4)
|
|
dvec(igrid,10,ii)=ints(1)*inti(10)+ints(15)*inti(4)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(2)*inti(1)
|
|
dvec(igrid,2,ii)=ints(9)*inti(1)+ints(2)*inti(2)
|
|
dvec(igrid,3,ii)=ints(16)*inti(1)+ints(2)*inti(3)
|
|
dvec(igrid,4,ii)=ints(22)*inti(1)+ints(2)*inti(4)
|
|
dvec(igrid,5,ii)=ints(2)*inti(5)+ints(9)*inti(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(2)*inti(6)+ints(16)*inti(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(2)*inti(7)+ints(22)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(43)*inti(1)+ints(2)*inti(8)+ints(9)*inti
|
|
$(3)+ints(16)*inti(2)
|
|
dvec(igrid,9,ii)=ints(47)*inti(1)+ints(2)*inti(9)+ints(9)*inti
|
|
$(4)+ints(22)*inti(2)
|
|
dvec(igrid,10,ii)=ints(51)*inti(1)+ints(2)*inti(10)+ints(16)*i
|
|
$nti(4)+ints(22)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(3)*inti(1)
|
|
dvec(igrid,2,ii)=ints(10)*inti(1)+ints(3)*inti(2)
|
|
dvec(igrid,3,ii)=ints(17)*inti(1)+ints(3)*inti(3)
|
|
dvec(igrid,4,ii)=ints(23)*inti(1)+ints(3)*inti(4)
|
|
dvec(igrid,5,ii)=ints(28)*inti(1)+ints(3)*inti(5)+ints(10)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(34)*inti(1)+ints(3)*inti(6)+ints(17)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(39)*inti(1)+ints(3)*inti(7)+ints(23)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(44)*inti(1)+ints(3)*inti(8)+ints(10)*int
|
|
$i(3)+ints(17)*inti(2)
|
|
dvec(igrid,9,ii)=ints(3)*inti(9)+ints(10)*inti(4)+ints(23)*int
|
|
$i(2)
|
|
dvec(igrid,10,ii)=ints(52)*inti(1)+ints(3)*inti(10)+ints(17)*i
|
|
$nti(4)+ints(23)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(4)*inti(1)
|
|
dvec(igrid,2,ii)=ints(11)*inti(1)+ints(4)*inti(2)
|
|
dvec(igrid,3,ii)=ints(18)*inti(1)+ints(4)*inti(3)
|
|
dvec(igrid,4,ii)=ints(24)*inti(1)+ints(4)*inti(4)
|
|
dvec(igrid,5,ii)=ints(29)*inti(1)+ints(4)*inti(5)+ints(11)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(35)*inti(1)+ints(4)*inti(6)+ints(18)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(40)*inti(1)+ints(4)*inti(7)+ints(24)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(4)*inti(8)+ints(11)*inti(3)+ints(18)*int
|
|
$i(2)
|
|
dvec(igrid,9,ii)=ints(48)*inti(1)+ints(4)*inti(9)+ints(11)*int
|
|
$i(4)+ints(24)*inti(2)
|
|
dvec(igrid,10,ii)=ints(53)*inti(1)+ints(4)*inti(10)+ints(18)*i
|
|
$nti(4)+ints(24)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(5)*inti(1)
|
|
dvec(igrid,2,ii)=ints(12)*inti(1)+ints(5)*inti(2)
|
|
dvec(igrid,3,ii)=ints(19)*inti(1)+ints(5)*inti(3)
|
|
dvec(igrid,4,ii)=ints(25)*inti(1)+ints(5)*inti(4)
|
|
dvec(igrid,5,ii)=ints(30)*inti(1)+ints(5)*inti(5)+ints(12)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(36)*inti(1)+ints(5)*inti(6)+ints(19)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(41)*inti(1)+ints(5)*inti(7)+ints(25)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(45)*inti(1)+ints(5)*inti(8)+ints(12)*int
|
|
$i(3)+ints(19)*inti(2)
|
|
dvec(igrid,9,ii)=ints(49)*inti(1)+ints(5)*inti(9)+ints(12)*int
|
|
$i(4)+ints(25)*inti(2)
|
|
dvec(igrid,10,ii)=ints(5)*inti(10)+ints(19)*inti(4)+ints(25)*i
|
|
$nti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(6)*inti(1)
|
|
dvec(igrid,2,ii)=ints(13)*inti(1)+ints(6)*inti(2)
|
|
dvec(igrid,3,ii)=ints(20)*inti(1)+ints(6)*inti(3)
|
|
dvec(igrid,4,ii)=ints(26)*inti(1)+ints(6)*inti(4)
|
|
dvec(igrid,5,ii)=ints(31)*inti(1)+ints(6)*inti(5)+ints(13)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(37)*inti(1)+ints(6)*inti(6)+ints(20)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(6)*inti(7)+ints(26)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(6)*inti(8)+ints(13)*inti(3)+ints(20)*int
|
|
$i(2)
|
|
dvec(igrid,9,ii)=ints(50)*inti(1)+ints(6)*inti(9)+ints(13)*int
|
|
$i(4)+ints(26)*inti(2)
|
|
dvec(igrid,10,ii)=ints(54)*inti(1)+ints(6)*inti(10)+ints(20)*i
|
|
$nti(4)+ints(26)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(7)*inti(1)
|
|
dvec(igrid,2,ii)=ints(14)*inti(1)+ints(7)*inti(2)
|
|
dvec(igrid,3,ii)=ints(21)*inti(1)+ints(7)*inti(3)
|
|
dvec(igrid,4,ii)=ints(7)*inti(4)
|
|
dvec(igrid,5,ii)=ints(32)*inti(1)+ints(7)*inti(5)+ints(14)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(38)*inti(1)+ints(7)*inti(6)+ints(21)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(7)*inti(7)
|
|
dvec(igrid,8,ii)=ints(46)*inti(1)+ints(7)*inti(8)+ints(14)*int
|
|
$i(3)+ints(21)*inti(2)
|
|
dvec(igrid,9,ii)=ints(7)*inti(9)+ints(14)*inti(4)
|
|
dvec(igrid,10,ii)=ints(7)*inti(10)+ints(21)*inti(4)
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_g(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef,gexp2,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,nicontr
|
|
integer nprimmax,gcn(2,*),icontr,j1,j2,ispher,nbasis
|
|
real*8 grid(3,ngrid),x,y,z,a,gexp2(niprim)
|
|
real*8 gcoef(nprimmax,*),dvec(ngrid,10,nbasis),ex,exa,exa2
|
|
real*8 intr(niprim,10),ints(90),inti(10)
|
|
real*8 r2,a001,a002,a003,a004,a010,a011,a012,a013,a020,a021,a022,a
|
|
$030,a031,a040,a100,a101,a102,a103,a110,a111,a112,a120,a121,a130,a2
|
|
$00,a201,a202,a210,a211,a220,a300,a301,a310,a400
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,gcn,gcoef,dvec,nicontr)
|
|
do igrid=1,ngrid
|
|
a100=grid(1,igrid)-x
|
|
a010=grid(2,igrid)-y
|
|
a001=grid(3,igrid)-z
|
|
a002=a001*a001
|
|
a003=a002*a001
|
|
a004=a003*a001
|
|
a011=a010*a001
|
|
a020=a010*a010
|
|
a030=a020*a010
|
|
a040=a030*a010
|
|
a101=a100*a001
|
|
a110=a100*a010
|
|
a200=a100*a100
|
|
a300=a200*a100
|
|
a400=a300*a100
|
|
r2=0.5d0*(a200+a020+a002)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*a100
|
|
intr(iprim, 3)=exa*a010
|
|
intr(iprim, 4)=exa*a001
|
|
intr(iprim, 5)=exa*(a*a200+1.d0)
|
|
intr(iprim, 6)=exa*(a*a020+1.d0)
|
|
intr(iprim, 7)=exa*(a*a002+1.d0)
|
|
intr(iprim, 8)=exa2*a110
|
|
intr(iprim, 9)=exa2*a101
|
|
intr(iprim,10)=exa2*a011
|
|
enddo
|
|
a012=a011*a001
|
|
a013=a012*a001
|
|
a021=a020*a001
|
|
a022=a021*a001
|
|
a031=a030*a001
|
|
a102=a101*a001
|
|
a103=a102*a001
|
|
a111=a110*a001
|
|
a112=a111*a001
|
|
a120=a110*a010
|
|
a121=a120*a001
|
|
a130=a120*a010
|
|
a201=a200*a001
|
|
a202=a201*a001
|
|
a210=a200*a010
|
|
a211=a210*a001
|
|
a220=a210*a010
|
|
a301=a300*a001
|
|
a310=a300*a010
|
|
ints(1)=(a310-a130)*2.95803989154980806475d0
|
|
ints(2)=a211*6.27495019900556627590d0-a031*2.0916500663351889066
|
|
$6d0
|
|
ints(3)=a112*6.70820393249936941515d0-(a130+a310)*1.118033988749
|
|
$89490253d0
|
|
ints(4)=a013*3.16227766016837907870d0-(a031+a211)*2.371708245126
|
|
$28453107d0
|
|
ints(5)=a004-(a022+a202)*3.d0+(a040+a400)*0.375d0+a220*0.75d0
|
|
ints(6)=a103*3.16227766016837907870d0-(a121+a301)*2.371708245126
|
|
$28453107d0
|
|
ints(7)=(a202-a022)*3.35410196624968470758d0+(a040-a400)*0.55901
|
|
$699437494745126d0
|
|
ints(8)=a301*2.09165006633518890666d0-a121*6.2749501990055662759
|
|
$0d0
|
|
ints(9)=(a040+a400)*0.73950997288745201619d0-a220*4.437059837324
|
|
$71231917d0
|
|
ints(10)=(a210*3.d0-a030)*2.95803989154980806475d0
|
|
ints(11)=a111*2.d0*6.27495019900556627590d0
|
|
ints(12)=a012*6.70820393249936941515d0-(a030+a210*3.d0)*1.118033
|
|
$98874989490253d0
|
|
ints(13)=-a111*2.d0*2.37170824512628453107d0
|
|
ints(14)=-a102*2.d0*3.d0+a300*4.d0*0.375d0+a120*2.d0*0.75d0
|
|
ints(15)=a003*3.16227766016837907870d0-(a021+a201*3.d0)*2.371708
|
|
$24512628453107d0
|
|
ints(16)=a102*2.d0*3.35410196624968470758d0-a300*4.d0*0.55901699
|
|
$437494745126d0
|
|
ints(17)=a201*3.d0*2.09165006633518890666d0-a021*6.2749501990055
|
|
$6627590d0
|
|
ints(18)=a300*4.d0*0.73950997288745201619d0-a120*2.d0*4.43705983
|
|
$732471231917d0
|
|
ints(19)=(a300-a120*3.d0)*2.95803989154980806475d0
|
|
ints(20)=a201*6.27495019900556627590d0-a021*3.d0*2.0916500663351
|
|
$8890666d0
|
|
ints(21)=a102*6.70820393249936941515d0-(a120*3.d0+a300)*1.118033
|
|
$98874989490253d0
|
|
ints(22)=a003*3.16227766016837907870d0-(a021*3.d0+a201)*2.371708
|
|
$24512628453107d0
|
|
ints(23)=-a012*2.d0*3.d0+a030*4.d0*0.375d0+a210*2.d0*0.75d0
|
|
ints(24)=-a111*2.d0*2.37170824512628453107d0
|
|
ints(25)=-a012*2.d0*3.35410196624968470758d0+a030*4.d0*0.5590169
|
|
$9437494745126d0
|
|
ints(26)=-a111*2.d0*6.27495019900556627590d0
|
|
ints(27)=a030*4.d0*0.73950997288745201619d0-a210*2.d0*4.43705983
|
|
$732471231917d0
|
|
ints(28)=a210*6.27495019900556627590d0-a030*2.091650066335188906
|
|
$66d0
|
|
ints(29)=a111*2.d0*6.70820393249936941515d0
|
|
ints(30)=a012*3.d0*3.16227766016837907870d0-(a030+a210)*2.371708
|
|
$24512628453107d0
|
|
ints(31)=a003*4.d0-(a021*2.d0+a201*2.d0)*3.d0
|
|
ints(32)=a102*3.d0*3.16227766016837907870d0-(a120+a300)*2.371708
|
|
$24512628453107d0
|
|
ints(33)=(a201*2.d0-a021*2.d0)*3.35410196624968470758d0
|
|
ints(34)=a300*2.09165006633518890666d0-a120*6.274950199005566275
|
|
$90d0
|
|
ints(35)=a110*6.d0*2.95803989154980806475d0
|
|
ints(36)=a011*2.d0*6.27495019900556627590d0
|
|
ints(37)=-a110*6.d0*1.11803398874989490253d0
|
|
ints(38)=-a011*2.d0*2.37170824512628453107d0
|
|
ints(39)=-a002*2.d0*3.d0+a200*12d0*0.375d0+a020*2.d0*0.75d0
|
|
ints(40)=-a101*6.d0*2.37170824512628453107d0
|
|
ints(41)=a002*2.d0*3.35410196624968470758d0-a200*12d0*0.55901699
|
|
$437494745126d0
|
|
ints(42)=a101*6.d0*2.09165006633518890666d0
|
|
ints(43)=a200*12d0*0.73950997288745201619d0-a020*2.d0*4.43705983
|
|
$732471231917d0
|
|
ints(44)=-a110*6.d0*2.95803989154980806475d0
|
|
ints(45)=-a011*6.d0*2.09165006633518890666d0
|
|
ints(46)=-a110*6.d0*1.11803398874989490253d0
|
|
ints(47)=-a011*6.d0*2.37170824512628453107d0
|
|
ints(48)=-a002*2.d0*3.d0+a020*12d0*0.375d0+a200*2.d0*0.75d0
|
|
ints(49)=-a101*2.d0*2.37170824512628453107d0
|
|
ints(50)=-a002*2.d0*3.35410196624968470758d0+a020*12d0*0.5590169
|
|
$9437494745126d0
|
|
ints(51)=-a101*2.d0*6.27495019900556627590d0
|
|
ints(52)=a020*12d0*0.73950997288745201619d0-a200*2.d0*4.43705983
|
|
$732471231917d0
|
|
ints(53)=a110*2.d0*6.70820393249936941515d0
|
|
ints(54)=a011*6.d0*3.16227766016837907870d0
|
|
ints(55)=a002*12d0-(a020*2.d0+a200*2.d0)*3.d0
|
|
ints(56)=a101*6.d0*3.16227766016837907870d0
|
|
ints(57)=(a200*2.d0-a020*2.d0)*3.35410196624968470758d0
|
|
ints(58)=(a200*3.d0-a020*3.d0)*2.95803989154980806475d0
|
|
ints(59)=a101*2.d0*6.27495019900556627590d0
|
|
ints(60)=a002*6.70820393249936941515d0-(a020*3.d0+a200*3.d0)*1.1
|
|
$1803398874989490253d0
|
|
ints(61)=-a101*2.d0*2.37170824512628453107d0
|
|
ints(62)=a110*4.d0*0.75d0
|
|
ints(63)=-a011*2.d0*2.37170824512628453107d0
|
|
ints(64)=-a011*2.d0*6.27495019900556627590d0
|
|
ints(65)=-a110*4.d0*4.43705983732471231917d0
|
|
ints(66)=a110*2.d0*6.27495019900556627590d0
|
|
ints(67)=a011*2.d0*6.70820393249936941515d0
|
|
ints(68)=-a110*2.d0*2.37170824512628453107d0
|
|
ints(69)=-a101*4.d0*3.d0
|
|
ints(70)=a002*3.d0*3.16227766016837907870d0-(a020+a200*3.d0)*2.3
|
|
$7170824512628453107d0
|
|
ints(71)=a101*4.d0*3.35410196624968470758d0
|
|
ints(72)=a200*3.d0*2.09165006633518890666d0-a020*6.2749501990055
|
|
$6627590d0
|
|
ints(73)=a200*6.27495019900556627590d0-a020*3.d0*2.0916500663351
|
|
$8890666d0
|
|
ints(74)=a101*2.d0*6.70820393249936941515d0
|
|
ints(75)=a002*3.d0*3.16227766016837907870d0-(a020*3.d0+a200)*2.3
|
|
$7170824512628453107d0
|
|
ints(76)=-a011*4.d0*3.d0
|
|
ints(77)=-a110*2.d0*2.37170824512628453107d0
|
|
ints(78)=-a011*4.d0*3.35410196624968470758d0
|
|
ints(79)=-a110*2.d0*6.27495019900556627590d0
|
|
ii=0
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
inti(1:10)=matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(1)*inti(1)
|
|
dvec(igrid,2,ii)=ints(10)*inti(1)+ints(1)*inti(2)
|
|
dvec(igrid,3,ii)=ints(19)*inti(1)+ints(1)*inti(3)
|
|
dvec(igrid,4,ii)=ints(1)*inti(4)
|
|
dvec(igrid,5,ii)=ints(35)*inti(1)+ints(1)*inti(5)+ints(10)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(44)*inti(1)+ints(1)*inti(6)+ints(19)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(1)*inti(7)
|
|
dvec(igrid,8,ii)=ints(58)*inti(1)+ints(1)*inti(8)+ints(10)*int
|
|
$i(3)+ints(19)*inti(2)
|
|
dvec(igrid,9,ii)=ints(1)*inti(9)+ints(10)*inti(4)
|
|
dvec(igrid,10,ii)=ints(1)*inti(10)+ints(19)*inti(4)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(2)*inti(1)
|
|
dvec(igrid,2,ii)=ints(11)*inti(1)+ints(2)*inti(2)
|
|
dvec(igrid,3,ii)=ints(20)*inti(1)+ints(2)*inti(3)
|
|
dvec(igrid,4,ii)=ints(28)*inti(1)+ints(2)*inti(4)
|
|
dvec(igrid,5,ii)=ints(36)*inti(1)+ints(2)*inti(5)+ints(11)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(45)*inti(1)+ints(2)*inti(6)+ints(20)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(2)*inti(7)+ints(28)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(59)*inti(1)+ints(2)*inti(8)+ints(11)*int
|
|
$i(3)+ints(20)*inti(2)
|
|
dvec(igrid,9,ii)=ints(66)*inti(1)+ints(2)*inti(9)+ints(11)*int
|
|
$i(4)+ints(28)*inti(2)
|
|
dvec(igrid,10,ii)=ints(73)*inti(1)+ints(2)*inti(10)+ints(20)*i
|
|
$nti(4)+ints(28)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(3)*inti(1)
|
|
dvec(igrid,2,ii)=ints(12)*inti(1)+ints(3)*inti(2)
|
|
dvec(igrid,3,ii)=ints(21)*inti(1)+ints(3)*inti(3)
|
|
dvec(igrid,4,ii)=ints(29)*inti(1)+ints(3)*inti(4)
|
|
dvec(igrid,5,ii)=ints(37)*inti(1)+ints(3)*inti(5)+ints(12)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(46)*inti(1)+ints(3)*inti(6)+ints(21)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(53)*inti(1)+ints(3)*inti(7)+ints(29)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(60)*inti(1)+ints(3)*inti(8)+ints(12)*int
|
|
$i(3)+ints(21)*inti(2)
|
|
dvec(igrid,9,ii)=ints(67)*inti(1)+ints(3)*inti(9)+ints(12)*int
|
|
$i(4)+ints(29)*inti(2)
|
|
dvec(igrid,10,ii)=ints(74)*inti(1)+ints(3)*inti(10)+ints(21)*i
|
|
$nti(4)+ints(29)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(4)*inti(1)
|
|
dvec(igrid,2,ii)=ints(13)*inti(1)+ints(4)*inti(2)
|
|
dvec(igrid,3,ii)=ints(22)*inti(1)+ints(4)*inti(3)
|
|
dvec(igrid,4,ii)=ints(30)*inti(1)+ints(4)*inti(4)
|
|
dvec(igrid,5,ii)=ints(38)*inti(1)+ints(4)*inti(5)+ints(13)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(47)*inti(1)+ints(4)*inti(6)+ints(22)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(54)*inti(1)+ints(4)*inti(7)+ints(30)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(61)*inti(1)+ints(4)*inti(8)+ints(13)*int
|
|
$i(3)+ints(22)*inti(2)
|
|
dvec(igrid,9,ii)=ints(68)*inti(1)+ints(4)*inti(9)+ints(13)*int
|
|
$i(4)+ints(30)*inti(2)
|
|
dvec(igrid,10,ii)=ints(75)*inti(1)+ints(4)*inti(10)+ints(22)*i
|
|
$nti(4)+ints(30)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(5)*inti(1)
|
|
dvec(igrid,2,ii)=ints(14)*inti(1)+ints(5)*inti(2)
|
|
dvec(igrid,3,ii)=ints(23)*inti(1)+ints(5)*inti(3)
|
|
dvec(igrid,4,ii)=ints(31)*inti(1)+ints(5)*inti(4)
|
|
dvec(igrid,5,ii)=ints(39)*inti(1)+ints(5)*inti(5)+ints(14)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(48)*inti(1)+ints(5)*inti(6)+ints(23)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(55)*inti(1)+ints(5)*inti(7)+ints(31)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(62)*inti(1)+ints(5)*inti(8)+ints(14)*int
|
|
$i(3)+ints(23)*inti(2)
|
|
dvec(igrid,9,ii)=ints(69)*inti(1)+ints(5)*inti(9)+ints(14)*int
|
|
$i(4)+ints(31)*inti(2)
|
|
dvec(igrid,10,ii)=ints(76)*inti(1)+ints(5)*inti(10)+ints(23)*i
|
|
$nti(4)+ints(31)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(6)*inti(1)
|
|
dvec(igrid,2,ii)=ints(15)*inti(1)+ints(6)*inti(2)
|
|
dvec(igrid,3,ii)=ints(24)*inti(1)+ints(6)*inti(3)
|
|
dvec(igrid,4,ii)=ints(32)*inti(1)+ints(6)*inti(4)
|
|
dvec(igrid,5,ii)=ints(40)*inti(1)+ints(6)*inti(5)+ints(15)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(49)*inti(1)+ints(6)*inti(6)+ints(24)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(56)*inti(1)+ints(6)*inti(7)+ints(32)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(63)*inti(1)+ints(6)*inti(8)+ints(15)*int
|
|
$i(3)+ints(24)*inti(2)
|
|
dvec(igrid,9,ii)=ints(70)*inti(1)+ints(6)*inti(9)+ints(15)*int
|
|
$i(4)+ints(32)*inti(2)
|
|
dvec(igrid,10,ii)=ints(77)*inti(1)+ints(6)*inti(10)+ints(24)*i
|
|
$nti(4)+ints(32)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(7)*inti(1)
|
|
dvec(igrid,2,ii)=ints(16)*inti(1)+ints(7)*inti(2)
|
|
dvec(igrid,3,ii)=ints(25)*inti(1)+ints(7)*inti(3)
|
|
dvec(igrid,4,ii)=ints(33)*inti(1)+ints(7)*inti(4)
|
|
dvec(igrid,5,ii)=ints(41)*inti(1)+ints(7)*inti(5)+ints(16)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(50)*inti(1)+ints(7)*inti(6)+ints(25)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(57)*inti(1)+ints(7)*inti(7)+ints(33)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(7)*inti(8)+ints(16)*inti(3)+ints(25)*int
|
|
$i(2)
|
|
dvec(igrid,9,ii)=ints(71)*inti(1)+ints(7)*inti(9)+ints(16)*int
|
|
$i(4)+ints(33)*inti(2)
|
|
dvec(igrid,10,ii)=ints(78)*inti(1)+ints(7)*inti(10)+ints(25)*i
|
|
$nti(4)+ints(33)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(8)*inti(1)
|
|
dvec(igrid,2,ii)=ints(17)*inti(1)+ints(8)*inti(2)
|
|
dvec(igrid,3,ii)=ints(26)*inti(1)+ints(8)*inti(3)
|
|
dvec(igrid,4,ii)=ints(34)*inti(1)+ints(8)*inti(4)
|
|
dvec(igrid,5,ii)=ints(42)*inti(1)+ints(8)*inti(5)+ints(17)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(51)*inti(1)+ints(8)*inti(6)+ints(26)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(8)*inti(7)+ints(34)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(64)*inti(1)+ints(8)*inti(8)+ints(17)*int
|
|
$i(3)+ints(26)*inti(2)
|
|
dvec(igrid,9,ii)=ints(72)*inti(1)+ints(8)*inti(9)+ints(17)*int
|
|
$i(4)+ints(34)*inti(2)
|
|
dvec(igrid,10,ii)=ints(79)*inti(1)+ints(8)*inti(10)+ints(26)*i
|
|
$nti(4)+ints(34)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(9)*inti(1)
|
|
dvec(igrid,2,ii)=ints(18)*inti(1)+ints(9)*inti(2)
|
|
dvec(igrid,3,ii)=ints(27)*inti(1)+ints(9)*inti(3)
|
|
dvec(igrid,4,ii)=ints(9)*inti(4)
|
|
dvec(igrid,5,ii)=ints(43)*inti(1)+ints(9)*inti(5)+ints(18)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(52)*inti(1)+ints(9)*inti(6)+ints(27)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(9)*inti(7)
|
|
dvec(igrid,8,ii)=ints(65)*inti(1)+ints(9)*inti(8)+ints(18)*int
|
|
$i(3)+ints(27)*inti(2)
|
|
dvec(igrid,9,ii)=ints(9)*inti(9)+ints(18)*inti(4)
|
|
dvec(igrid,10,ii)=ints(9)*inti(10)+ints(27)*inti(4)
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|
|
************************************************************************
|
|
subroutine calco2_h(ngrid,grid,x,y,z,niprim,nicontr,
|
|
$nprimmax,gcoef,gexp2,gcn,dvec,nbasis)
|
|
************************************************************************
|
|
* Calculate orbital values, gradients, and Hessians on grid
|
|
************************************************************************
|
|
implicit none
|
|
integer ngrid,igrid,ii,iprim,niprim,i,j,k,nicontr
|
|
integer nprimmax,gcn(2,*),icontr,j1,j2,ispher,nbasis
|
|
real*8 grid(3,ngrid),x,y,z,a,gexp2(niprim)
|
|
real*8 gcoef(nprimmax,*),dvec(ngrid,10,nbasis),ex,exa,exa2
|
|
real*8 intr(niprim,10),ints(110),inti(10)
|
|
real*8 r2,a001,a002,a003,a004,a005,a010,a011,a012,a013,a014,a020,a
|
|
$021,a022,a023,a030,a031,a032,a040,a041,a050,a100,a101,a102,a103,a1
|
|
$04,a110,a111,a112,a113,a120,a121,a122,a130,a131,a140,a200,a201,a20
|
|
$2,a203,a210,a211,a212,a220,a221,a230,a300,a301,a302,a310,a311,a320
|
|
$,a400,a401,a410,a500
|
|
C$OMP PARALLEL DO
|
|
C$OMP& DEFAULT(PRIVATE)
|
|
C$OMP& SHARED(ngrid,grid,x,y,z,niprim,gexp2,gcn,gcoef,dvec,nicontr)
|
|
do igrid=1,ngrid
|
|
a100=grid(1,igrid)-x
|
|
a010=grid(2,igrid)-y
|
|
a001=grid(3,igrid)-z
|
|
a002=a001*a001
|
|
a003=a002*a001
|
|
a004=a003*a001
|
|
a005=a004*a001
|
|
a011=a010*a001
|
|
a020=a010*a010
|
|
a030=a020*a010
|
|
a040=a030*a010
|
|
a050=a040*a010
|
|
a101=a100*a001
|
|
a110=a100*a010
|
|
a200=a100*a100
|
|
a300=a200*a100
|
|
a400=a300*a100
|
|
a500=a400*a100
|
|
r2=0.5d0*(a200+a020+a002)
|
|
do iprim=1,niprim
|
|
a=gexp2(iprim)
|
|
ex=dexp(a*r2)
|
|
exa=ex*a
|
|
exa2=exa*a
|
|
intr(iprim, 1)=ex
|
|
intr(iprim, 2)=exa*a100
|
|
intr(iprim, 3)=exa*a010
|
|
intr(iprim, 4)=exa*a001
|
|
intr(iprim, 5)=exa*(a*a200+1.d0)
|
|
intr(iprim, 6)=exa*(a*a020+1.d0)
|
|
intr(iprim, 7)=exa*(a*a002+1.d0)
|
|
intr(iprim, 8)=exa2*a110
|
|
intr(iprim, 9)=exa2*a101
|
|
intr(iprim,10)=exa2*a011
|
|
enddo
|
|
a012=a011*a001
|
|
a013=a012*a001
|
|
a014=a013*a001
|
|
a021=a020*a001
|
|
a022=a021*a001
|
|
a023=a022*a001
|
|
a031=a030*a001
|
|
a032=a031*a001
|
|
a041=a040*a001
|
|
a102=a101*a001
|
|
a103=a102*a001
|
|
a104=a103*a001
|
|
a111=a110*a001
|
|
a112=a111*a001
|
|
a113=a112*a001
|
|
a120=a110*a010
|
|
a121=a120*a001
|
|
a122=a121*a001
|
|
a130=a120*a010
|
|
a131=a130*a001
|
|
a140=a130*a010
|
|
a201=a200*a001
|
|
a202=a201*a001
|
|
a203=a202*a001
|
|
a210=a200*a010
|
|
a211=a210*a001
|
|
a212=a211*a001
|
|
a220=a210*a010
|
|
a221=a220*a001
|
|
a230=a220*a010
|
|
a301=a300*a001
|
|
a302=a301*a001
|
|
a310=a300*a010
|
|
a311=a310*a001
|
|
a320=a310*a010
|
|
a401=a400*a001
|
|
a410=a400*a010
|
|
ints(1)=a050*0.70156076002011391601d0-a230*7.0156076002011387160
|
|
$5d0+a410*3.50780380010056935802d0
|
|
ints(2)=(a311-a131)*8.87411967464942463835d0
|
|
ints(3)=a050*0.52291251658379711564d0-a032*4.1833001326703769251
|
|
$5d0+a212*12.54990039801113255180d0-a230*1.04582503316759423129d0-a
|
|
$410*1.56873754975139156898d0
|
|
ints(4)=a113*10.24695076595959974952d0-(a131+a311)*5.12347538297
|
|
$979987476d0
|
|
ints(5)=a014*3.87298334620741613321d0-(a032+a212)*5.809475019311
|
|
$12419982d0+a230*0.96824583655185403330d0+(a050+a410)*0.48412291827
|
|
$592701665d0
|
|
ints(6)=a005-(a023+a203)*5.d0+a221*3.75d0+(a041+a401)*1.875d0
|
|
ints(7)=a104*3.87298334620741613321d0-(a122+a302)*5.809475019311
|
|
$12419982d0+a320*0.96824583655185403330d0+(a140+a500)*0.48412291827
|
|
$592701665d0
|
|
ints(8)=(a203-a023)*5.12347538297979987476d0+(a041-a401)*2.56173
|
|
$769148989993738d0
|
|
ints(9)=a140*1.56873754975139156898d0-a122*12.549900398011132551
|
|
$80d0+a302*4.18330013267037692515d0+a320*1.04582503316759423129d0-a
|
|
$500*0.52291251658379711564d0
|
|
ints(10)=(a041+a401)*2.21852991866235615959d0-a221*13.3111795119
|
|
$7413695752d0
|
|
ints(11)=a140*3.50780380010056935802d0-a320*7.015607600201138716
|
|
$05d0+a500*0.70156076002011391601d0
|
|
ints(12)=-a130*2.d0*7.01560760020113871605d0+a310*4.d0*3.5078038
|
|
$0010056935802d0
|
|
ints(13)=(a211*3.d0-a031)*8.87411967464942463835d0
|
|
ints(14)=a112*2.d0*12.54990039801113255180d0-a130*2.d0*1.0458250
|
|
$3316759423129d0-a310*4.d0*1.56873754975139156898d0
|
|
ints(15)=a013*10.24695076595959974952d0-(a031+a211*3.d0)*5.12347
|
|
$538297979987476d0
|
|
ints(16)=-a112*2.d0*5.80947501931112419982d0+a130*2.d0*0.9682458
|
|
$3655185403330d0+a310*4.d0*0.48412291827592701665d0
|
|
ints(17)=-a103*2.d0*5.d0+a121*2.d0*3.75d0+a301*4.d0*1.875d0
|
|
ints(18)=a004*3.87298334620741613321d0-(a022+a202*3.d0)*5.809475
|
|
$01931112419982d0+a220*3.d0*0.96824583655185403330d0+(a040+a400*5.d
|
|
$0)*0.48412291827592701665d0
|
|
ints(19)=a103*2.d0*5.12347538297979987476d0-a301*4.d0*2.56173769
|
|
$148989993738d0
|
|
ints(20)=a040*1.56873754975139156898d0-a022*12.54990039801113255
|
|
$180d0+a202*3.d0*4.18330013267037692515d0+a220*3.d0*1.0458250331675
|
|
$9423129d0-a400*5.d0*0.52291251658379711564d0
|
|
ints(21)=a301*4.d0*2.21852991866235615959d0-a121*2.d0*13.3111795
|
|
$1197413695752d0
|
|
ints(22)=a040*3.50780380010056935802d0-a220*3.d0*7.0156076002011
|
|
$3871605d0+a400*5.d0*0.70156076002011391601d0
|
|
ints(23)=a040*5.d0*0.70156076002011391601d0-a220*3.d0*7.01560760
|
|
$020113871605d0+a400*3.50780380010056935802d0
|
|
ints(24)=(a301-a121*3.d0)*8.87411967464942463835d0
|
|
ints(25)=a040*5.d0*0.52291251658379711564d0-a022*3.d0*4.18330013
|
|
$267037692515d0+a202*12.54990039801113255180d0-a220*3.d0*1.04582503
|
|
$316759423129d0-a400*1.56873754975139156898d0
|
|
ints(26)=a103*10.24695076595959974952d0-(a121*3.d0+a301)*5.12347
|
|
$538297979987476d0
|
|
ints(27)=a004*3.87298334620741613321d0-(a022*3.d0+a202)*5.809475
|
|
$01931112419982d0+a220*3.d0*0.96824583655185403330d0+(a040*5.d0+a40
|
|
$0)*0.48412291827592701665d0
|
|
ints(28)=-a013*2.d0*5.d0+a211*2.d0*3.75d0+a031*4.d0*1.875d0
|
|
ints(29)=-a112*2.d0*5.80947501931112419982d0+a310*2.d0*0.9682458
|
|
$3655185403330d0+a130*4.d0*0.48412291827592701665d0
|
|
ints(30)=-a013*2.d0*5.12347538297979987476d0+a031*4.d0*2.5617376
|
|
$9148989993738d0
|
|
ints(31)=a130*4.d0*1.56873754975139156898d0-a112*2.d0*12.5499003
|
|
$9801113255180d0+a310*2.d0*1.04582503316759423129d0
|
|
ints(32)=a031*4.d0*2.21852991866235615959d0-a211*2.d0*13.3111795
|
|
$1197413695752d0
|
|
ints(33)=a130*4.d0*3.50780380010056935802d0-a310*2.d0*7.01560760
|
|
$020113871605d0
|
|
ints(34)=(a310-a130)*8.87411967464942463835d0
|
|
ints(35)=-a031*2.d0*4.18330013267037692515d0+a211*2.d0*12.549900
|
|
$39801113255180d0
|
|
ints(36)=a112*3.d0*10.24695076595959974952d0-(a130+a310)*5.12347
|
|
$538297979987476d0
|
|
ints(37)=a013*4.d0*3.87298334620741613321d0-(a031*2.d0+a211*2.d0
|
|
$)*5.80947501931112419982d0
|
|
ints(38)=a004*5.d0-(a022*3.d0+a202*3.d0)*5.d0+a220*3.75d0+(a040+
|
|
$a400)*1.875d0
|
|
ints(39)=a103*4.d0*3.87298334620741613321d0-(a121*2.d0+a301*2.d0
|
|
$)*5.80947501931112419982d0
|
|
ints(40)=(a202*3.d0-a022*3.d0)*5.12347538297979987476d0+(a040-a4
|
|
$00)*2.56173769148989993738d0
|
|
ints(41)=-a121*2.d0*12.54990039801113255180d0+a301*2.d0*4.183300
|
|
$13267037692515d0
|
|
ints(42)=(a040+a400)*2.21852991866235615959d0-a220*13.3111795119
|
|
$7413695752d0
|
|
ints(43)=-a030*2.d0*7.01560760020113871605d0+a210*12d0*3.5078038
|
|
$0010056935802d0
|
|
ints(44)=a111*6.d0*8.87411967464942463835d0
|
|
ints(45)=a012*2.d0*12.54990039801113255180d0-a030*2.d0*1.0458250
|
|
$3316759423129d0-a210*12d0*1.56873754975139156898d0
|
|
ints(46)=-a111*6.d0*5.12347538297979987476d0
|
|
ints(47)=-a012*2.d0*5.80947501931112419982d0+a030*2.d0*0.9682458
|
|
$3655185403330d0+a210*12d0*0.48412291827592701665d0
|
|
ints(48)=-a003*2.d0*5.d0+a021*2.d0*3.75d0+a201*12d0*1.875d0
|
|
ints(49)=-a102*6.d0*5.80947501931112419982d0+a120*6.d0*0.9682458
|
|
$3655185403330d0+a300*20d0*0.48412291827592701665d0
|
|
ints(50)=a003*2.d0*5.12347538297979987476d0-a201*12d0*2.56173769
|
|
$148989993738d0
|
|
ints(51)=a102*6.d0*4.18330013267037692515d0+a120*6.d0*1.04582503
|
|
$316759423129d0-a300*20d0*0.52291251658379711564d0
|
|
ints(52)=a201*12d0*2.21852991866235615959d0-a021*2.d0*13.3111795
|
|
$1197413695752d0
|
|
ints(53)=-a120*6.d0*7.01560760020113871605d0+a300*20d0*0.7015607
|
|
$6002011391601d0
|
|
ints(54)=a030*20d0*0.70156076002011391601d0-a210*6.d0*7.01560760
|
|
$020113871605d0
|
|
ints(55)=-a111*6.d0*8.87411967464942463835d0
|
|
ints(56)=a030*20d0*0.52291251658379711564d0-a012*6.d0*4.18330013
|
|
$267037692515d0-a210*6.d0*1.04582503316759423129d0
|
|
ints(57)=-a111*6.d0*5.12347538297979987476d0
|
|
ints(58)=-a012*6.d0*5.80947501931112419982d0+a210*6.d0*0.9682458
|
|
$3655185403330d0+a030*20d0*0.48412291827592701665d0
|
|
ints(59)=-a003*2.d0*5.d0+a201*2.d0*3.75d0+a021*12d0*1.875d0
|
|
ints(60)=-a102*2.d0*5.80947501931112419982d0+a300*2.d0*0.9682458
|
|
$3655185403330d0+a120*12d0*0.48412291827592701665d0
|
|
ints(61)=-a003*2.d0*5.12347538297979987476d0+a021*12d0*2.5617376
|
|
$9148989993738d0
|
|
ints(62)=a120*12d0*1.56873754975139156898d0-a102*2.d0*12.5499003
|
|
$9801113255180d0+a300*2.d0*1.04582503316759423129d0
|
|
ints(63)=a021*12d0*2.21852991866235615959d0-a201*2.d0*13.3111795
|
|
$1197413695752d0
|
|
ints(64)=a120*12d0*3.50780380010056935802d0-a300*2.d0*7.01560760
|
|
$020113871605d0
|
|
ints(65)=-a030*2.d0*4.18330013267037692515d0+a210*2.d0*12.549900
|
|
$39801113255180d0
|
|
ints(66)=a111*6.d0*10.24695076595959974952d0
|
|
ints(67)=a012*12d0*3.87298334620741613321d0-(a030*2.d0+a210*2.d0
|
|
$)*5.80947501931112419982d0
|
|
ints(68)=a003*20d0-(a021*6.d0+a201*6.d0)*5.d0
|
|
ints(69)=a102*12d0*3.87298334620741613321d0-(a120*2.d0+a300*2.d0
|
|
$)*5.80947501931112419982d0
|
|
ints(70)=(a201*6.d0-a021*6.d0)*5.12347538297979987476d0
|
|
ints(71)=-a120*2.d0*12.54990039801113255180d0+a300*2.d0*4.183300
|
|
$13267037692515d0
|
|
ints(72)=-a120*6.d0*7.01560760020113871605d0+a300*4.d0*3.5078038
|
|
$0010056935802d0
|
|
ints(73)=(a201*3.d0-a021*3.d0)*8.87411967464942463835d0
|
|
ints(74)=a102*2.d0*12.54990039801113255180d0-a120*6.d0*1.0458250
|
|
$3316759423129d0-a300*4.d0*1.56873754975139156898d0
|
|
ints(75)=a003*10.24695076595959974952d0-(a021*3.d0+a201*3.d0)*5.
|
|
$12347538297979987476d0
|
|
ints(76)=-a102*2.d0*5.80947501931112419982d0+a120*6.d0*0.9682458
|
|
$3655185403330d0+a300*4.d0*0.48412291827592701665d0
|
|
ints(77)=a111*4.d0*3.75d0
|
|
ints(78)=-a012*2.d0*5.80947501931112419982d0+a210*6.d0*0.9682458
|
|
$3655185403330d0+a030*4.d0*0.48412291827592701665d0
|
|
ints(79)=a030*4.d0*1.56873754975139156898d0-a012*2.d0*12.5499003
|
|
$9801113255180d0+a210*6.d0*1.04582503316759423129d0
|
|
ints(80)=-a111*4.d0*13.31117951197413695752d0
|
|
ints(81)=a030*4.d0*3.50780380010056935802d0-a210*6.d0*7.01560760
|
|
$020113871605d0
|
|
ints(82)=(a210*3.d0-a030)*8.87411967464942463835d0
|
|
ints(83)=a111*4.d0*12.54990039801113255180d0
|
|
ints(84)=a012*3.d0*10.24695076595959974952d0-(a030+a210*3.d0)*5.
|
|
$12347538297979987476d0
|
|
ints(85)=-a111*4.d0*5.80947501931112419982d0
|
|
ints(86)=-a102*6.d0*5.d0+a120*2.d0*3.75d0+a300*4.d0*1.875d0
|
|
ints(87)=a003*4.d0*3.87298334620741613321d0-(a021*2.d0+a201*6.d0
|
|
$)*5.80947501931112419982d0
|
|
ints(88)=a102*6.d0*5.12347538297979987476d0-a300*4.d0*2.56173769
|
|
$148989993738d0
|
|
ints(89)=-a021*2.d0*12.54990039801113255180d0+a201*6.d0*4.183300
|
|
$13267037692515d0
|
|
ints(90)=a300*4.d0*2.21852991866235615959d0-a120*2.d0*13.3111795
|
|
$1197413695752d0
|
|
ints(91)=(a300-a120*3.d0)*8.87411967464942463835d0
|
|
ints(92)=-a021*6.d0*4.18330013267037692515d0+a201*2.d0*12.549900
|
|
$39801113255180d0
|
|
ints(93)=a102*3.d0*10.24695076595959974952d0-(a120*3.d0+a300)*5.
|
|
$12347538297979987476d0
|
|
ints(94)=a003*4.d0*3.87298334620741613321d0-(a021*6.d0+a201*2.d0
|
|
$)*5.80947501931112419982d0
|
|
ints(95)=-a012*6.d0*5.d0+a210*2.d0*3.75d0+a030*4.d0*1.875d0
|
|
ints(96)=-a111*4.d0*5.80947501931112419982d0
|
|
ints(97)=-a012*6.d0*5.12347538297979987476d0+a030*4.d0*2.5617376
|
|
$9148989993738d0
|
|
ints(98)=-a111*4.d0*12.54990039801113255180d0
|
|
ints(99)=a030*4.d0*2.21852991866235615959d0-a210*2.d0*13.3111795
|
|
$1197413695752d0
|
|
ii=0
|
|
do icontr=1,nicontr
|
|
j1=gcn(1,icontr)
|
|
j2=gcn(2,icontr)
|
|
inti(1:10)=matmul(gcoef(j1:j2,icontr),intr(j1:j2,1:10))
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(1)*inti(1)
|
|
dvec(igrid,2,ii)=ints(12)*inti(1)+ints(1)*inti(2)
|
|
dvec(igrid,3,ii)=ints(23)*inti(1)+ints(1)*inti(3)
|
|
dvec(igrid,4,ii)=ints(1)*inti(4)
|
|
dvec(igrid,5,ii)=ints(43)*inti(1)+ints(1)*inti(5)+ints(12)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(54)*inti(1)+ints(1)*inti(6)+ints(23)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(1)*inti(7)
|
|
dvec(igrid,8,ii)=ints(72)*inti(1)+ints(1)*inti(8)+ints(12)*int
|
|
$i(3)+ints(23)*inti(2)
|
|
dvec(igrid,9,ii)=ints(1)*inti(9)+ints(12)*inti(4)
|
|
dvec(igrid,10,ii)=ints(1)*inti(10)+ints(23)*inti(4)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(2)*inti(1)
|
|
dvec(igrid,2,ii)=ints(13)*inti(1)+ints(2)*inti(2)
|
|
dvec(igrid,3,ii)=ints(24)*inti(1)+ints(2)*inti(3)
|
|
dvec(igrid,4,ii)=ints(34)*inti(1)+ints(2)*inti(4)
|
|
dvec(igrid,5,ii)=ints(44)*inti(1)+ints(2)*inti(5)+ints(13)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(55)*inti(1)+ints(2)*inti(6)+ints(24)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(2)*inti(7)+ints(34)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(73)*inti(1)+ints(2)*inti(8)+ints(13)*int
|
|
$i(3)+ints(24)*inti(2)
|
|
dvec(igrid,9,ii)=ints(82)*inti(1)+ints(2)*inti(9)+ints(13)*int
|
|
$i(4)+ints(34)*inti(2)
|
|
dvec(igrid,10,ii)=ints(91)*inti(1)+ints(2)*inti(10)+ints(24)*i
|
|
$nti(4)+ints(34)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(3)*inti(1)
|
|
dvec(igrid,2,ii)=ints(14)*inti(1)+ints(3)*inti(2)
|
|
dvec(igrid,3,ii)=ints(25)*inti(1)+ints(3)*inti(3)
|
|
dvec(igrid,4,ii)=ints(35)*inti(1)+ints(3)*inti(4)
|
|
dvec(igrid,5,ii)=ints(45)*inti(1)+ints(3)*inti(5)+ints(14)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(56)*inti(1)+ints(3)*inti(6)+ints(25)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(65)*inti(1)+ints(3)*inti(7)+ints(35)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(74)*inti(1)+ints(3)*inti(8)+ints(14)*int
|
|
$i(3)+ints(25)*inti(2)
|
|
dvec(igrid,9,ii)=ints(83)*inti(1)+ints(3)*inti(9)+ints(14)*int
|
|
$i(4)+ints(35)*inti(2)
|
|
dvec(igrid,10,ii)=ints(92)*inti(1)+ints(3)*inti(10)+ints(25)*i
|
|
$nti(4)+ints(35)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(4)*inti(1)
|
|
dvec(igrid,2,ii)=ints(15)*inti(1)+ints(4)*inti(2)
|
|
dvec(igrid,3,ii)=ints(26)*inti(1)+ints(4)*inti(3)
|
|
dvec(igrid,4,ii)=ints(36)*inti(1)+ints(4)*inti(4)
|
|
dvec(igrid,5,ii)=ints(46)*inti(1)+ints(4)*inti(5)+ints(15)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(57)*inti(1)+ints(4)*inti(6)+ints(26)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(66)*inti(1)+ints(4)*inti(7)+ints(36)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(75)*inti(1)+ints(4)*inti(8)+ints(15)*int
|
|
$i(3)+ints(26)*inti(2)
|
|
dvec(igrid,9,ii)=ints(84)*inti(1)+ints(4)*inti(9)+ints(15)*int
|
|
$i(4)+ints(36)*inti(2)
|
|
dvec(igrid,10,ii)=ints(93)*inti(1)+ints(4)*inti(10)+ints(26)*i
|
|
$nti(4)+ints(36)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(5)*inti(1)
|
|
dvec(igrid,2,ii)=ints(16)*inti(1)+ints(5)*inti(2)
|
|
dvec(igrid,3,ii)=ints(27)*inti(1)+ints(5)*inti(3)
|
|
dvec(igrid,4,ii)=ints(37)*inti(1)+ints(5)*inti(4)
|
|
dvec(igrid,5,ii)=ints(47)*inti(1)+ints(5)*inti(5)+ints(16)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(58)*inti(1)+ints(5)*inti(6)+ints(27)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(67)*inti(1)+ints(5)*inti(7)+ints(37)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(76)*inti(1)+ints(5)*inti(8)+ints(16)*int
|
|
$i(3)+ints(27)*inti(2)
|
|
dvec(igrid,9,ii)=ints(85)*inti(1)+ints(5)*inti(9)+ints(16)*int
|
|
$i(4)+ints(37)*inti(2)
|
|
dvec(igrid,10,ii)=ints(94)*inti(1)+ints(5)*inti(10)+ints(27)*i
|
|
$nti(4)+ints(37)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(6)*inti(1)
|
|
dvec(igrid,2,ii)=ints(17)*inti(1)+ints(6)*inti(2)
|
|
dvec(igrid,3,ii)=ints(28)*inti(1)+ints(6)*inti(3)
|
|
dvec(igrid,4,ii)=ints(38)*inti(1)+ints(6)*inti(4)
|
|
dvec(igrid,5,ii)=ints(48)*inti(1)+ints(6)*inti(5)+ints(17)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(59)*inti(1)+ints(6)*inti(6)+ints(28)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(68)*inti(1)+ints(6)*inti(7)+ints(38)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(77)*inti(1)+ints(6)*inti(8)+ints(17)*int
|
|
$i(3)+ints(28)*inti(2)
|
|
dvec(igrid,9,ii)=ints(86)*inti(1)+ints(6)*inti(9)+ints(17)*int
|
|
$i(4)+ints(38)*inti(2)
|
|
dvec(igrid,10,ii)=ints(95)*inti(1)+ints(6)*inti(10)+ints(28)*i
|
|
$nti(4)+ints(38)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(7)*inti(1)
|
|
dvec(igrid,2,ii)=ints(18)*inti(1)+ints(7)*inti(2)
|
|
dvec(igrid,3,ii)=ints(29)*inti(1)+ints(7)*inti(3)
|
|
dvec(igrid,4,ii)=ints(39)*inti(1)+ints(7)*inti(4)
|
|
dvec(igrid,5,ii)=ints(49)*inti(1)+ints(7)*inti(5)+ints(18)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(60)*inti(1)+ints(7)*inti(6)+ints(29)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(69)*inti(1)+ints(7)*inti(7)+ints(39)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(78)*inti(1)+ints(7)*inti(8)+ints(18)*int
|
|
$i(3)+ints(29)*inti(2)
|
|
dvec(igrid,9,ii)=ints(87)*inti(1)+ints(7)*inti(9)+ints(18)*int
|
|
$i(4)+ints(39)*inti(2)
|
|
dvec(igrid,10,ii)=ints(96)*inti(1)+ints(7)*inti(10)+ints(29)*i
|
|
$nti(4)+ints(39)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(8)*inti(1)
|
|
dvec(igrid,2,ii)=ints(19)*inti(1)+ints(8)*inti(2)
|
|
dvec(igrid,3,ii)=ints(30)*inti(1)+ints(8)*inti(3)
|
|
dvec(igrid,4,ii)=ints(40)*inti(1)+ints(8)*inti(4)
|
|
dvec(igrid,5,ii)=ints(50)*inti(1)+ints(8)*inti(5)+ints(19)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(61)*inti(1)+ints(8)*inti(6)+ints(30)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(70)*inti(1)+ints(8)*inti(7)+ints(40)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(8)*inti(8)+ints(19)*inti(3)+ints(30)*int
|
|
$i(2)
|
|
dvec(igrid,9,ii)=ints(88)*inti(1)+ints(8)*inti(9)+ints(19)*int
|
|
$i(4)+ints(40)*inti(2)
|
|
dvec(igrid,10,ii)=ints(97)*inti(1)+ints(8)*inti(10)+ints(30)*i
|
|
$nti(4)+ints(40)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(9)*inti(1)
|
|
dvec(igrid,2,ii)=ints(20)*inti(1)+ints(9)*inti(2)
|
|
dvec(igrid,3,ii)=ints(31)*inti(1)+ints(9)*inti(3)
|
|
dvec(igrid,4,ii)=ints(41)*inti(1)+ints(9)*inti(4)
|
|
dvec(igrid,5,ii)=ints(51)*inti(1)+ints(9)*inti(5)+ints(20)*int
|
|
$i(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(62)*inti(1)+ints(9)*inti(6)+ints(31)*int
|
|
$i(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(71)*inti(1)+ints(9)*inti(7)+ints(41)*int
|
|
$i(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(79)*inti(1)+ints(9)*inti(8)+ints(20)*int
|
|
$i(3)+ints(31)*inti(2)
|
|
dvec(igrid,9,ii)=ints(89)*inti(1)+ints(9)*inti(9)+ints(20)*int
|
|
$i(4)+ints(41)*inti(2)
|
|
dvec(igrid,10,ii)=ints(98)*inti(1)+ints(9)*inti(10)+ints(31)*i
|
|
$nti(4)+ints(41)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(10)*inti(1)
|
|
dvec(igrid,2,ii)=ints(21)*inti(1)+ints(10)*inti(2)
|
|
dvec(igrid,3,ii)=ints(32)*inti(1)+ints(10)*inti(3)
|
|
dvec(igrid,4,ii)=ints(42)*inti(1)+ints(10)*inti(4)
|
|
dvec(igrid,5,ii)=ints(52)*inti(1)+ints(10)*inti(5)+ints(21)*in
|
|
$ti(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(63)*inti(1)+ints(10)*inti(6)+ints(32)*in
|
|
$ti(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(10)*inti(7)+ints(42)*inti(4)*2.d0
|
|
dvec(igrid,8,ii)=ints(80)*inti(1)+ints(10)*inti(8)+ints(21)*in
|
|
$ti(3)+ints(32)*inti(2)
|
|
dvec(igrid,9,ii)=ints(90)*inti(1)+ints(10)*inti(9)+ints(21)*in
|
|
$ti(4)+ints(42)*inti(2)
|
|
dvec(igrid,10,ii)=ints(99)*inti(1)+ints(10)*inti(10)+ints(32)*
|
|
$inti(4)+ints(42)*inti(3)
|
|
ii=ii+1
|
|
dvec(igrid,1,ii)=ints(11)*inti(1)
|
|
dvec(igrid,2,ii)=ints(22)*inti(1)+ints(11)*inti(2)
|
|
dvec(igrid,3,ii)=ints(33)*inti(1)+ints(11)*inti(3)
|
|
dvec(igrid,4,ii)=ints(11)*inti(4)
|
|
dvec(igrid,5,ii)=ints(53)*inti(1)+ints(11)*inti(5)+ints(22)*in
|
|
$ti(2)*2.d0
|
|
dvec(igrid,6,ii)=ints(64)*inti(1)+ints(11)*inti(6)+ints(33)*in
|
|
$ti(3)*2.d0
|
|
dvec(igrid,7,ii)=ints(11)*inti(7)
|
|
dvec(igrid,8,ii)=ints(81)*inti(1)+ints(11)*inti(8)+ints(22)*in
|
|
$ti(3)+ints(33)*inti(2)
|
|
dvec(igrid,9,ii)=ints(11)*inti(9)+ints(22)*inti(4)
|
|
dvec(igrid,10,ii)=ints(11)*inti(10)+ints(33)*inti(4)
|
|
enddo
|
|
enddo
|
|
C$OMP END PARALLEL DO
|
|
C
|
|
return
|
|
end
|
|
C
|