48 use element_mod , only : nixs
49
50
51
52#include "implicit_f.inc"
53
54
55
56#include "mvsiz_p.inc"
57
58
59
60#include "vect01_c.inc"
61
62
63
64 INTEGER NEL
65
67 . x(3,*),v(3,*),w(3,*), vis(*),
68 . x1(*), x2(*), x3(*), x4(*), x5(*), x6(*),
69 . y1(*), y2(*), y3(*), y4(*), y5(*), y6(*),
70 . z1(*), z2(*), z3(*), z4(*), z5(*), z6(*),
71 . vx1(*), vx2(*), vx3(*), vx4(*), vx5(*), vx6(*),
72 . vy1(*), vy2(*), vy3(*), vy4(*), vy5(*), vy6(*),
73 . vz1(*), vz2(*), vz3(*), vz4(*), vz5(*), vz6(*),
74 . vd2(*), offg(*), off(*), rho(*), rhoo(*),
75 . r11(mvsiz),r12(mvsiz),r13(mvsiz),
76 . r21(mvsiz),r22(mvsiz),r23(mvsiz),
77 . r31(mvsiz),r32(mvsiz),r33(mvsiz),
78 . rx(mvsiz) , ry(mvsiz) , rz(mvsiz) ,
79 . sx(mvsiz) , sy(mvsiz) , sz(mvsiz) ,
80 . tx(mvsiz) , ty(mvsiz) , tz(mvsiz) ,
81 . gama0(nel,6),gama(mvsiz,6),
82 . vgax(*), vgay(*), vgaz(*), vga2(*),di(mvsiz,6),
83 . xgax(*), xgay(*), xgaz(*),
84 . xgxa2(mvsiz),xgya2(mvsiz),xgza2(mvsiz),
85 . xgxya(mvsiz),xgyza(mvsiz),xgzxa(mvsiz),gama_r(nel,6)
86 double precision
87 . sav(nel,15)
88 INTEGER NC1(*), NC2(*), NC3(*), NC4(*),
89 . NC5(*), NC6(*), MXT(*), NGL(*),NGEO(*)
90 INTEGER IXS(NIXS,*),IOUTPRT,IPARG(*)
91
92
93
94
95 INTEGER I
96
98 . xl,yl,zl
100 . xx,yy,zz,xy,xz,yz,rtr(6),abc,xxyz2,zzxy2,yyxz2,deta
102 . off_l
103
104 off_l = zero
105
106 DO i=lft,llt
107 vis(i)=zero
108 ngeo(i)=ixs(10,i)
109 ngl(i)=ixs(11,i)
110 mxt(i)=ixs(1,i)
111 nc1(i)=ixs(2,i)
112 nc2(i)=ixs(3,i)
113 nc3(i)=ixs(4,i)
114 nc4(i)=ixs(6,i)
115 nc5(i)=ixs(7,i)
116 nc6(i)=ixs(8,i)
117 rhoo(i)=rho(i)
118 ENDDO
119
120
121
122 DO i=lft,llt
123 x1(i)=x(1,nc1(i))
124 y1(i)=x(2,nc1(i))
125 z1(i)=x(3,nc1(i))
126 x2(i)=x(1,nc2(i))
127 y2(i)=x(2,nc2(i))
128 z2(i)=x(3,nc2(i))
129 x3(i)=x(1,nc3(i))
130 y3(i)=x(2,nc3(i))
131 z3(i)=x(3,nc3(i))
132 x4(i)=x(1,nc4(i))
133 y4(i)=x(2,nc4(i))
134 z4(i)=x(3,nc4(i))
135 x5(i)=x(1,nc5(i))
136 y5(i)=x(2,nc5(i))
137 z5(i)=x(3,nc5(i))
138 x6(i)=x(1,nc6(i))
139 y6(i)=x(2,nc6(i))
140 z6(i)=x(3,nc6(i))
141 off(i) =
min(one,abs(offg(i)))
142 off_l =
min(off_l,offg(i))
143 ENDDO
144
145 DO i=lft,llt
146 vx1(i)=v(1,nc1(i))
147 vy1(i)=v(2,nc1(i))
148 vz1(i)=v(3,nc1(i))
149 vx2(i)=v(1,nc2(i))
150 vy2(i)=v(2,nc2(i))
151 vz2(i)=v(3,nc2(i))
152 vx3(i)=v(1,nc3(i))
153 vy3(i)=v(2,nc3(i))
154 vz3(i)=v(3,nc3(i))
155 vx4(i)=v(1,nc4(i))
156 vy4(i)=v(2,nc4(i))
157 vz4(i)=v(3,nc4(i))
158 vx5(i)=v(1,nc5(i))
159 vy5(i)=v(2,nc5(i))
160 vz5(i)=v(3,nc5(i))
161 vx6(i)=v(1,nc6(i))
162 vy6(i)=v(2,nc6(i))
163 vz6(i)=v(3,nc6(i))
164 ENDDO
165 IF(off_l<zero)THEN
166 DO i=lft,llt
167 IF(offg(i)<zero)THEN
168 vx1(i)=zero
169 vy1(i)=zero
170 vz1(i)=zero
171 vx2(i)=zero
172 vy2(i)=zero
173 vz2(i)=zero
174 vx3(i)=zero
175 vy3(i)=zero
176 vz3(i)=zero
177 vx4(i)=zero
178 vy4(i)=zero
179 vz4(i)=zero
180 vx5(i)=zero
181 vy5(i)=zero
182 vz5(i)=zero
183 vx6(i)=zero
184 vy6(i)=zero
185 vz6(i)=zero
186 ENDIF
187 ENDDO
188 ENDIF
189
190
191
192 IF(ioutprt/=0)THEN
193 DO i=lft,llt
194 vgax(i)=vx1(i)+vx2(i)+vx3(i)+vx4(i)+vx5(i)+vx6(i)
195 vgay(i)=vy1(i)+vy2(i)+vy3(i)+vy4(i)+vy5(i)+vy6(i)
196 vgaz(i)=vz1(i)+vz2(i)+vz3(i)+vz4(i)+vz5(i)+vz6(i)
197 vga2(i)=vx1(i)*vx1(i)+vx2(i)*vx2(i)+vx3(i)*vx3(i)+vx4(i)*vx4(i)
198 1 +vx5(i)*vx5(i)+vx6(i)*vx6(i)
199 2 +vy1(i)*vy1(i)+vy2(i)*vy2(i)+vy3(i)*vy3(i)+vy4(i)*vy4(i)
200 3 +vy5(i)*vy5(i)+vy6(i)*vy6(i)
201 4 +vz1(i)*vz1(i)+vz2(i)*vz2(i)+vz3(i)*vz3(i)+vz4(i)*vz4(i)
202 5 +vz5(i)*vz5(i)+vz6(i)*vz6(i)
203 ENDDO
204 IF(iparg(80)==1) THEN
205 DO i=lft,llt
206 xgax(i)=x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i)
207 xgay(i)=y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i)
208 xgaz(i)=z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i)
209 xgxa2(i)=x1(i)**2+x2(i)**2+x3(i)**2+x4(i)**2
210 1 +x5(i)**2+x6(i)**2
211 xgya2(i)=y1(i)**2+y2(i)**2+y3(i)**2+y4(i)**2
212 1 +y5(i)**2+y6(i)**2
213 xgza2(i)=z1(i)**2+z2(i)**2+z3(i)**2+z4(i)**2
214 1 +z5(i)**2+z6(i)**2
215 xgxya(i)=x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)+x4(i)*y4(i)
216 1 +x5(i)*y5(i)+x6(i)*y6(i)
217 xgyza(i)=y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)+y4(i)*z4(i)
218 1 +y5(i)*z5(i)+y6(i)*z6(i)
219 xgzxa(i)=z1(i)*x1(i)+z2(i)*x2(i)+z3(i)*x3(i)+z4(i)*x4(i)
220 1 +z5(i)*x5(i)+z6(i)*x6(i)
221 ENDDO
222 ENDIF
223 ENDIF
224
225 DO i=lft,llt
226 xl=one_over_6*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i))
227 yl=one_over_6*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i))
228 zl=one_over_6*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i))
229 x1(i)=x1(i)-xl
230 y1(i)=y1(i)-yl
231 z1(i)=z1(i)-zl
232 x2(i)=x2(i)-xl
233 y2(i)=y2(i)-yl
234 z2(i)=z2(i)-zl
235 x3(i)=x3(i)-xl
236 y3(i)=y3(i)-yl
237 z3(i)=z3(i)-zl
238 x4(i)=x4(i)-xl
239 y4(i)=y4(i)-yl
240 z4(i)=z4(i)-zl
241 x5(i)=x5(i)-xl
242 y5(i)=y5(i)-yl
243 z5(i)=z5(i)-zl
244 x6(i)=x6(i)-xl
245 y6(i)=y6(i)-yl
246 z6(i)=z6(i)-zl
247 ENDDO
248
249
250
252 1 x1, x2, x3, x4,
253 2 x5, x6, y1, y2,
254 3 y3, y4, y5, y6,
255 4 z1, z2, z3, z4,
256 5 z5, z6, r11, r12,
257 6 r13, r21, r22, r23,
258 7 r31, r32, r33, rx,
259 8 ry, rz, sx, sy,
260 9 sz, tx, ty, tz,
261 a nel)
262
263 gama_r(lft:llt,1) = r11(lft:llt)
264 gama_r(lft:llt,2) = r21(lft:llt)
265 gama_r(lft:llt,3) = r31(lft:llt)
266 gama_r(lft:llt,4) = r12(lft:llt)
267 gama_r(lft:llt,5) = r22(lft:llt)
268 gama_r(lft:llt,6) = r32(lft:llt)
269
270
271
272
273 IF(ismstr<=4.AND.jlag>0) THEN
274 DO i=lft,llt
275 IF(offg(i)>one)THEN
276 x1(i)=sav(i,1)
277 y1(i)=sav(i,2)
278 z1(i)=sav(i,3)
279 x2(i)=sav(i,4)
280 y2(i)=sav(i,5)
281 z2(i)=sav(i,6)
282 x3(i)=sav(i,7)
283 y3(i)=sav(i,8)
284 z3(i)=sav(i,9)
285 x4(i)=sav(i,10)
286 y4(i)=sav(i,11)
287 z4(i)=sav(i,12)
288 x5(i)=sav(i,13)
289 y5(i)=sav(i,14)
290 z5(i)=sav(i,15)
291 x6(i)=zero
292 y6(i)=zero
293 z6(i)=zero
294 off(i) = offg(i) -one
295 xl=one_over_6*(x1(i)+x2(i)+x3(i)+x4(i)+x5(i)+x6(i))
296 yl=one_over_6*(y1(i)+y2(i)+y3(i)+y4(i)+y5(i)+y6(i))
297 zl=one_over_6*(z1(i)+z2(i)+z3(i)+z4(i)+z5(i)+z6(i))
298 x1(i)=x1(i)-xl
299 y1(i)=y1(i)-yl
300 z1(i)=z1(i)-zl
301 x2(i)=x2(i)-xl
302 y2(i)=y2(i)-yl
303 z2(i)=z2(i)-zl
304 x3(i)=x3(i)-xl
305 y3(i)=y3(i)-yl
306 z3(i)=z3(i)-zl
307 x4(i)=x4(i)-xl
308 y4(i)=y4(i)-yl
309 z4(i)=z4(i)-zl
310 x5(i)=x5(i)-xl
311 y5(i)=y5(i)-yl
312 z5(i)=z5(i)-zl
313 x6(i)=x6(i)-xl
314 y6(i)=y6(i)-yl
315 z6(i)=z6(i)-zl
316 ELSE
317 xl=r11(i)*x1(i)+r21(i)*y1(i)+r31(i)*z1(i)
318 yl=r12(i)*x1(i)+r22(i)*y1(i)+r32(i)*z1(i)
319 zl=r13(i)*x1(i)+r23(i)*y1(i)+r33(i)*z1(i)
320 x1(i)=xl
321 y1(i)=yl
322 z1(i)=zl
323 xl=r11(i)*x2(i)+r21(i)*y2(i)+r31(i)*z2(i)
324 yl=r12(i)*x2(i)+r22(i)*y2(i)+r32(i)*z2(i)
325 zl=r13(i)*x2(i)+r23(i)*y2(i)+r33(i)*z2(i)
326 x2(i)=xl
327 y2(i)=yl
328 z2(i)=zl
329 xl=r11(i)*x3(i)+r21(i)*y3(i)+r31(i)*z3(i)
330 yl=r12(i)*x3(i)+r22(i)*y3(i)+r32(i)*z3(i)
331 zl=r13(i)*x3(i)+r23(i)*y3(i)+r33(i)*z3(i)
332 x3(i)=xl
333 y3(i)=yl
334 z3(i)=zl
335 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
336 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
337
338 x4(i)=xl
339 y4(i)=yl
340 z4(i)=-z1(i)
341 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
342 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
343
344 x5(i)=xl
345 y5(i)=yl
346 z5(i)=-z2(i)
347 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
348 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
349
350 x6(i)=xl
351 y6(i)=yl
352 z6(i)=-z3(i)
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369 off(i) = offg(i)
370 ENDIF
371 ENDDO
372
373 ELSE
375 1 r11, r12, r13, r21,
376 2 r22, r23, r31, r32,
377 3 r33, x1, y1, z1,
378 4 nel)
380 1 r11, r12, r13, r21,
381 2 r22, r23, r31, r32,
382 3 r33, x2, y2, z2,
383 4 nel)
385 1 r11, r12, r13, r21,
386 2 r22, r23, r31, r32,
387 3 r33, x3, y3, z3,
388 4 nel)
389 DO i=lft,llt
390 xl=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
391 yl=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
392
393 x4(i)=xl
394 y4(i)=yl
395 z4(i)=-z1(i)
396 xl=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
397 yl=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
398
399 x5(i)=xl
400 y5(i)=yl
401 z5(i)=-z2(i)
402 xl=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
403 yl=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
404
405 x6(i)=xl
406 y6(i)=yl
407 z6(i)=-z3(i)
408 off(i) =
min(one,offg(i))
409 ENDDO
410
411 ENDIF
412
413
414
416 1 r11, r12, r13, r21,
417 2 r22, r23, r31, r32,
418 3 r33, vx1, vy1, vz1,
419 4 nel)
421 1 r11, r12, r13, r21,
422 2 r22, r23, r31, r32,
423 3 r33, vx2, vy2, vz2,
424 4 nel)
426 1 r11, r12, r13, r21,
427 2 r22, r23, r31, r32,
428 3 r33, vx3, vy3, vz3,
429 4 nel)
431 1 r11, r12, r13, r21,
432 2 r22, r23, r31, r32,
433 3 r33, vx4, vy4, vz4,
434 4 nel)
436 1 r11, r12, r13, r21,
437 2 r22, r23, r31, r32,
438 3 r33, vx5, vy5, vz5,
439 4 nel)
441 1 r11, r12, r13, r21,
442 2 r22, r23, r31, r32,
443 3 r33, vx6, vy6, vz6,
444 4 nel)
445
446 DO i=lft,llt
447 vd2(i) = zero
448 ENDDO
449
450 DO i=lft,llt
451 xx = x1(i)*x1(i)+x2(i)*x2(i)+x3(i)*x3(i)
452 1 +x4(i)*x4(i)+x5(i)*x5(i)+x6(i)*x6(i)
453 yy = y1(i)*y1(i)+y2(i)*y2(i)+y3(i)*y3(i)
454 1 +y4(i)*y4(i)+y5(i)*y5(i)+y6(i)*y6(i)
455 xy = x1(i)*y1(i)+x2(i)*y2(i)+x3(i)*y3(i)
456 1 +x4(i)*y4(i)+x5(i)*y5(i)+x6(i)*y6(i)
457 xz = x1(i)*z1(i)+x2(i)*z2(i)+x3(i)*z3(i)
458 1 +x4(i)*z4(i)+x5(i)*z5(i)+x6(i)*z6(i)
459 yz = y1(i)*z1(i)+y2(i)*z2(i)+y3(i)*z3(i)
460 1 +y4(i)*z4(i)+y5(i)*z5(i)+y6(i)*z6(i)
461 zz = z1(i)*z1(i)+z2(i)*z2(i)+z3(i)*z3(i)
462 1 +z4(i)*z4(i)+z5(i)*z5(i)+z6(i)*z6(i)
463 rtr(1)= yy+zz
464 rtr(2)= xx+zz
465 rtr(3)= xx+yy
466 rtr(4)= -xy
467 rtr(5)= -xz
468 rtr(6)= -yz
469
470 abc = rtr(1)*rtr(2)*rtr(3)
471 xxyz2 = rtr(1)*rtr(6)*rtr(6)
472 yyxz2 = rtr(2)*rtr(5)*rtr(5)
473 zzxy2 = rtr(3)*rtr(4)*rtr(4)
474 deta = abc + two*rtr(4)*rtr(5)*rtr(6)-xxyz2-yyxz2-zzxy2
475 IF (deta<em20) THEN
476 deta=one
477 ELSE
478 deta=one/deta
479 ENDIF
480 di(i,1) = (abc-xxyz2)*deta/rtr(1)
481 di(i,2) = (abc-yyxz2)*deta/rtr(2)
482 di(i,3) = (abc-zzxy2)*deta/rtr(3)
483 di(i,4) = (rtr(5)*rtr(6)-rtr(4)*rtr(3))*deta
484 di(i,5) = (rtr(6)*rtr(4)-rtr(5)*rtr(2))*deta
485 di(i,6) = (rtr(4)*rtr(5)-rtr(6)*rtr(1))*deta
486 ENDDO
488 1 x1, x2, x3, x4,
489 2 x5, x6, y1, y2,
490 3 y3, y4, y5, y6,
491 4 z1, z2, z3, z4,
492 5 z5, z6, vx1, vx2,
493 6 vx3, vx4, vx5, vx6,
494 7 vy1, vy2, vy3, vy4,
495 8 vy5, vy6, vz1, vz2,
496 9 vz3, vz4, vz5, vz6,
497 a di, nel)
498 RETURN
subroutine s6proj3(x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6, vx1, vx2, vx3, vx4, vx5, vx6, vy1, vy2, vy3, vy4, vy5, vy6, vz1, vz2, vz3, vz4, vz5, vz6, di, nel)
subroutine s6cortho3(x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine vrrota3(r11, r12, r13, r21, r22, r23, r31, r32, r33, x1, y1, z1, nel)