1c 2c $Id$ 3c 4c Taken and modified from HONDO 5c 6 subroutine hnd_stvintd(xyzi,expi,coefi,i_nprim,i_ngen, Li, 7 1 i_cent,xyzj,expj,coefj, j_nprim, j_ngen, Lj, j_cent, 8 2 xyz,zan,nat,sder,tder,vder,nint,doS,doT,doV,scr,lscr) 9c 10 implicit none 11#include "stdio.fh" 12 integer i_nprim ! [input] num. prims on function i 13 integer i_ngen ! [input] num general conts on func. i 14 integer Li ! [input] angular momentum of func. i 15 integer j_nprim ! [input] num. prims on function j 16 integer j_ngen ! [input] num general conts on func. j 17 integer Lj ! [input] angular momentum of func. j 18 integer nat ! [input] number of atoms 19 integer lscr ! [input] size of scratch array 20 integer nint ! [input] size of any integral buffer 21 integer i_cent ! [input] lexical number of center i 22 integer j_cent ! [input] lexical number of center j 23 double precision xyzi(3) ! [input] position of center i 24 double precision expi(i_nprim) ! [input] exponents on i 25 double precision coefi(i_nprim,i_ngen) ! [input] i coeffs 26 double precision xyzj(3) ! [input] position of center j 27 double precision expj(j_nprim) ! [input] exponents on j 28 double precision coefj(j_nprim,j_ngen) ! [input] j coeffs 29 double precision xyz(3,nat) ! [input] all atom positions 30 double precision zan(nat) ! [input] charges on all atoms 31 double precision scr(lscr) ! [scratch] scratch buffers 32 double precision sder(*) ! [output] overlap integrals 33 double precision tder(*) ! [output] kinetic energy integrals 34 double precision vder(*) ! [output] potential integrals 35 logical doS ! [input] compute overlap (True/False) 36 logical doT ! [input] compute kinetic (True/False) 37 logical doV ! [input] compute potential (True/False) 38 logical some, doH1 39 integer nder, maxi, maxj 40 integer i, index 41 double precision zero 42 data zero /0.0d+00/ 43c 44 doH1 = doT.and.doV.and..not.doS 45 nder = 1 46c 47c ----- calculate -s-, -t-, and -v- derivative integrals ----- 48c 49 some = .false. 50 if(some) write(luout,9999) 51c 52 if (doS) then 53 call dcopy(nint*3*2,zero,0,sder,1) 54 call hnd_sd_ij2(xyzi,expi,coefi,i_nprim,i_ngen, Li, 55 1 xyzj,expj,coefj, j_nprim, j_ngen, Lj, sder, sder(nint*3+1), 56 2 scr, scr, scr, nder,nint,scr,lscr) 57 endif 58c 59 if (doV) then 60 call dcopy(nint*3*nat,zero,0,vder,1) 61 do i=1,nat 62 call hnd_hlf_ij2(xyzi,expi,coefi,i_nprim,i_ngen,Li, 63 1 xyzj,expj,coefj,j_nprim,j_ngen,Lj,i,vder((i-1)*3*nint+1), 64 2 scr,zan,xyz,nder,nint,scr,lscr) 65 enddo 66 endif 67 68 if (doT.or.doV) then 69 if (doT) call dcopy(nint*3*2,zero,0,tder,1) 70 if (doV) then 71 call hnd_tvd_ij2(xyzi,expi,coefi,i_nprim,i_ngen,Li, 72 1 xyzj,expj,coefj,j_nprim,j_ngen,Lj,xyz,tder,tder(nint*3+1), 73 2 scr,scr,scr,vder((i_cent-1)*3*nint+1), 74 3 vder((j_cent-1)*3*nint+1),scr,scr,scr,nder,nint,zan, 75 4 nat,doT,doV,i_cent,j_cent,scr,lscr) 76 else 77 call hnd_tvd_ij2(xyzi,expi,coefi,i_nprim,i_ngen,Li, 78 1 xyzj,expj,coefj,j_nprim,j_ngen,Lj,xyz,tder,tder(nint*3+1), 79 2 scr,scr,scr,scr,scr,scr,scr,scr,nder,nint,zan, 80 3 nat,doT,doV,i_cent,j_cent,scr,lscr) 81 endif 82 endif 83c 84 if(some) write(luout,9998) 85 return 86 9999 format(/,10x,20(1h-),/,10x,'1 electron derivative integrals', 87 2 /,10x,20(1h-)) 88 9998 format(' ...... end of one-electron integrals ......') 89 end 90