1      SUBROUTINE REPP(NI,NJ,RIJ,RI,CORE)
2C***********************************************************************
3C
4C..VECTOR VERSION WRITTEN BY ERNEST R. DAVIDSON, INDIANA UNIVERSITY
5C
6C
7C  REPP CALCULATES THE TWO-ELECTRON REPULSION INTEGRALS AND THE
8C       NUCLEAR ATTRACTION INTEGRALS.
9C
10C     ON INPUT RIJ     = INTERATOMIC DISTANCE
11C              NI      = ATOM NUMBER OF FIRST ATOM
12C              NJ      = ATOM NUMBER OF SECOND ATOM
13C    (REF)     ADD     = ARRAY OF GAMMA, OR TWO-ELECTRON ONE-CENTER,
14C                        INTEGRALS.
15C    (REF)     TORE    = ARRAY OF NUCLEAR CHARGES OF THE ELEMENTS
16C    (REF)     DD      = ARRAY OF DIPOLE CHARGE SEPARATIONS
17C    (REF)     QQ      = ARRAY OF QUADRUPOLE CHARGE SEPARATIONS
18C
19C     THE COMMON BLOCKS ARE INITIALIZED IN BLOCK-DATA, AND NEVER CHANGED
20C
21C    ON OUTPUT RI      = ARRAY OF TWO-ELECTRON REPULSION INTEGRALS
22C              CORE    = 4 X 2 ARRAY OF ELECTRON-CORE ATTRACTION
23C                        INTEGRALS
24C
25C
26C *** THIS ROUTINE COMPUTES THE TWO-CENTRE REPULSION INTEGRALS AND THE
27C *** NUCLEAR ATTRACTION INTEGRALS.
28C *** THE TWO-CENTRE REPULSION INTEGRALS (OVER LOCAL COORDINATES) ARE
29C *** STORED AS FOLLOWS (WHERE P-SIGMA = O,  AND P-PI = P AND P* )
30C     (SS/SS)=1,   (SO/SS)=2,   (OO/SS)=3,   (PP/SS)=4,   (SS/OS)=5,
31C     (SO/SO)=6,   (SP/SP)=7,   (OO/SO)=8,   (PP/SO)=9,   (PO/SP)=10,
32C     (SS/OO)=11,  (SS/PP)=12,  (SO/OO)=13,  (SO/PP)=14,  (SP/OP)=15,
33C     (OO/OO)=16,  (PP/OO)=17,  (OO/PP)=18,  (PP/PP)=19,  (PO/PO)=20,
34C     (PP/P*P*)=21,   (P*P/P*P)=22.
35C *** THE STORAGE OF THE NUCLEAR ATTRACTION INTEGRALS  CORE(KL/IJ) IS
36C     (SS/)=1,   (SO/)=2,   (OO/)=3,   (PP/)=4
37C     WHERE IJ=1 IF THE ORBITALS CENTRED ON ATOM I,  =2 IF ON ATOM J.
38C *** NI AND NJ ARE THE ATOMIC NUMBERS OF THE TWO ELEMENTS.
39C
40C***********************************************************************
41      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
42      LOGICAL SI,SJ
43      COMMON /MULTIP/ DD(107),QQ(107),ADD(107,3)
44      COMMON /CORE/ TORE(107)
45      COMMON /NATORB/ NATORB(107)
46      DIMENSION RI(22),CORE(4,2)
47      DIMENSION ARG(72),SQR(72)
48      DATA  TD/2.D00/
49      DATA PP/0.5D00/
50      DATA A0/0.529167D0/ ,EV/27.21D0/, EV1/13.605D0/, EV2/6.8025D0/,
51     1 EV3/3.40125D0/, EV4/1.700625D0/
52C
53C     ATOMIC UNITS ARE USED IN THE CALCULATION,
54C     FINAL RESULTS ARE CONVERTED TO EV
55C
56      R=RIJ/A0
57C
58      SI = (NATORB(NI).GE.3)
59      SJ = (NATORB(NJ).GE.3)
60C
61      IF ((.NOT.SI) .AND. (.NOT.SJ)) THEN
62C
63C     HYDROGEN - HYDROGEN  (SS/SS)
64C
65         AEE = PP/ADD(NI,1) + PP/ADD(NJ,1)
66         AEE = AEE * AEE
67         RI(1) = EV/SQRT(R*R+AEE)
68         CORE(1,1 )= TORE(NJ)*RI(1)
69         CORE(1,2) = TORE(NI)*RI(1)
70C
71      ELSE IF (SI .AND. (.NOT.SJ)) THEN
72C
73C     HEAVY ATOM - HYDROGEN
74C
75         AEE = PP/ADD(NI,1) + PP/ADD(NJ,1)
76         AEE = AEE * AEE
77         DA=DD(NI)
78         QA=QQ(NI) * TD
79         ADE = PP/ADD(NI,2) + PP/ADD(NJ,1)
80         ADE = ADE * ADE
81         AQE = PP/ADD(NI,3) + PP/ADD(NJ,1)
82         AQE = AQE * AQE
83         RSQ = R*R
84         ARG(1) = RSQ + AEE
85         XXX = R+DA
86         ARG(2) = XXX*XXX + ADE
87         XXX = R-DA
88         ARG(3) = XXX*XXX + ADE
89         XXX = R+QA
90         ARG(4) = XXX*XXX + AQE
91         XXX = R-QA
92         ARG(5) = XXX*XXX + AQE
93         ARG(6) = RSQ + AQE
94         ARG(7) = ARG(6) + QA*QA
95C$DOIT ASIS
96         DO 10 I = 1,7
97            SQR(I) = SQRT(ARG(I))
98   10    CONTINUE
99         EE = EV/SQR(1)
100         RI(1) = EE
101         RI(2) = EV1/SQR(2) - EV1/SQR(3)
102         RI(3) = EE + EV2/SQR(4) + EV2/SQR(5) - EV1/SQR(6)
103         RI(4) = EE + EV1/SQR(7) - EV1/SQR(6)
104         CORE(1,1) = TORE(NJ)*RI(1)
105         CORE(1,2) = TORE(NI)*RI(1)
106         CORE(2,1) = TORE(NJ)*RI(2)
107         CORE(3,1) = TORE(NJ)*RI(3)
108         CORE(4,1) = TORE(NJ)*RI(4)
109C
110      ELSE IF ((.NOT.SI).AND.SJ) THEN
111C
112C     HYDROGEN - HEAVY ATOM
113C
114         AEE = PP/ADD(NI,1) + PP/ADD(NJ,1)
115         AEE = AEE * AEE
116         DB=DD(NJ)
117         QB=QQ(NJ) * TD
118         AED = PP/ADD(NI,1) + PP/ADD(NJ,2)
119         AED = AED * AED
120         AEQ = PP/ADD(NI,1) + PP/ADD(NJ,3)
121         AEQ = AEQ * AEQ
122         RSQ = R*R
123         ARG(1) = RSQ + AEE
124         XXX = R-DB
125         ARG(2) = XXX*XXX + AED
126         XXX = R+DB
127         ARG(3) = XXX*XXX + AED
128         XXX = R-QB
129         ARG(4) = XXX*XXX + AEQ
130         XXX = R+QB
131         ARG(5) = XXX*XXX + AEQ
132         ARG(6) = RSQ + AEQ
133         ARG(7) = ARG(6) + QB*QB
134C$DOIT ASIS
135         DO 20 I = 1,7
136            SQR(I) = SQRT(ARG(I))
137   20    CONTINUE
138         EE = EV/SQR(1)
139         RI(1) = EE
140         RI(5) = EV1/SQR(2)  - EV1/SQR(3)
141         RI(11) = EE + EV2/SQR(4) + EV2/SQR(5) - EV1/SQR(6)
142         RI(12) = EE + EV1/SQR(7) - EV1/SQR(6)
143         CORE(1,1) = TORE(NJ)*RI(1)
144         CORE(1,2) = TORE(NI)*RI(1)
145         CORE(2,2) = TORE(NI)*RI(5)
146         CORE(3,2) = TORE(NI)*RI(11)
147         CORE(4,2) = TORE(NI)*RI(12)
148C
149      ELSE
150C
151C     HEAVY ATOM - HEAVY ATOM
152C
153C     DEFINE CHARGE SEPARATIONS.
154         DA=DD(NI)
155         DB=DD(NJ)
156         QA=QQ(NI) * TD
157         QB=QQ(NJ) * TD
158C
159         AEE = PP/ADD(NI,1) + PP/ADD(NJ,1)
160         AEE = AEE * AEE
161C
162         ADE = PP/ADD(NI,2) + PP/ADD(NJ,1)
163         ADE = ADE * ADE
164         AQE = PP/ADD(NI,3) + PP/ADD(NJ,1)
165         AQE = AQE * AQE
166         AED = PP/ADD(NI,1) + PP/ADD(NJ,2)
167         AED = AED * AED
168         AEQ = PP/ADD(NI,1) + PP/ADD(NJ,3)
169         AEQ = AEQ * AEQ
170         AXX = PP/ADD(NI,2) + PP/ADD(NJ,2)
171         AXX = AXX * AXX
172         ADQ = PP/ADD(NI,2) + PP/ADD(NJ,3)
173         ADQ = ADQ * ADQ
174         AQD = PP/ADD(NI,3) + PP/ADD(NJ,2)
175         AQD = AQD * AQD
176         AQQ = PP/ADD(NI,3) + PP/ADD(NJ,3)
177         AQQ = AQQ * AQQ
178         RSQ = R * R
179         ARG(1) = RSQ + AEE
180         XXX = R + DA
181         ARG(2) = XXX * XXX + ADE
182         XXX = R - DA
183         ARG(3) = XXX*XXX + ADE
184         XXX = R - QA
185         ARG(4) = XXX*XXX + AQE
186         XXX = R + QA
187         ARG(5) = XXX*XXX + AQE
188         ARG(6) = RSQ + AQE
189         ARG(7) = ARG(6) + QA*QA
190         XXX = R-DB
191         ARG(8) = XXX*XXX + AED
192         XXX = R+DB
193         ARG(9) = XXX*XXX + AED
194         XXX = R - QB
195         ARG(10) = XXX*XXX + AEQ
196         XXX = R + QB
197         ARG(11) = XXX*XXX + AEQ
198         ARG(12) = RSQ + AEQ
199         ARG(13) = ARG(12) + QB*QB
200         XXX = DA-DB
201         ARG(14) = RSQ + AXX + XXX*XXX
202         XXX = DA+DB
203         ARG(15) = RSQ + AXX + XXX*XXX
204         XXX = R + DA - DB
205         ARG(16) = XXX*XXX + AXX
206         XXX = R - DA + DB
207         ARG(17) = XXX*XXX + AXX
208         XXX = R - DA - DB
209         ARG(18) = XXX*XXX + AXX
210         XXX = R + DA + DB
211         ARG(19) = XXX*XXX + AXX
212         XXX = R + DA
213         ARG(20) = XXX*XXX + ADQ
214         ARG(21) = ARG(20) + QB*QB
215         XXX = R - DA
216         ARG(22) = XXX*XXX + ADQ
217         ARG(23) = ARG(22) + QB*QB
218         XXX = R - DB
219         ARG(24) = XXX*XXX + AQD
220         ARG(25) = ARG(24) + QA*QA
221         XXX = R + DB
222         ARG(26) = XXX*XXX + AQD
223         ARG(27) = ARG(26) + QA*QA
224         XXX = R + DA - QB
225         ARG(28) = XXX*XXX + ADQ
226         XXX = R - DA - QB
227         ARG(29) = XXX*XXX + ADQ
228         XXX = R + DA + QB
229         ARG(30) = XXX*XXX + ADQ
230         XXX = R - DA + QB
231         ARG(31) = XXX*XXX + ADQ
232         XXX = R + QA - DB
233         ARG(32) = XXX*XXX + AQD
234         XXX = R + QA + DB
235         ARG(33) = XXX*XXX + AQD
236         XXX = R - QA - DB
237         ARG(34) = XXX*XXX + AQD
238         XXX = R - QA + DB
239         ARG(35) = XXX*XXX + AQD
240         ARG(36) = RSQ + AQQ
241         XXX = QA - QB
242         ARG(37) = ARG(36) + XXX*XXX
243         XXX = QA + QB
244         ARG(38) = ARG(36) + XXX*XXX
245         ARG(39) = ARG(36) + QA*QA
246         ARG(40) = ARG(36) + QB*QB
247         ARG(41) = ARG(39) + QB*QB
248         XXX = R - QB
249         ARG(42) = XXX*XXX + AQQ
250         ARG(43) = ARG(42) + QA*QA
251         XXX = R + QB
252         ARG(44) = XXX*XXX + AQQ
253         ARG(45) = ARG(44) + QA*QA
254         XXX = R + QA
255         ARG(46) = XXX*XXX + AQQ
256         ARG(47) = ARG(46) + QB*QB
257         XXX = R - QA
258         ARG(48) = XXX*XXX + AQQ
259         ARG(49) = ARG(48) + QB*QB
260         XXX = R + QA - QB
261         ARG(50) = XXX*XXX + AQQ
262         XXX = R + QA + QB
263         ARG(51) = XXX*XXX + AQQ
264         XXX = R - QA - QB
265         ARG(52) = XXX*XXX + AQQ
266         XXX = R - QA + QB
267         ARG(53) = XXX*XXX + AQQ
268         QA=QQ(NI)
269         QB=QQ(NJ)
270         XXX = DA - QB
271         XXX = XXX*XXX
272         YYY = R - QB
273         YYY = YYY*YYY
274         ZZZ = DA + QB
275         ZZZ = ZZZ*ZZZ
276         WWW = R + QB
277         WWW = WWW*WWW
278         ARG(54) = XXX + YYY + ADQ
279         ARG(55) = XXX + WWW + ADQ
280         ARG(56) = ZZZ + YYY + ADQ
281         ARG(57) = ZZZ + WWW + ADQ
282         XXX = QA - DB
283         XXX = XXX*XXX
284         YYY = QA + DB
285         YYY = YYY*YYY
286         ZZZ = R + QA
287         ZZZ = ZZZ*ZZZ
288         WWW = R - QA
289         WWW = WWW*WWW
290         ARG(58) = ZZZ + XXX + AQD
291         ARG(59) = WWW + XXX + AQD
292         ARG(60) = ZZZ + YYY + AQD
293         ARG(61) = WWW + YYY + AQD
294         XXX = QA - QB
295         XXX = XXX*XXX
296         ARG(62) = ARG(36) + TD*XXX
297         YYY = QA + QB
298         YYY = YYY*YYY
299         ARG(63) = ARG(36) + TD*YYY
300         ARG(64) = ARG(36) + TD*(QA*QA+QB*QB)
301         ZZZ = R + QA - QB
302         ZZZ = ZZZ*ZZZ
303         ARG(65) = ZZZ + XXX + AQQ
304         ARG(66) = ZZZ + YYY + AQQ
305         ZZZ = R + QA + QB
306         ZZZ = ZZZ*ZZZ
307         ARG(67) = ZZZ + XXX + AQQ
308         ARG(68) = ZZZ + YYY + AQQ
309         ZZZ = R - QA - QB
310         ZZZ = ZZZ*ZZZ
311         ARG(69) = ZZZ + XXX + AQQ
312         ARG(70) = ZZZ + YYY + AQQ
313         ZZZ = R - QA + QB
314         ZZZ = ZZZ*ZZZ
315         ARG(71) = ZZZ + XXX + AQQ
316         ARG(72) = ZZZ + YYY + AQQ
317         DO 30 I = 1,72
318            SQR(I) = SQRT(ARG(I))
319   30    CONTINUE
320         EE = EV/SQR(1)
321         DZE = -EV1/SQR(2) + EV1/SQR(3)
322         QZZE = EV2/SQR(4) + EV2/SQR(5) - EV1/SQR(6)
323         QXXE = EV1/SQR(7) - EV1/SQR(6)
324         EDZ = - EV1/SQR(8) + EV1/SQR(9)
325         EQZZ  = EV2/SQR(10) + EV2/SQR(11) - EV1/SQR(12)
326         EQXX  = EV1/SQR(13) - EV1/SQR(12)
327         DXDX  = EV1/SQR(14) - EV1/SQR(15)
328         DZDZ  = EV2/SQR(16) + EV2/SQR(17) - EV2/SQR(18) - EV2/SQR(19)
329         DZQXX =  EV2/SQR(20) - EV2/SQR(21) - EV2/SQR(22) + EV2/SQR(23)
330         QXXDZ =  EV2/SQR(24) - EV2/SQR(25) - EV2/SQR(26) + EV2/SQR(27)
331         DZQZZ = -EV3/SQR(28) + EV3/SQR(29) - EV3/SQR(30) + EV3/SQR(31)
332     1       - EV2/SQR(22) + EV2/SQR(20)
333         QZZDZ = -EV3/SQR(32) + EV3/SQR(33) - EV3/SQR(34) + EV3/SQR(35)
334     1       + EV2/SQR(24) - EV2/SQR(26)
335         QXXQXX = EV3/SQR(37) + EV3/SQR(38) - EV2/SQR(39) - EV2/SQR(40)
336     1       + EV2/SQR(36)
337         QXXQYY = EV2/SQR(41) - EV2/SQR(39) - EV2/SQR(40) + EV2/SQR(36)
338         QXXQZZ = EV3/SQR(43) + EV3/SQR(45) - EV3/SQR(42) - EV3/SQR(44)
339     1       - EV2/SQR(39) + EV2/SQR(36)
340         QZZQXX = EV3/SQR(47) + EV3/SQR(49) - EV3/SQR(46) - EV3/SQR(48)
341     1       - EV2/SQR(40) + EV2/SQR(36)
342         QZZQZZ = EV4/SQR(50) + EV4/SQR(51) + EV4/SQR(52) + EV4/SQR(53)
343     1       - EV3/SQR(48) - EV3/SQR(46) - EV3/SQR(42) - EV3/SQR(44)
344     2       + EV2/SQR(36)
345         DXQXZ = -EV2/SQR(54) + EV2/SQR(55) + EV2/SQR(56) - EV2/SQR(57)
346         QXZDX = -EV2/SQR(58) + EV2/SQR(59) + EV2/SQR(60) - EV2/SQR(61)
347         QXZQXZ = EV3/SQR(65) - EV3/SQR(67) - EV3/SQR(69) + EV3/SQR(71)
348     1       - EV3/SQR(66) + EV3/SQR(68) + EV3/SQR(70) - EV3/SQR(72)
349         RI(1) = EE
350         RI(2) = -DZE
351         RI(3) = EE + QZZE
352         RI(4) = EE + QXXE
353         RI(5) = -EDZ
354         RI(6) = DZDZ
355         RI(7) = DXDX
356         RI(8) = -EDZ -QZZDZ
357         RI(9) = -EDZ -QXXDZ
358         RI(10) = -QXZDX
359         RI(11) =  EE + EQZZ
360         RI(12) =  EE + EQXX
361         RI(13) = -DZE -DZQZZ
362         RI(14) = -DZE -DZQXX
363         RI(15) = -DXQXZ
364         RI(16) = EE +EQZZ +QZZE +QZZQZZ
365         RI(17) = EE +EQZZ +QXXE +QXXQZZ
366         RI(18) = EE +EQXX +QZZE +QZZQXX
367         RI(19) = EE +EQXX +QXXE +QXXQXX
368         RI(20) = QXZQXZ
369         RI(21) = EE +EQXX +QXXE +QXXQYY
370         RI(22) = PP * (QXXQXX -QXXQYY)
371C
372C     CALCULATE CORE-ELECTRON ATTRACTIONS.
373C
374         CORE(1,1) = TORE(NJ)*RI(1)
375         CORE(2,1) = TORE(NJ)*RI(2)
376         CORE(3,1) = TORE(NJ)*RI(3)
377         CORE(4,1) = TORE(NJ)*RI(4)
378         CORE(1,2) = TORE(NI)*RI(1)
379         CORE(2,2) = TORE(NI)*RI(5)
380         CORE(3,2) = TORE(NI)*RI(11)
381         CORE(4,2) = TORE(NI)*RI(12)
382C
383      END IF
384C
385      RETURN
386C
387      END
388