23 #include "../base/base_uses.f90"
27 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'ai_coulomb_test'
44 INTEGER,
INTENT(IN) :: iw
46 INTEGER,
PARAMETER :: lmax = 6
48 CHARACTER(LEN=11),
DIMENSION(0:lmax) :: i2g
49 CHARACTER(LEN=5),
DIMENSION(0:lmax) :: i2c
50 CHARACTER(LEN=7),
DIMENSION(0:lmax) :: i2e
51 CHARACTER(LEN=9),
DIMENSION(0:lmax) :: i2f
52 INTEGER :: i, ii, l, la_max, la_min, lc_max, &
53 lc_min, ll, n, npgfa, npgfb, npgfc, &
55 REAL(kind=
dp) :: perf, rac2, t, tend, tstart
56 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: f
57 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: vac
58 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: v
59 REAL(kind=
dp),
DIMENSION(3) :: ra, rb, rc, rd
60 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rpgf, zeta, zetb, zetc, zetd
62 IF (iw > 0)
WRITE (iw,
'(/,A)')
" Test of Electron Repulsion Integrals (ERI) "
74 i2g(0) =
"[(ss)|(ss)]"
75 i2g(1) =
"[(pp)|(pp)]"
76 i2g(2) =
"[(dd)|(dd)]"
77 i2g(3) =
"[(ff)|(ff)]"
78 i2g(4) =
"[(gg)|(gg)]"
79 i2g(5) =
"[(hh)|(hh)]"
80 i2g(6) =
"[(ii)|(ii)]"
102 n = max(npgfa, npgfb, npgfc, npgfd)
104 ALLOCATE (zeta(npgfa), zetb(npgfb), zetc(npgfc), zetd(npgfd), rpgf(n))
106 zeta(1:npgfa) = 0.5_dp
107 zetb(1:npgfb) = 0.4_dp
108 zetc(1:npgfc) = 0.3_dp
109 zetd(1:npgfd) = 0.2_dp
111 ra = (/0.0_dp, 0.0_dp, 0.0_dp/)
112 rb = (/1.0_dp, 0.0_dp, 0.0_dp/)
113 rc = (/0.0_dp, 0.3_dp, 0.3_dp/)
114 rd = (/0.7_dp, 0.2_dp, 0.1_dp/)
116 rac2 = sum((ra - rc)**2)
122 WRITE (iw,
'(//,A,/)')
" Test of 2-Electron-2-Center Integrals (coulomb2) "
129 ALLOCATE (f(0:2*l + 2), v(npgfa*ll, npgfc*ll, 2*l + 1), vac(npgfa*ll, npgfc*ll))
131 ii = max(100/(l + 1)**2, 1)
134 CALL coulomb2(la_max, npgfa, zeta, rpgf, la_min, lc_max, npgfc, zetc, rpgf, lc_min, rc, rac2, vac, v, f)
138 perf = real(ii*
nco(l)**2, kind=
dp)*1.e-6_dp*real(npgfa*npgfc, kind=
dp)/t
139 WRITE (iw,
'(A,T40,A,T66,F15.3)')
" Performance [Mintegrals/s] ", i2c(l), perf
140 DEALLOCATE (f, v, vac)
145 DEALLOCATE (zeta, zetb, zetc, zetd, rpgf)
Test of Electron Repulsion Routines (ERI)
real(kind=dp), parameter threshold
subroutine, public eri_test(iw)
...
Calculation of Coulomb integrals over Cartesian Gaussian-type functions (electron repulsion integrals...
subroutine, public coulomb2(la_max, npgfa, zeta, rpgfa, la_min, lc_max, npgfc, zetc, rpgfc, lc_min, rac, rac2, vac, v, f, maxder, vac_plus)
Calculation of the primitive two-center Coulomb integrals over Cartesian Gaussian-type functions.
Defines the basic variable types.
integer, parameter, public dp
Machine interface based on Fortran 2003 and POSIX.
real(kind=dp) function, public m_walltime()
returns time from a real-time clock, protected against rolling early/easily
Provides Cartesian and spherical orbital pointers and indices.
subroutine, public init_orbital_pointers(maxl)
Initialize or update the orbital pointers.
subroutine, public deallocate_orbital_pointers()
Deallocate the orbital pointers.
integer, dimension(:), allocatable, public nco
integer, dimension(:), allocatable, public ncoset