33
34
35
36#include "implicit_f.inc"
37
38
39
41 . x1, y1, z1, x2, y2, z2, x3, y3, z3,
42 . xp, yp, zp, d2, jac, nrx, nry, nrz,
43 . xs, ys, zs, rval
44
45
46
47 INTEGER NPG, IAD, IAD2, IP, IHG
49 . pg(50), wpg(25), r2,
50 . val1, val2, val3, w, xg, yg, zg, valphi,
51 . eta1, eta2
52
53 DATA pg /.33333333,.33333333,
54 . .33333333,.33333333,
55 . .60000000,.20000000,
56 . .20000000,.60000000,
57 . .20000000,.20000000,
58 . .33333333,.33333333,
59 . .79742699,.10128651,
60 . .10128651,.79742699,
61 . .10128651,.10128651,
62 . .05971587,.47014206,
63 . .47014206,.05971587,
64 . .47014206,.47014206,
65 . .06513010,.06513010,
66 . .86973979,.06513010,
67 . .06513010,.86973979,
68 . .31286550,.04869031,
69 . .63844419,.31286550,
70 . .04869031,.63844419,
71 . .63844419,.04869031,
72 . .31286550,.63844419,
73 . .04869031,.31286550,
74 . .26034597,.26034597,
75 . .47930807,.26034597,
76 . .26034597,.47930807,
77 . .33333333,.33333333/
78 DATA wpg /1.00000000,
79 . -.56250000,.52083333,
80 . .52083333,.52083333,
81 . .22500000,.12593918,
82 . .12593918,.12593918,
83 . .13239415,.13239415,
84 . .13239415,
85 . .05334724,.05334724,
86 . .05334724,.07711376,
87 . .07711376,.07711376,
88 . .07711376,.07711376,
89 . .07711376,.17561526,
90 . .17561526,.17561526,
91 . -.14957004/
92
93
94 r2=(xp-xs)**2+(yp-ys)**2+(zp-zs)**2
95
96 IF (r2>hundred*d2) THEN
97 npg=1
98 iad=1
99 ELSEIF (r2>twenty5*d2) THEN
100 npg=4
101 iad=2
102 ELSEIF (r2>four*d2) THEN
103 npg=7
104 iad=6
105 ELSE
106 npg=13
107 iad=13
108 ENDIF
109
110 rval=zero
111 iad2=2*(iad-1)+1
112 DO ip=1,npg
113 w=wpg(iad)
114 eta1=pg(iad2)
115 eta2=pg(iad2+1)
116 iad=iad+1
117 iad2=iad2+2
118 val1=one-eta1-eta2
119 val2=eta1
120 val3=eta2
121 xg=val1*x1+val2*x2+val3*x3
122 yg=val1*y1+val2*y2+val3*y3
123 zg=val1*z1+val2*z2+val3*z3
124 r2=(xg-xp)**2+(yg-yp)**2+(zg-zp)**2
125 IF(r2>em20)THEN
126 valphi=-(nrx*(xg-xp)+nry*(yg-yp)+nrz*(zg-zp))/(r2**three_half)
127 rval = rval + w*valphi*jac
128 ENDIF
129 ENDDO
130
131 RETURN