mirror of
https://gitlab.com/scemama/eplf
synced 2024-12-22 20:35:30 +01:00
75% acceleration
This commit is contained in:
parent
4a6ce8c3d8
commit
ec34d430dc
@ -282,8 +282,8 @@ double precision function ao_eplf_integral_primitive_oneD(a,xa,i,b,xb,j,gmma,xr)
|
|||||||
integer :: ii, jj, kk, ll
|
integer :: ii, jj, kk, ll
|
||||||
real :: xp1,xp
|
real :: xp1,xp
|
||||||
real :: p1,p
|
real :: p1,p
|
||||||
double precision :: S00, xpa, xpb
|
double precision :: xpa, xpb
|
||||||
double precision :: inv_p,c,c1
|
double precision :: inv_p(2),S00, c
|
||||||
double precision :: ObaraS
|
double precision :: ObaraS
|
||||||
|
|
||||||
ASSERT (a>0.)
|
ASSERT (a>0.)
|
||||||
@ -291,15 +291,30 @@ double precision function ao_eplf_integral_primitive_oneD(a,xa,i,b,xb,j,gmma,xr)
|
|||||||
ASSERT (i>=0)
|
ASSERT (i>=0)
|
||||||
ASSERT (j>=0)
|
ASSERT (j>=0)
|
||||||
|
|
||||||
! Gaussian product
|
! Gaussian products
|
||||||
call gaussian_product(a,xa,b,xb,c1,p1,xp1)
|
!double precision :: t(2), xab(2), ab(2)
|
||||||
call gaussian_product(p1,xp1,gmma,xr,c,p,xp)
|
real :: t(2), xab(2), ab(2)
|
||||||
|
!call gaussian_product(a,xa,b,xb,c1,p1,xp1)
|
||||||
|
inv_p(1) = 1.d0/(a+b)
|
||||||
|
p1 = a+b
|
||||||
|
ab(1) = a*b
|
||||||
|
inv_p(2) = 1.d0/(p1+gmma)
|
||||||
|
t(1) = (a*xa+b*xb)
|
||||||
|
xab(1) = xa-xb
|
||||||
|
xp1 = t(1)*inv_p(1)
|
||||||
|
p = p1+gmma
|
||||||
|
ab(2) = p1*gmma
|
||||||
|
t(2) = (p1*xp1+gmma*xr)
|
||||||
|
xab(2) = xp1-xr
|
||||||
|
xp = t(2)*inv_p(2)
|
||||||
|
c = exp(- real(ab(1)*inv_p(1)*xab(1)**2 + &
|
||||||
|
ab(2)*inv_p(2)*xab(2)**2) )
|
||||||
|
|
||||||
|
|
||||||
inv_p = 1.d0/p
|
|
||||||
S00 = dsqrt(pi*inv_p)*c*c1
|
|
||||||
xpa = xp-xa
|
xpa = xp-xa
|
||||||
xpb = xp-xb
|
xpb = xp-xb
|
||||||
ao_eplf_integral_primitive_oneD = ObaraS(i,j,xpa,xpb,inv_p,S00)
|
S00 = dsqrt(pi*inv_p(2))*c
|
||||||
|
ao_eplf_integral_primitive_oneD = ObaraS(i,j,xpa,xpb,inv_p(2),S00)
|
||||||
|
|
||||||
end function
|
end function
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user