147
148
149
150#include "implicit_f.inc"
151
152
153
154 INTEGER NSN, NMN, ILEV,
155 . IRECT(4,*), MSR(*), NSV(*), IRTL(*), WEIGHT(*), IRUPT(*)
156
158 . a(3,*), ar(3,*),crst(2,*), ms(*),
159 . x(3,*),in(*),stifr(*),stifn(*),csts_bis(2,*)
160
161
162
163
164
165
166 INTEGER I, J, II, L, JJ,
167
169 . h(4),s,t,xmsi,fxi,fyi,fzi,mxi,myi,mzi,ins,aa,
170 . x0,x1,x2,x3,x4,y0,y1,y2,y3,y4,z0,z1,z2,z3,z4,
171 . xc0,yc0,zc0,sp,sm,tp,tm,xc,yc,zc,
172 . stf,h2(4)
173
174 DO ii=1,nsn
175 IF (irupt(ii) == 0) THEN
176 i = nsv(ii)
177 IF (i > 0) THEN
178 l = irtl(ii)
179
180 s = crst(1,ii)
181 t = crst(2,ii)
182 sp= one + s
183 sm= one - s
184 tp= fourth*(one + t)
185 tm= fourth*(one - t)
186 h(1)=tm*sm
187 h(2)=tm*sp
188 h(3)=tp*sp
189 h(4)=tp*sm
190
191
192 s = csts_bis(1,ii)
193 t = csts_bis(2,ii)
194 sp= one + s
195 sm= one - s
196 tp= fourth*(one + t)
197 tm= fourth*(one - t)
198 h2(1)=tm*sm
199 h2(2)=tm*sp
200 h2(3)=tp*sp
201 h2(4)=tp*sm
202
203 x0 = x(1,i)
204 y0 = x(2,i)
205 z0 = x(3,i)
206
207 x1 = x(1,irect(1,l))
208 y1 = x(2,irect(1,l))
209 z1 = x(3,irect(1,l))
210 x2 = x(1,irect(2,l))
211 y2 = x(2,irect(2,l))
212 z2 = x(3,irect(2,l))
213 x3 = x(1,irect(3,l))
214 y3 = x(2,irect(3,l))
215 z3 = x(3,irect(3,l))
216 x4 = x(1,irect(4,l))
217 y4 = x(2,irect(4,l))
218 z4 = x(3,irect(4,l))
219
220 xc = x1 * h(1) + x2 * h(2) + x3 * h(3) + x4 * h(4)
221 yc = y1 * h(1) + y2 * h(2) + y3 * h(3) + y4 * h(4)
222 zc = z1 * h(1) + z2 * h(2) + z3 * h(3) + z4 * h(4)
223
224 xc0=x0-xc
225 yc0=y0-yc
226 zc0=z0-zc
227
228 aa = xc0*xc0 + yc0*yc0 + zc0*zc0
229 ins = in(i) + aa * ms(i)
230 stf = stifr(i) + aa * stifn(i)
231
232 fxi=a(1,i)
233 fyi=a(2,i)
234 fzi=a(3,i)
235
236 mxi = ar(1,i) + yc0 * fzi - zc0 * fyi
237 myi = ar(2,i) + zc0 * fxi - xc0 * fzi
238 mzi = ar(3,i) + xc0 * fyi - yc0 * fxi
239
240 w = weight(i)
241 DO jj=1,4
242 j=irect(jj,l)
243 ar(1,j) =ar(1,j) + mxi*h(jj)*w
244 ar(2,j) =ar(2,j) + myi*h(jj)*w
245 ar(3,j) =ar(3,j) + mzi*h(jj)*w
246 in(j) =in(j) + ins*h2(jj)*w
247 stifr(j)=stifr(j)+ stf*h(jj)*w
248 ENDDO
249 stifr(i)=em20
250 stifn(i)=em20
251 in(i) =zero
252 ms(i) =zero
253 a(1,i) =zero
254 a(2,i) =zero
255 a(3,i) =zero
256
257 ENDIF
258 ENDIF
259 ENDDO
260
261 RETURN