31 3 DELTAX2, THEM, FTHE, AR,
32 4 X, STIFR, SAV, CONDN,
33 5 CONDE, ITAGDN, NEL, ISMSTR,
34 6 JTHE, ISROT , NODADT_THERM)
38#include "implicit_f.inc"
49 INTEGER,
INTENT(IN) :: ISMSTR
50 INTEGER,
INTENT(IN) :: JTHE
51 INTEGER,
INTENT(IN) :: ISROT
52 INTEGER,
INTENT(IN) :: NODADT_THERM
53 INTEGER NC(MVSIZ,10),ITAGDN(*),NEL
56 . offg(*),a(3,*),stifn(*),sti(*),deltax2(*),
57 . fx(mvsiz,10), fy(mvsiz,10), fz(mvsiz,10),
58 . them(mvsiz,10),fthe(*),ar(3,*),x(3,*),stifr(*),
63 . stiv(mvsiz),stie(mvsiz)
70 INTEGER I,N, IPERM(4),IPERM1(10),IPERM2(10),N1,N2,NN,ND,II,J
73 DATA /0,0,0,0,1,2,3,1,2,3/
74 DATA IPERM2/0,0,0,0,2,3,1,4,4,4/
76 . off_l,xm,ym,zm,xx,yy,zz,facirot,facirot2
79 facirot = (nine + third)
82 facirot2 = two * (nine + third)
86 off_l =
min(off_l,offg(i))
100 IF(offg(i)<=zero)
THEN
106 IF(nodadt_therm == 1)
THEN
117 IF(idt1tet10/=0 .AND. isrot/=1)
THEN
127 stiv(i) = two/thirty2 * sti(i)
128 stie(i) = two*seven/fourty8 * sti(i)
134 a(1,nn)=a(1,nn)+fx(i,n)
135 a(2,nn)=a(2,nn)+fy(i,n)
138 stifn(nn)=stifn(nn)+stiv(i)
146 a(1,nn)=a(1,nn)+fx(i,n)
147 a(2,nn)=a(2,nn)+fy(i,n)
148 a(3,nn)=a(3,nn)+fz(i,n)
150 stifn(nn)=stifn(nn)+stie(i)
154 a(1,n1)=a(1,n1)+half*fx(i,n)
155 a(2,n1)=a(2,n1)+half*fy(i,n)
156 a(3,n1)=a(3,n1)+half*fz(i,n)
157 stifn(n1)=stifn(n1)+half*stie(i)
158 a(1,n2)=a(1,n2)+half*fx(i,n)
159 a(2,n2)=a(2,n2)+half*fy(i,n)
160 a(3,n2)=a(3,n2)+half*fz(i,n)
161 stifn(n2)=stifn(n2)+half*stie(i)
173 sti(i) = half * sti(i)
179 a(1,nn)=a(1,nn)+fx(i,n)
180 a(2,nn)=a(2,nn)+fy(i,n)
181 a(3,nn)=a(3,nn)+fz(i,n)
182 stifn(nn)=stifn(nn)+sti(i)
192 a(1,n1)=a(1,n1)+half*fx(i,n)
193 a(2,n1)=a(2,n1)+half*fy(i,n)
194 a(3,n1)=a(3,n1)+half*fz(i,n)
195 a(1,n2)=a(1,n2)+half*fx(i,n)
196 a(2,n2)=a(2,n2)+half*fy(i,n)
197 a(3,n2)=a(3,n2)+half*fz(i,n)
198 ELSEIF(itagdn(nn)/=0)
THEN
200 a(1,nn)=a(1,nn)+fx(i,n)
201 a(2,nn)=a(2,nn)+fy(i,n)
202 a(3,nn)=a(3,nn)+fz(i,n)
203 stifn(nn)=stifn(nn)+sti(i)*facirot
219 a(1,nn)=a(1,nn)+fx(i,n)
220 a(2,nn)=a(2,nn)+fy(i,n)
221 a(3,nn)=a(3,nn)+fz(i,n)
222 stifn(nn)=stifn(nn)+sti(i)*deltax2(i)
230 a(1,nn)=a(1,nn)+fx(i,n)
231 a(2,nn)=a(2,nn)+fy(i,n)
232 a(3,nn)=a(3,nn)+fz(i,n)
233 stifn(nn)=stifn(nn)+sti(i)
237 a(1,n1)=a(1,n1)+half*fx(i,n)
238 a(2,n1)=a(2,n1)+half*fy(i,n)
239 a(3,n1)=a(3,n1)+half*fz(i,n)
240 stifn(n1)=stifn(n1)+half*sti(i)
241 a(1,n2)=a(1,n2)+half*fx(i,n)
242 a(2,n2)=a(2,n2)+half*fy(i,n)
243 a(3,n2)=a(3,n2)+half*fz(i,n)
244 stifn(n2)=stifn(n2)+half
249 ELSEIF(isrot == 1)
THEN
254 a(1,nn)=a(1,nn)+fx(i,n)
255 a(2,nn)=a(2,nn)+fy(i,n)
256 a(3,nn)=a(3,nn)+fz(i,n)
257 stifn(nn)=stifn(nn) + sti(i)*two
258 stifr(nn)=stifr(nn) + one_over_8*sti(i)*deltax2
262 IF(ismstr==1.OR.((ismstr==2.OR.ismstr==12).AND.idtmin(1)==3))
THEN
267 a(1,n1)=a(1,n1)+half*fx(i,n)
268 a(2,n1)=a(2,n1)+half*fy(i,n)
269 a(3,n1)=a(3,n1)+half*fz(i,n)
270 a(1,n2)=a(1,n2)+half*fx(i,n)
271 a(2,n2)=a(2,n2)+half*fy(i,n)
272 a(3,n2)=a(3,n2)+half*fz(i,n)
273 IF(abs(offg(i))>one)
THEN
274 xx=sav(i,iperm2(n))-sav(i,iperm1(n))
275 yy=sav(i,iperm2(n)+10)-sav(i,iperm1(n)+10)
276 zz=sav(i,iperm2(n)+20)-sav(i,iperm1(n)+20)
277 xm = one_over_8*(yy*fz(i,n) - zz*fy(i,n))
278 ym = one_over_8*(zz*fx(i,n) - xx*fz(i,n))
279 zm = one_over_8*(xx*fy(i,n) - yy*fx(i,n))
282 . ((x(2,n2)-x(2,n1))*fz(i,n) - (x(3,n2)-x(3,n1))*fy(i,n))
284 . ((x(3,n2)-x(3,n1))*fx(i,n) - (x(1,n2)-x(1,n1))*fz(i,n))
286 . ((x(1,n2)-x(1,n1))*fy(i,n) - (x(2,n2)-x(2,n1))*fx(i,n))
288 ar(1,n1) = ar(1,n1) + xm
289 ar(2,n1) = ar(2,n1) + ym
290 ar(3,n1) = ar(3,n1) + zm
291 ar(1,n2) = ar(1,n2) - xm
292 ar(2,n2) = ar(2,n2) - ym
293 ar(3,n2) = ar(3,n2) - zm
301 a(1,n1)=a(1,n1)+half*fx(i,n)
302 a(2,n1)=a(2,n1)+half*fy(i,n)
303 a(3,n1)=a(3,n1)+half*fz(i,n)
304 a(1,n2)=a(1,n2)+half*fx(i,n)
305 a(2,n2)=a(2,n2)+half*fy(i,n)
306 a(3,n2)=a(3,n2)+half*fz(i,n)
308 . ((x(2,n2)-x(2,n1))*fz(i,n) - (x(3,n2)-x(3,n1))*fy(i,n))
310 . ((x(3,n2)-x(3,n1))*fx(i,n) - (x(1,n2)-x(1,n1))*fz(i,n))
312 . ((x(1,n2)-x(1,n1))*fy(i,n) - (x(2,n2)-x(2,n1))*fx(i,n))
313 ar(1,n1) = ar(1,n1) + xm
314 ar(2,n1) = ar(2,n1) + ym
315 ar(3,n1) = ar(3,n1) + zm
316 ar(1,n2) = ar(1,n2) - xm
317 ar(2,n2) = ar(2,n2) - ym
318 ar(3,n2) = ar(3,n2) - zm
322 ELSEIF(isrot == 2)
THEN
327 a(1,nn)=a(1,nn)+fx(i,n)
328 a(2,nn)=a(2,nn)+fy(i,n)
329 a(3,nn)=a(3,nn)+fz(i,n)
330 stifn(nn)=stifn(nn)+sti(i)*two
339 a(1,n1)=a(1,n1)+half*fx(i,n)
341 a(3,n1)=a(3,n1)+half*fz(i,n)
342 a(1,n2)=a(1,n2)+half*fx(i,n)
343 a(2,n2)=a(2,n2)+half*fy(i,n)
344 a(3,n2)=a(3,n2)+half*fz(i,n)
345 ELSEIF(itagdn(nn)/=0)
THEN
347 a(1,nn)=a(1,nn)+fx(i,n)
348 a(2,nn)=a(2,nn)+fy(i,n)
349 a(3,nn)=a(3,nn)+fz(i,n)
350 stifn(nn)=stifn(nn)+sti(i)*facirot2
365 fthe(nn)= fthe(nn) + them(i,n)
374 fthe(nn)= fthe(nn) + them(i,n)
378 fthe(n1)= fthe(n1) + half*them(i,n)
379 fthe(n2)= fthe(n2) + half*them(i,n)
389 IF(nodadt_therm == 1 )
THEN
392 conde(i)=fourth*conde(i)
400 condn(nn)= condn(nn) + conde(i)*deltax2(i)
408 condn(nn)= condn(nn) + conde(i)
412 condn(n1)= condn(n1)+half*conde(i)
413 condn(n2)= condn(n2)+half*conde(i)
418 ELSEIF(isrot == 1)
THEN
423 condn(nn)= condn(nn) + conde(i)*deltax2(i)*three*one_over_8
426 ELSEIF(isrot == 2)
THEN
431 condn(nn)= condn(nn) + conde(i)*two
437 IF(nn/=0.AND.itagdn(nn)/=0)
THEN
438 condn(nn)= condn(nn) + conde(i)*facirot2
454 fx(i,n1)=fx(i,n1)+half*fx(i,n)
455 fy(i,n1)=fy(i,n1)+half*fy(i,n)
456 fz(i,n1)=fz(i,n1)+half*fz(i,n)
457 fx(i,n2)=fx(i,n2)+half*fx(i,n)
458 fy(i,n2)=fy(i,n2)+half*fy(i,n)
459 fz(i,n2)=fz(i,n2)+half*fz(i,n)