34 . NGL,X,V,R,IXTG,OFFG,OFF,
35 . R11,R12,R13,R21,R22,R23,R31,R32,R33,
36 . N4X,N4Y,N4Z,N5X,N5Y,N5Z,N6X,N6Y,N6Z,
37 . XL2,YL2,XL3,YL3,XL4,YL4,ZL4,XL5,YL5,ZL5,
40 . VLX,VLY,VLZ,VNZ4,VNZ5,VNZ6,ISMSTR,NLAY,IREP,
41 . DIR_A ,DIR_B , IGEO ,
42 . IXTG1 ,NVS ,IVS ,AREA4 , AREA5 ,
51#include "implicit_f.inc"
65 INTEGER JFT, JLT,NLAY,ISMSTR,IREP,
66 INTEGER IXTG(NIXTG,*),MAT(*),PID(*),NGL(*),IXTG1(4,*),
67 . NVS,IVS(*),IGEO(NPROPGI,*)
70 . X(3,*),V(3,*),R(3,*), OFFG(*), OFF(*),
71 . R11(*),R12(*),R13(*),R21(*),R22(*),R23(*),
72 . R31(*),(*),R33(*),AREA(*),AREA2(*),
73 . N4X(*),N4Y(*),N4Z(*),N5X(*),N5Y(*),N5Z(*),N6X(*),N6Y(*),
74 . N6Z(*),AREA4(*),AREA5(*),AREA6(*),
75 . vlx(mvsiz,2),vly(mvsiz,2),vlz(mvsiz,6),vnz4(mvsiz,3),vnz5(mvsiz,3),vnz6(mvsiz,3),
76 . xl2(*),xl3(*),yl2(*),yl3(*),xl4(*),xl5(*),yl4(*),yl5(*),
77 . xl6(*),yl6(*),zl4(*),zl5(*),zl6(*),
78 . dir_a(nel,*),dir_b(nel,*)
79 TYPE(elbuf_struct_) :: ELBUF_STR
85 INTEGER NC1, NC2, NC3, NC4(MVSIZ), NC5(MVSIZ), NC6(MVSIZ),
86 . I,II(13), J,I1, I2, I3, N ,SVS,JVS(MVSIZ),EP, MAT_1
89 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz),
90 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz),
91 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz),
92 . vlx1(mvsiz), vlx2(mvsiz), vlx3(mvsiz),
93 . vly1(mvsiz), vly2(mvsiz), vly3(mvsiz),
94 . vx4(mvsiz), vy4(mvsiz), vz4(mvsiz),
95 . vx5(mvsiz), vy5(mvsiz), vz5(mvsiz),
96 . vx6(mvsiz), vy6(mvsiz), vz6(mvsiz),
97 . rx1(mvsiz), rx2(mvsiz), rx3(mvsiz), ry1(mvsiz),
98 . ry2(mvsiz), ry3(mvsiz), rz1(mvsiz), rz2(mvsiz),rz3(mvsiz),
99 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
100 . y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),y5(mvsiz),y6(mvsiz),
101 . z1(mvsiz),z2(mvsiz),z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),
102 . rx(mvsiz), ry(mvsiz), rz(mvsiz),
103 . sx(mvsiz), sy(mvsiz), sz(mvsiz),
104 . vx0, vy0,vz0,off_l,a,b,c ,dt05,exz,eyz,vz21,vz31 ,
105 . ddrx,ddry,v21x,v31x,ddrz1,ddrz2
153 IF (nc4(i) > 0 .AND. nc5(i) > 0 .AND. nc6(i) > 0)
THEN
180 . r11,r12,r13,r21,r22,r23,r31,r32,r33,area2,offg )
183 xl2(i)=r11(i)*rx(i)+r21(i)*ry(i)+r31(i)*rz(i)
184 yl2(i)=r12(i)*rx(i)+r22(i)*ry(i)+r32(i)*rz(i)
185 xl3(i)=r11(i)*sx(i)+r21(i)*sy(i)+r31(i)*sz(i)
186 yl3(i)=r12(i)*sx(i)+r22(i)*sy(i)+r32(i)*sz(i)
187 area(i)=half*area2(i)
192 IF (ismstr == 1 .OR. ismstr == 2)
THEN
194 IF(abs(offg(i)) == two)
THEN
195 xl2(i)=smstr(ii(1)+i)
196 yl2(i)=smstr(ii(2)+i)
197 xl3(i)=smstr(ii(3)+i)
198 yl3(i)=smstr(ii(4)+i)
199 area2(i)=xl2(i)*yl3(i)-xl3(i)*yl2(i)
200 area(i)=half*area2(i)
202 smstr(ii(1)+i)=xl2(i)
203 smstr(ii(2)+i)=yl2(i)
204 smstr(ii(3)+i)=xl3(i)
205 smstr(ii(4)+i)=yl3(i)
209 IF (ismstr == 1)
THEN
211 IF (offg(i) == one) offg(i)=two
230 x4(i)=x(1,nc4(i))-x1(i)
231 y4(i)=x(2,nc4(i))-y1(i)
232 z4(i)=x(3,nc4(i))-z1(i)
233 x5(i)=x(1,nc5(i))-x2(i)
234 y5(i)=x(2,nc5(i))-y2(i)
235 z5(i)=x(3,nc5(i))-z2(i)
236 x6(i)=x(1,nc6(i))-x3(i)
237 y6(i)=x(2,nc6(i))-y3(i)
238 z6(i)=x(3,nc6(i))-z3(i)
244 IF (nc4(i) <= 0)
THEN
255 x4(i)=x(1,nc4(i))-x1(i)
256 y4(i)=x(2,nc4(i))-y1(i)
257 z4(i)=x(3,nc4(i))-z1(i)
259 IF (nc5(i) <= 0)
THEN
270 x5(i)=x(1,nc5(i))-x2(i)
271 y5(i)=x(2,nc5(i))-y2(i)
272 z5(i)=x(3,nc5(i))-z2(i)
274 IF (nc6(i) <= 0)
THEN
285 x6(i)=x(1,nc6(i))-x3(i)
286 y6(i)=x(2,nc6(i))-y3(i)
287 z6(i)=x(3,nc6(i))-z3(i)
292 xl4(i)=r11(i)*x4(i)+r21(i)*y4(i)+r31(i)*z4(i)
293 yl4(i)=r12(i)*x4(i)+r22(i)*y4(i)+r32(i)*z4(i)
294 zl4(i)=r13(i)*x4(i)+r23(i)*y4(i)+r33(i)*z4(i)
295 xl5(i)=r11(i)*x5(i)+r21(i)*y5(i)+r31(i)*z5(i)
296 yl5(i)=r12(i)*x5(i)+r22(i)*y5(i)+r32(i)*z5(i)
297 zl5(i)=r13(i)*x5(i)+r23(i)*y5(i)+r33(i)*z5(i)
298 xl6(i)=r11(i)*x6(i)+r21(i)*y6(i)+r31(i)*z6(i)
299 yl6(i)=r12(i)*x6(i)+r22(i)*y6(i)+r32(i)*z6(i)
300 zl6(i)=r13(i)*x6(i)+r23(i)*y6(i)+r33(i)*z6(i)
305 IF (ismstr == 1 .OR. ismstr == 2)
THEN
307 IF (abs(offg(i)) == two)
THEN
308 xl4(i)=smstr(ii(5)+i)
309 yl4(i)=smstr(ii(6)+i)
310 zl4(i)=smstr(ii(7)+i)
311 xl5(i)=smstr(ii(8)+i)
312 yl5(i)=smstr(ii(9)+i)
313 zl5(i)=smstr(ii(10)+i)
314 xl6(i)=smstr(ii(11)+i)
315 yl6(i)=smstr(ii(12)+i)
316 zl6(i)=smstr(ii(13)+i)
318 smstr(ii(5)+i) =xl4(i)
319 smstr(ii(6)+i) =yl4(i)
320 smstr(ii(7)+i) =zl4(i)
321 smstr(ii(8)+i) =xl5(i)
322 smstr(ii(9)+i) =yl5(i)
323 smstr(ii(10)+i)=zl5(i)
324 smstr(ii(11)+i)=xl6(i)
325 smstr(ii(12)+i)=yl6(i)
326 smstr(ii(13)+i)=zl6(i)
334 vx0=r11(i)*vx1(i)+r21(i)*vy1(i)+r31(i)*vz1(i)
335 vy0=r12(i)*vx1(i)+r22(i)*vy1(i)+r32(i)*vz1(i)
336 vz0=r13(i)*vx1(i)+r23(i)*vy1(i)+r33(i)*vz1(i)
340 vx0=r11(i)*vx2(i)+r21(i)*vy2(i)+r31(i)*vz2(i)
341 vy0=r12(i)*vx2(i)+r22(i)*vy2(i)+r32(i)*vz2(i)
342 vz0=r13(i)*vx2(i)+r23(i)*vy2(i)+r33(i)*vz2(i)
346 vx0=r11(i)*vx3(i)+r21(i)*vy3(i)+r31(i)*vz3(i)
347 vy0=r12(i)*vx3(i)+r22(i)*vy3(i)+r32(i)*vz3(i)
348 vz0=r13(i)*vx3(i)+r23(i)*vy3(i)+r33(i)*vz3(i)
352 vx0=r11(i)*vx4(i)+r21(i)*vy4(i)+r31(i)*vz4(i)
353 vy0=r12(i)*vx4(i)+r22(i)*vy4(i)+r32(i)*vz4(i)
354 vz0=r13(i)*vx4(i)+r23(i)*vy4(i)+r33(i)*vz4(i)
358 vx0=r11(i)*vx5(i)+r21(i)*vy5(i)+r31(i)*vz5(i)
359 vy0=r12(i)*vx5(i)+r22(i)*vy5(i)+r32(i)*vz5(i)
360 vz0=r13(i)*vx5(i)+r23(i)*vy5(i)+r33(i)*vz5(i)
364 vx0=r11(i)*vx6(i)+r21(i)*vy6(i)+r31(i)*vz6(i)
365 vy0=r12(i)*vx6(i)+r22(i)*vy6(i)+r32(i)*vz6(i)
366 vz0=r13(i)*vx6(i)+r23(i)*vy6(i)+r33(i)*vz6(i)
376 c = xl4(i)*yl2(i)-xl2(i)*yl4(i)
377 area4(i)=one/sqrt(a*a+b*b+c*c)
382 a =-(yl3(i)-yl2(i))*zl5(i)
383 b = (xl3(i)-xl2(i))*zl5(i)
384 c = xl5(i)*(yl3(i)-yl2(i))-(xl3(i)-xl2(i))*yl5(i)
385 area5(i)=one/sqrt(a*a+b*b+c*c)
392 c = -xl6(i)*yl3(i)+xl3(i)*yl6(i)
393 area6(i)=one/sqrt(a*a+b*b
400 IF (nc4(i) <= 0) n4z(i)=one
401 IF (nc5(i) <= 0) n5z(i)=one
402 IF (nc6(i) <= 0) n6z(i)=one
405 vlz(i,4)=n4x(i)*vx4(i)+n4y(i)*vy4(i)+n4z(i)*vz4(i)
406 vlz(i,5)=n5x(i)*vx5(i)+n5y(i)*vy5(i)+n5z(i)*vz5(i)
409 vnz4(i,1)=n4x(i)*vx1(i)+n4y(i)*vy1(i)+n4z(i)*vz1(i)
410 vnz4(i,2)=n4x(i)*vx2(i)+n4y(i)*vy2(i)+n4z(i)*vz2(i)
411 vnz4(i,3)=n4x(i)*vx3(i)+n4y(i)*vy3(i)+n4z(i)*vz3(i)
412 vnz5(i,1)=n5x(i)*vx1(i)+n5y(i)*vy1(i)+n5z(i)*vz1(i)
413 vnz5(i,2)=n5x(i)*vx2(i)+n5y(i)*vy2(i)+n5z(i)*vz2(i)
414 vnz5(i,3)=n5x(i)*vx3(i)+n5y(i)*vy3(i)+n5z(i)*vz3(i)
415 vnz6(i,1)=n6x(i)*vx1(i)+n6y(i)*vy1(i)+n6z(i)*vz1(i)
416 vnz6(i,2)=n6x(i)*vx2(i)+n6y(i)*vy2(i)+n6z(i)*vz2(i)
417 vnz6(i,3)=n6x(i)*vx3(i)+n6y(i)*vy3(i)+n6z(i)*vz3(i)
420 vlx(i,1)=vx2(i)-vx1(i)
421 vlx(i,2)=vx3(i)-vx1(i)
423 vly(i,2)=vy3(i)-vy1(i)
432 CALL cortdir3(elbuf_str,dir_a,dir_b ,jft ,jlt ,
434 . sx ,sy ,sz ,r11 ,r21 ,
435 . r31 ,r12 ,r22 ,r32 ,nel )
444 exz = yl3(i)*vz21-yl2(i)*vz31
445 eyz = -xl3(i)*vz21+xl2(i)*vz31
446 ddry=dt05*exz/area2(i)
447 ddrx=dt05*eyz/area2(i)
450 ddrz1=dt05*vly(i,1)/xl2(i)
451 ddrz2=dt05*v31x/yl3(i)
452 vlx(i,1) = vlx(i,1)-ddry*vz21-ddrz1*vly(i,1)
453 vlx(i,2) = vlx(i,2)-ddry*vz31-ddrz1*vly(i,2)
454 vly(i,1) = vly(i,1)-ddrx*vz21-ddrz2*v21x
455 vly(i,2) = vly(i,2)-ddrx*vz31-ddrz2*v31x
460 off(i) =
min(one,abs(offg(i)))
461 off_l =
min(off_l,offg(i))
465 IF(offg(i) < zero)
THEN
subroutine cdk6coor3(elbuf_str, jft, jlt, mat, pid, ngl, x, v, r, ixtg, offg, off, r11, r12, r13, r21, r22, r23, r31, r32, r33, n4x, n4y, n4z, n5x, n5y, n5z, n6x, n6y, n6z, xl2, yl2, xl3, yl3, xl4, yl4, zl4, xl5, yl5, zl5, xl6, yl6, zl6, smstr, area, area2, vlx, vly, vlz, vnz4, vnz5, vnz6, ismstr, nlay, irep, dir_a, dir_b, igeo, ixtg1, nvs, ivs, area4, area5, area6, nel)