61#include "implicit_f.inc"
72 . x,y,z, rtrans(ntransf,*)
76 INTEGER I,L,K,CPTZERO,IDSUBMODEL,SUB_LEVEL,CUR_SUBMOD,ITY
78 . rot(9),p(3),x0(3),x1(3),sx,sy,sz,s,tx,ty,tz
84 IF(lsubmodel(k)%NOSUBMOD == sub_id)
THEN
90 cur_submod = idsubmodel
91 sub_level = lsubmodel(idsubmodel)%LEVEL
92 DO WHILE (sub_level /= 0)
93 DO i=1,lsubmodel(cur_submod)%NBTRANS
94 IF (lsubmodel(cur_submod)%IDTRANS(i) /= 0)
THEN
95 ity = rtrans(lsubmodel(cur_submod)%IDTRANS(i),2)
98 x0(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+11)
101 x1(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+14)
106 s = one/
max(sqrt(tx*tx + ty*ty + tz*tz),em20)
113 s = sx*tx + sy*ty + sz*tz
117 ELSE IF ( ity == 6 )
THEN
119 x0(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+11)
121 sx = rtrans(lsubmodel(cur_submod)%IDTRANS(i),20)
122 sy = rtrans(lsubmodel(cur_submod)%IDTRANS(i),21)
123 sz = rtrans(lsubmodel(cur_submod)%IDTRANS(i),22)
130 rot(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+2)
131 IF (rot(l) == zero ) cptzero = cptzero + 1
133 IF(cptzero == 9) cycle
144 sub_level = sub_level - 1
145 cur_submod = lsubmodel(cur_submod)%IFATHER
187#include "implicit_f.inc"
191#include "com04_c.inc"
198 . x,y,z, rtrans(ntransf,*)
202 INTEGER I,L,K,IDSUBMODEL,ITY,SUB_LEVEL,CUR_SUBMOD
204 . rot(9),p(3),x0(3),x1(3),tx,ty,tz,xp,yp,zp,xcold(3),xcnew(3),
210 IF(lsubmodel(k)%NOSUBMOD == sub_id)
THEN
216 cur_submod = idsubmodel
217 sub_level = lsubmodel(idsubmodel)%LEVEL
218 DO WHILE (sub_level /= 0)
219 DO i=1,lsubmodel(cur_submod)%NBTRANS
220 IF (lsubmodel(cur_submod)%IDTRANS(i) /= 0)
THEN
221 ity = rtrans(lsubmodel(cur_submod)%IDTRANS(i),2)
223 tx = rtrans(lsubmodel(cur_submod)%IDTRANS(i),15)
224 ty = rtrans(lsubmodel(cur_submod)%IDTRANS(i),16)
225 tz = rtrans(lsubmodel(cur_submod)%IDTRANS(i),17)
231 x0(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+11)
234 rot(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+2)
244 tx = rtrans(lsubmodel(cur_submod)%IDTRANS(i),15)
245 ty = rtrans(lsubmodel(cur_submod)%IDTRANS(i),16)
246 tz = rtrans(lsubmodel(cur_submod)%IDTRANS(i),17)
248 rot(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+2)
250 xp = rot(1)*x + rot(4)*y + rot(7)*z + tx
251 yp = rot(2)*x + rot(5)*y + rot(8)*z + ty
252 zp = rot(3)*x + rot(6)*y + rot(9)*z + tz
258 xcold(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+11)
261 xcnew(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+14)
264 rot(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+2)
269 x = xcnew(1) + rot(1)*xp + rot(4)*yp + rot(7)*zp
270 y = xcnew(2) + rot(2)*xp + rot(5)*yp + rot(8)*zp
271 z = xcnew(3) + rot(3)*xp + rot(6)*yp + rot(9)*zp
272 ELSEIF (ity == 5)
THEN
274 x0(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+11)
277 x1(k)=rtrans(lsubmodel(cur_submod)%IDTRANS(i),k+14)
282 s = one/
max(sqrt(tx*tx + ty*ty + tz*tz),em20)
289 s = sx*tx + sy*ty + sz*tz
293 ELSEIF (ity == 6)
THEN
295 x0(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+11)
297 sx = rtrans(lsubmodel(cur_submod)%IDTRANS(i),20)
298 sy = rtrans(lsubmodel(cur_submod)%IDTRANS(i),21)
299 sz = rtrans(lsubmodel(cur_submod)%IDTRANS(i),22)
306 sub_level = sub_level - 1
307 cur_submod = lsubmodel(cur_submod)%IFATHER
328#include "implicit_f.inc"
332#include "com04_c.inc"
339 . tens(6), rtrans(ntransf,*)
343 INTEGER I,L,K,CPTZERO,IDSUBMODEL,SUB_LEVEL,CUR_SUBMOD
345 . rot(9),p(3),x0(3),l11,l22,l33,l12,l23,l13,s11,s12,
346 . s13,s21,s22,s23,s31,s32,s33,r11,r12,
347 . r13,r21,r22,r23,r31,r32,r33
353 IF(lsubmodel(k)%NOSUBMOD == sub_id)
THEN
359 cur_submod = idsubmodel
360 sub_level = lsubmodel(idsubmodel)%LEVEL
361 DO WHILE (sub_level /= 0)
362 DO i=1,lsubmodel(cur_submod)%NBTRANS
363 IF (lsubmodel(cur_submod)%IDTRANS(i) /= 0)
THEN
366 rot(l) = rtrans(lsubmodel(cur_submod)%IDTRANS(i),l+2)
367 IF (rot(l) == zero ) cptzero = cptzero + 1
369 IF(cptzero == 9) cycle
385 s11 =l11*r11+l12*r12+l13*r13
386 s12 =l11*r21+l12*r22+l13*r23
387 s13 =l11*r31+l12*r32+l13*r33
388 s21 =l12*r11+l22*r12+l23*r13
389 s22 =l12*r21+l22*r22+l23*r23
390 s23 =l12*r31+l22*r32+l23*r33
391 s31 =l13*r11+l23*r12+l33*r13
392 s32 =l13*r21+l23*r22+l33*r23
393 s33 =l13*r31+l23*r32+l33*r33
394 tens(1)=r11*s11+r12*s21+r13*s31
395 tens(2)=r21*s12+r22*s22+r23*s32
396 tens(3)=r31*s13+r32*s23+r33*s33
397 tens(4)=r11*s12+r12*s22+r13*s32
398 tens(5)=r21*s13+r22*s23+r23*s33
399 tens(6)=r11*s13+r12*s23+r13*s33
402 sub_level = sub_level - 1
403 cur_submod = lsubmodel(cur_submod)%IFATHER