34 . JFT,JLT,MAT,PID,NGL,X,V,R,IXTG,OFFG,OFF,
35 . R11,R12,R13,R21,R22,R23,R31,R32,R33,
36 . XL2,YL2,XL3,YL3,SMSTR,
37 . AREA,AREA2,CDET,VLX,VLY,VLZ,RLX,RLY,
38 . ISMSTR,IREP,NLAY,DIR_A,DIR_B,
39 . F11,F12,F13,F21,F22,F23,F32,F33,
40 . M11,M12,M13,M21,M22,M23,NEL)
48#include "implicit_f.inc"
61 INTEGER JFT, JLT,ISMSTR,IREP,NLAY,NEL
62 INTEGER IXTG(NIXTG,*),MAT(*),PID(*),NGL(*)
64 . X(3,*),V(3,*),R(3,*), OFFG(*), OFF(*),
65 . R11(*),R12(*),R13(*),R21(*),R22(*),R23(*),
66 . (*),R32(*),R33(*),AREA(*),AREA2(*),CDET(*),
67 . VLX(MVSIZ,2),VLY(MVSIZ,2),VLZ(MVSIZ,2),RLX(MVSIZ,3),RLY(MVSIZ,3),
68 . xl2(*),xl3(*),yl2(*),yl3(*),
69 . f11(*), f12(*), f13(*),
70 . f21(*), f22(*), f23(*), f32(*), f33(*),
71 . m11(*), m12(*), m13(*),
72 . m21(*), m22(*), m23(*),
73 . dir_a(nel,*),dir_b(nel,*)
76 TYPE(elbuf_struct_) :: ELBUF_STR
80 INTEGER NC1, NC2, NC3,I, J,I1, I2, I3, N, NLYMAX,II(4),IBID,
82 . vx2(mvsiz), vx3(mvsiz),vy2(mvsiz), vy3(mvsiz),
83 . vz2(mvsiz), vz3(mvsiz),
85 . ry2(mvsiz), ry3(mvsiz), rz1
86 . x1(mvsiz), x2(mvsiz), x3(mvsiz), y1(mvsiz),
87 . y2(mvsiz), y3(mvsiz), z1(mvsiz), z2(mvsiz),
88 . z3(mvsiz), rx(mvsiz), ry(mvsiz), rz(mvsiz),
89 . sx(mvsiz), sy(mvsiz), sz(mvsiz),det(mvsiz),
90 . vx1, vy1,vz1,off_l,dt05,exz,eyz,ddrx,ddry,v21x,v31x,
171 . r11,r12,r13,r21,r22,r23,r31,r32,r33,area2,offg)
174 xl2(i)=r11(i)*rx(i)+r21(i)*ry(i)+r31(i)*rz(i)
175 yl2(i)=r12(i)*rx(i)+r22(i)*ry(i)+r32(i)*rz(i)
176 xl3(i)=r11(i)*sx(i)+r21(i)*sy(i)+r31(i)*sz(i)
177 yl3(i)=r12(i)*sx(i)+r22(i)*sy(i)+r32(i)*sz(i)
178 area(i)=half*area2(i)
179 cdet(i)=third*area(i)
182 vlx(i,1)=r11(i)*vx2(i)+r21(i)*vy2(i)+r31(i)*vz2(i)
183 vlx(i,2)=r11(i)*vx3(i)+r21(i)*vy3(i)+r31(i)*vz3(i)
184 vly(i,1)=r12(i)*vx2(i)+r22(i)*vy2(i)+r32(i)*vz2(i)
185 vly(i,2)=r12(i)*vx3(i)+r22(i)*vy3(i)+r32(i)*vz3(i)
186 vlz(i,1)=r13(i)*vx2(i)+r23(i)*vy2(i)+r33(i)*vz2(i)
187 vlz(i,2)=r13(i)*vx3(i)+r23(i)*vy3(i)+r33(i)*vz3(i)
188 rlx(i,1)=r11(i)*rx1(i)+r21(i)*ry1(i)+r31(i)*rz1(i)
189 rlx(i,2)=r11(i)*rx2(i)+r21(i)*ry2(i)+r31(i)*rz2(i)
190 rlx(i,3)=r11(i)*rx3(i)+r21(i)*ry3(i)+r31(i)*rz3(i)
191 rly(i,1)=r12(i)*rx1(i)+r22(i)*ry1(i)+r32(i)*rz1(i)
192 rly(i,2)=r12(i)*rx2(i)+r22(i)*ry2(i)+r32(i)*rz2(i)
193 rly(i,3)=r12(i)*rx3(i)+r22(i)*ry3(i)+r32(i)*rz3(i)
198 IF (ismstr == 1 .OR. ismstr == 2)
THEN
200 IF (abs(offg(i)) == two)
THEN
201 xl2(i)=smstr(ii(1)+i)
202 yl2(i)=smstr(ii(2)+i)
203 xl3(i)=smstr(ii(3)+i)
204 yl3(i)=smstr(ii(4)+i)
205 area2(i)=xl2(i)*yl3(i)-xl3(i)*yl2(i)
206 area(i)=half*area2(i)
208 smstr(ii(1)+i)=xl2(i)
209 smstr(ii(2)+i)=yl2(i)
210 smstr(ii(3)+i)=xl3(i)
211 smstr(ii(4)+i)=yl3(i)
217 IF (offg(i) == one) offg(i)=two
223 CALL cortdir3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
224 . nlay ,irep ,rx ,ry ,rz ,
225 . sx ,sy ,sz ,r11 ,r21 ,
226 . r31 ,r12 ,r22 ,r32 ,nel )
232 exz = yl3(i)*vlz(i,1)-yl2(i)*vlz(i,2)
233 eyz = -xl3(i)*vlz(i,1)+xl2(i)*vlz(i,2)
234 ddry=dt05*exz/area2(i)
235 ddrx=dt05*eyz/area2(i)
238 ddrz1=dt05*vly(i,1)/xl2(i)
239 ddrz2=dt05*v31x/yl3(i)
240 vlx(i,1) = vlx(i,1)-ddry*vlz(i,1)-ddrz1*vly(i,1)
241 vlx(i,2) = vlx(i,2)-ddry*vlz(i,2)-ddrz1*vly(i,2)
242 vly(i,1) = vly(i,1)-ddrx*vlz(i,1)-ddrz2*v21x
243 vly(i,2) = vly(i,2)-ddrx*vlz(i,2)-ddrz2*v31x
250 off(i) =
min(one,abs(offg(i)))
251 off_l =
min(off_l,offg(i))
255 IF(offg(i) < zero)
THEN
302 . RX, RY, RZ, SX, SY, SZ,
303 . E1X, E2X, E3X, E1Y, E2Y, E3Y, E1Z, E2Z, E3Z,
308#include "implicit_f.inc"
312#include "mvsiz_p.inc"
313#include "scr17_c.inc"
319 . RX(*) , RY(*) , RZ(*),
320 . SX(*) , SY(*) , SZ(*),
321 . E1X(*), E1Y(*), E1Z(*),
322 . E2X(*), E2Y(*), E2Z(*),
323 . E3X(*), E3Y(*), E3Z(*), DET(*), OFF(*)
328 my_real c1,c2,cc,c1c1,c2c2,c1_1(mvsiz),c2_1(mvsiz)
335 e3x(i) = ry(i) * sz(i) - rz(i) * sy(i)
336 e3y(i) = rz(i) * sx(i) - rx(i) * sz(i)
337 e3z(i) = rx(i) * sy(i) - ry(i) * sx(i)
338 det(i) = sqrt(e3x(i)*e3x(i) + e3y(i)*e3y(i) + e3z(i)*e3z(i))
339 IF (det(i) < em20 .AND. off(i) /= zero)
THEN
344 IF(abs(off(i))/=zero) off_loc = one
345 det(i)=
max(em20,det(i))
359 ELSEIF (irep==1)
THEN
361 c2 = sqrt(sx(i)*sx(i) + sy(i)*sy(i) + sz(i)*sz(i))
362 e1x(i) = rx(i)*c2+(sy(i)*e3z(i)-sz(i)*e3y(i))
363 e1y(i) = ry(i)*c2+(sz(i)*e3x(i)-sx(i)*e3z(i))
364 e1z(i) = rz(i)*c2+(sx(i)*e3y(i)-sy(i)*e3x(i))
368 c1c1 = rx(i)*rx(i) + ry(i)*ry(i) + rz(i)*rz(i)
369 c2c2 = sx(i)*sx(i) + sy(i)*sy(i) + sz(i)*sz(i)
370 IF(c1c1 /= zero)
THEN
371 c2_1(i) = sqrt(c2c2/
max(em20,c1c1))
373 ELSEIF(c2c2 /= zero)
THEN
375 c1_1(i) = sqrt(c1c1/
max(em20,c2c2))
379 e1x(i) = rx(i)*c2_1(i)+(sy(i)*e3z(i)-sz(i)*e3y(i))*c1_1(i)
380 e1y(i) = ry(i)*c2_1(i)+(sz(i)*e3x(i)-sx(i)*e3z(i))*c1_1(i)
381 e1z(i) = rz(i)*c2_1(i)+(sx(i)*e3y(i)-sy(i)*e3x(i))*c1_1(i)
386 c1 = sqrt(e1x(i)*e1x(i) + e1y(i)*e1y(i) + e1z(i)*e1z(i))
387 IF(c1 /= zero) c1 = one /
max(em20,c1)
391 e2x(i) = e3y(i) * e1z(i) - e3z(i) * e1y(i)
392 e2y(i) = e3z(i) * e1x(i) - e3x(i) * e1z(i)
393 e2z(i) = e3x(i) * e1y(i) - e3y(i) * e1x(i)
subroutine cdkcoor3(elbuf_str, jft, jlt, mat, pid, ngl, x, v, r, ixtg, offg, off, r11, r12, r13, r21, r22, r23, r31, r32, r33, xl2, yl2, xl3, yl3, smstr, area, area2, cdet, vlx, vly, vlz, rlx, rly, ismstr, irep, nlay, dir_a, dir_b, f11, f12, f13, f21, f22, f23, f32, f33, m11, m12, m13, m21, m22, m23, nel)