32
33
34
35#include "implicit_f.inc"
36
37
38
40 . x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4,
41 . xp, yp, zp, d2, jac, nrx, nry, nrz,
42 . xs, ys, zs, rval
43
44
45
46 INTEGER NPG, IAD, IAD2, IP
48 . pg(28), wpg(14), r2, w, xg, yg, zg,
49 . val1, val2, val3, val4, valphi,
50 . ksip, etap
51
52 DATA pg / .0000000000000, .0000000000000,
53 . -.5773502691896,-.5773502691896,
54 . .5773502691896,-.5773502691896,
55 . -.5773502691896, .5773502691896,
56 . .5773502691896, .5773502691896,
57 . -.7745966692415,-.7745966692415,
58 . .0000000000000,-.7745966692415,
59 . .7745966692415,-.7745966692415,
60 . -.7745966692415, .0000000000000,
61 . .0000000000000, .0000000000000,
62 . .7745966692415, .0000000000000,
63 . -.7745966692415, .7745966692415,
64 . .0000000000000, .7745966692415,
65 . .7745966692415, .7745966692415/
66 DATA wpg / 1.00000000000,
67 . .2500000000000, .2500000000000,
68 . .2500000000000, .2500000000000,
69 . .0771604938272, .1234567901234,
70 . .0771604938272, .1234567901234,
71 . .1975308641975, .1234567901234,
72 . .0771604938272, .1234567901234,
73 . .0771604938272/
74
75
76 r2=(xp-xs)**2+(yp-ys)**2+(zp-zs)**2
77
78 IF (r2>hundred*d2) THEN
79 npg=1
80 iad=1
81 ELSEIF (r2>twenty5*d2) THEN
82 npg=4
83 iad=2
84 ELSE
85 npg=9
86 iad=6
87 ENDIF
88
89 rval=zero
90 iad2=2*(iad-1)+1
91 DO ip=1,npg
92 w=wpg(iad)
93 ksip=pg(iad2)
94 etap=pg(iad2+1)
95 iad=iad+1
96 iad2=iad2+2
97 val1=fourth*(one-ksip)*(one-etap)
98 val2=fourth*(one+ksip)*(one-etap)
99 val3=fourth*(one+ksip)*(one+etap)
100 val4=fourth*(one-ksip)*(one+etap)
101 xg=val1*x1+val2*x2+val3*x3+val4*x4
102 yg=val1*y1+val2*y2+val3*y3+val4*y4
103 zg=val1*z1+val2*z2+val3*z3+val4*z4
104 r2=(xg-xp)**2+(yg-yp)**2+(zg-zp)**2
105 IF(r2>em20)THEN
106 valphi=-(nrx*(xg-xp)+nry*(yg-yp)+nrz*(zg-zp))/(r2**three_half)
107 rval =rval+w*valphi*jac
108 ENDIF
109 ENDDO
110
111 RETURN