35 . JFT,JLT,MAT,PID,NGL,X,V,R,IXTG,OFFG,OFF,
36 . R11,R12,R13,R21,R22,R23,R31,R32,R33,
37 . XL2,YL2,XL3,YL3,SMSTR,
38 . AREA,AREA2,CDET,VLX,VLY,VLZ,RLX,RLY,
39 . ISMSTR,IREP,NLAY,DIR_A,DIR_B,
40 . F11,F12,F13,F21,F22,F23,F32,F33,
41 . M11,M12,M13,M21,M22,M23,NEL)
46 use element_mod ,
only : nixtg
50#include "implicit_f.inc"
63 INTEGER JFT, JLT,ISMSTR,IREP,NLAY,NEL
64 INTEGER IXTG(NIXTG,*),MAT(*),PID(*),NGL(*)
66 . X(3,*),V(3,*),R(3,*), OFFG(*), OFF(*),
67 . R11(*),R12(*),R13(*),R21(*),R22(*),R23(*),
68 . R31(*),R32(*),R33(*),AREA(*),AREA2(*),CDET(*),
69 . VLX(MVSIZ,2),VLY(MVSIZ,2),VLZ(MVSIZ,2),RLX(MVSIZ,3),RLY(MVSIZ,3),
70 . xl2(*),xl3(*),yl2(*),yl3(*),
71 . f11(*), f12(*), f13(*),
72 . f21(*), f22(*), f23(*), f32(*), f33(*),
73 . m11(*), m12(*), m13(*),
74 . m21(*), m22(*), m23(*),
75 . dir_a(nel,*),dir_b(nel,*)
78 TYPE(elbuf_struct_) :: ELBUF_STR
82 INTEGER NC1, NC2, NC3,I,I1,II(4),IBID,MAT_1
84 . vx2(mvsiz), vx3(mvsiz),vy2(mvsiz), vy3(mvsiz),
85 . vz2(mvsiz), vz3(mvsiz),
86 . rx1(mvsiz), rx2(mvsiz), rx3(mvsiz), ry1(mvsiz),
87 . ry2(mvsiz), ry3(mvsiz), rz1(mvsiz), rz2(mvsiz),rz3(mvsiz),
88 . x1(mvsiz), x2(mvsiz), x3(mvsiz), y1(mvsiz),
89 . y2(mvsiz), y3(mvsiz), z1(mvsiz), z2(mvsiz),
90 . z3(mvsiz), rx(mvsiz), ry(mvsiz), rz(mvsiz),
91 . sx(mvsiz), sy(mvsiz), sz(mvsiz),
92 . vx1, vy1,vz1,off_l,dt05,exz,eyz,ddrx,ddry,v21x,v31x,
173 . r11,r12,r13,r21,r22,r23,r31,r32,r33,area2,offg)
176 xl2(i)=r11(i)*rx(i)+r21(i)*ry(i)+r31(i)*rz(i)
177 yl2(i)=r12(i)*rx(i)+r22(i)*ry(i)+r32(i)*rz(i)
178 xl3(i)=r11(i)*sx(i)+r21(i)*sy(i)+r31(i)*sz(i)
179 yl3(i)=r12(i)*sx(i)+r22(i)*sy(i)+r32(i)*sz(i)
180 area(i)=half*area2(i)
181 cdet(i)=third*area(i)
184 vlx(i,1)=r11(i)*vx2(i)+r21(i)*vy2(i)+r31(i)*vz2(i)
185 vlx(i,2)=r11(i)*vx3(i)+r21(i)*vy3(i)+r31(i)*vz3(i)
186 vly(i,1)=r12(i)*vx2(i)+r22(i)*vy2(i)+r32(i)*vz2(i)
187 vly(i,2)=r12(i)*vx3(i)+r22(i)*vy3(i)+r32(i)*vz3(i)
188 vlz(i,1)=r13(i)*vx2(i)+r23(i)*vy2(i)+r33(i)*vz2(i)
189 vlz(i,2)=r13(i)*vx3(i)+r23(i)*vy3(i)+r33(i)*vz3(i)
190 rlx(i,1)=r11(i)*rx1(i)+r21(i)*ry1(i)+r31(i)*rz1(i)
191 rlx(i,2)=r11(i)*rx2(i)+r21(i)*ry2(i)+r31(i)*rz2(i)
192 rlx(i,3)=r11(i)*rx3(i)+r21(i)*ry3(i)+r31(i)*rz3(i)
193 rly(i,1)=r12(i)*rx1(i)+r22(i)*ry1(i)+r32(i)*rz1(i)
194 rly(i,2)=r12(i)*rx2(i)+r22(i)*ry2(i)+r32(i)*rz2(i)
195 rly(i,3)=r12(i)*rx3(i)+r22(i)*ry3(i)+r32(i)*rz3(i)
200 IF (ismstr == 1 .OR. ismstr == 2)
THEN
202 IF (abs(offg(i)) == two)
THEN
203 xl2(i)=smstr(ii(1)+i)
204 yl2(i)=smstr(ii(2)+i)
205 xl3(i)=smstr(ii(3)+i)
206 yl3(i)=smstr(ii(4)+i)
207 area2(i)=xl2(i)*yl3(i)-xl3(i)*yl2(i)
208 area(i)=half*area2(i)
210 smstr(ii(1)+i)=xl2(i)
211 smstr(ii(2)+i)=yl2(i)
212 smstr(ii(3)+i)=xl3(i)
213 smstr(ii(4)+i)=yl3(i)
219 IF (offg(i) == one) offg(i)=two
225 CALL cortdir3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
226 . nlay ,irep ,rx ,ry ,rz ,
227 . sx ,sy ,sz ,r11 ,r21 ,
228 . r31 ,r12 ,r22 ,r32 ,nel )
234 exz = yl3(i)*vlz(i,1)-yl2(i)*vlz(i,2)
235 eyz = -xl3(i)*vlz(i,1)+xl2(i)*vlz(i,2)
236 ddry=dt05*exz/area2(i)
237 ddrx=dt05*eyz/area2(i)
240 ddrz1=dt05*vly(i,1)/xl2(i)
241 ddrz2=dt05*v31x/yl3(i)
242 vlx(i,1) = vlx(i,1)-ddry*vlz(i,1)-ddrz1*vly(i,1)
243 vlx(i,2) = vlx(i,2)-ddry*vlz(i,2)-ddrz1*vly(i,2)
244 vly(i,1) = vly(i,1)-ddrx*vlz(i,1)-ddrz2*v21x
245 vly(i,2) = vly(i,2)-ddrx*vlz(i,2)-ddrz2*v31x
252 off(i) =
min(one,abs(offg(i)))
253 off_l =
min(off_l,offg(i))
257 IF(offg(i) < zero)
THEN
304 . RX, RY, RZ, SX, SY, SZ,
305 . E1X, E2X, E3X, E1Y, E2Y, E3Y, E1Z, E2Z, E3Z,
310#include "implicit_f.inc"
314#include "mvsiz_p.inc"
315#include "scr17_c.inc"
321 . RX(*) , RY(*) , RZ(*),
322 . SX(*) , SY(*) , SZ(*),
323 . (*), E1Y(*), E1Z(*),
324 . E2X(*), E2Y(*), E2Z(*),
325 . E3X(*), E3Y(*), E3Z(*), DET(*), OFF(*)
330 my_real c1,c2,cc,c1c1,c2c2,c1_1(mvsiz),c2_1(mvsiz)
337 e3x(i) = ry(i) * sz(i) - rz(i) * sy(i)
338 e3y(i) = rz(i) * sx(i) - rx(i) * sz(i)
339 e3z(i) = rx(i) * sy(i) - ry(i) * sx(i)
340 det(i) = sqrt(e3x(i)*e3x(i) + e3y(i)*e3y(i) + e3z(i)*e3z(i))
341 IF (det(i) < em20 .AND. off(i) /= zero)
THEN
346 IF(abs(off(i))/=zero) off_loc = one
347 det(i)=
max(em20,det(i))
361 ELSEIF (irep==1)
THEN
363 c2 = sqrt(sx(i)*sx(i) + sy(i)*sy(i) + sz(i)*sz(i))
364 e1x(i) = rx(i)*c2+(sy(i)*e3z(i)-sz(i)*e3y(i))
365 e1y(i) = ry(i)*c2+(sz(i)*e3x(i)-sx(i)*e3z(i))
366 e1z(i) = rz(i)*c2+(sx(i)*e3y(i)-sy(i)*e3x(i))
370 c1c1 = rx(i)*rx(i) + ry(i)*ry(i) + rz(i)*rz(i)
371 c2c2 = sx(i)*sx(i) + sy(i)*sy(i) + sz(i)*sz(i)
372 IF(c1c1 /= zero)
THEN
373 c2_1(i) = sqrt(c2c2/
max(em20,c1c1))
375 ELSEIF(c2c2 /= zero)
THEN
377 c1_1(i) = sqrt(c1c1/
max(em20,c2c2))
381 e1x(i) = rx(i)*c2_1(i)+(sy(i)*e3z(i)-sz(i)*e3y(i))*c1_1(i)
382 e1y(i) = ry(i)*c2_1(i)+(sz(i)*e3x(i)-sx(i)*e3z(i))*c1_1(i)
383 e1z(i) = rz(i)*c2_1(i)+(sx(i)*e3y(i)-sy(i)*e3x(i))*c1_1(i)
388 c1 = sqrt(e1x(i)*e1x(i) + e1y(i)*e1y(i) + e1z(i)*e1z(i))
389 IF(c1 /= zero) c1 = one /
max(em20,c1)
393 e2x(i) = e3y(i) * e1z(i) - e3z(i) * e1y(i)
394 e2y(i) = e3z(i) * e1x(i) - e3x(i) * e1z(i)
395 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)