31 SUBROUTINE i2dst3(GAPV,CAND_E ,CAND_N,TZINF,IRTL,ST,DMIN,IGNORE,
32 . THK ,KNOD2ELS,KNOD2ELC,KNOD2ELTG,NOD2ELS,
33 . NOD2ELC,NOD2ELTG,X,IRECT,
34 . NINT,IXC ,IXTG ,THK_PART,IPARTC,GEO ,
35 . NOINT,IXS,IXS10 ,PM,IX3,
36 1 IX4,X1 ,X2 ,X3 ,X4 ,
37 1 Y1 ,Y2 ,Y3 ,Y4 ,Z1 ,
38 2 Z2 ,Z3 ,Z4 ,XI ,YI ,
39 3 ZI ,X0 ,Y0 ,Z0 ,NX1,
40 4 NY1,NZ1,NX2,NY2,NZ2,
41 5 NX3,NY3,NZ3,NX4,NY4,
42 6 NZ4,P1 ,P2 ,P3 ,P4 ,
43 7 LB1,LB2,LB3,LB4,LC1,
54#include "implicit_f.inc"
62 INTEGER CAND_E(*),CAND_N(*),IRTL(*),IGNORE,
63 . KNOD2ELS(*), KNOD2ELC(*),KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
64 . NOD2ELTG(*),IRECT(4,*),NINT,
65 . IXC(NIXC,*),IXTG(,*),IPARTC(*),NOINT,IXS(NIXS,*),
68 . GAPV(*),TZINF,ST(2,*),DMIN(*),THK(*),X(3,*),THK_PART(*),
70 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX3,IX4
71 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,X4
72 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Y1,Y2,Y3,Y4
73 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Z1,Z2,,Z4
74 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: XI,YI,ZI
75 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0
76 my_real,
DIMENSION(MVSIZ)INTENT(IN)
77 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx2,ny2,nz2
78 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx3,ny3,nz3
79 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx4,ny4,nz4
80 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: p1,p2,p3,p4
81 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: lb1,lb2,lb3,lb4
82 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: lc1,lc2,lc3,lc4
83 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: s,t
88#include "vect07_c.inc"
98 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
99 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
100 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
104 IF (ix3(i) == ix4(i))
THEN
114 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
115 . z0 ,x1 ,y1 ,z1 ,x2 ,
116 . y2 ,z2 ,nx1,ny1,nz1,
117 . lb1 ,lc1 ,p1 ,gapv, tflag )
119 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
120 . z0 ,x2 ,y2 ,z2 ,x3 ,
121 . y3 ,z3 ,nx2,ny2,nz2,
122 . lb2 ,lc2 ,p2 ,gapv, tflag )
124 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
125 . z0 ,x3 ,y3 ,z3 ,x4 ,
126 . y4 ,z4 ,nx3,ny3,nz3,
127 . lb3 ,lc3 ,p3 ,gapv, tflag )
129 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
130 . z0 ,x4 ,y4 ,z4 ,x1 ,
131 . y1 ,z1 ,nx4,ny4,nz4,
132 . lb4 ,lc4 ,p4 ,gapv, tflag )
135 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
137 IF(p1(i)==pene(i))
THEN
138 s(i) = -lb1(i) + lc1(i)
139 t(i) = -lb1(i) - lc1(i)
140 ELSEIF(p2(i)==pene(i))
THEN
141 s(i) = lb2(i) + lc2(i)
142 t(i) = -lb2(i) + lc2(i)
143 ELSEIF(p3(i)==pene(i))
THEN
144 s(i) = lb3(i) - lc3(i)
145 t(i) = lb3(i) + lc3(i)
146 ELSEIF(p4(i)==pene(i))
THEN
147 s(i) = -lb4(i) - lc4(i)
148 t(i) = lb4(i) - lc4(i)
156 IF (tflag(i) == 1)
THEN
158 t(i)= one - two*lb1(i) - two*lc1(i)
159 IF (t(i) < one-em10)
THEN
160 s(i)= (lc1(i)-lb1(i))/(lc1(i)+lb1(i))
161 ELSEIF (lb1(i) < -em10)
THEN
163 ELSEIF (lc1(i) < -em10)
THEN
171 IF(ignore==2 .OR. ignore == 3)
THEN
173 IF(pene(i)>zero .AND.
174 . (s(i) < onep5 .AND.
179 IF(gapv(i) - pene(i)<dmin(ii))
THEN
180 dmin(ii)=gapv(i)-pene(i)
184 ELSEIF(gapv(i) - pene(i)==dmin(ii))
THEN
185 IF(
max(abs(s(i)) ,abs(t(i) ))<
186 .
max(abs(st(1,ii)),abs(st(2,ii))) )
THEN
194 ELSEIF(ignore==1)
THEN
197 IF(pene(i)>zero .AND.
198 . (s(i) < onep5 .AND.
201 . t(i) >-onep5))
THEN
204 IF(tzinf - pene(i)<dmin(ii
THEN
205 dmin(ii)=tzinf - pene(i)
209 ELSEIF(tzinf - pene(i)==dmin(ii))
THEN
210 IF(
max(abs(s(i)) ,abs(t(i) ))<
211 .
max(abs(st(1,ii)),abs(st(2,ii))) )
THEN
222 IF(pene(i)>zero)
THEN
225 IF(tzinf - pene(i)<dmin(ii))
THEN
226 dmin(ii)=tzinf - pene(i)
230 ELSEIF(tzinf - pene(i)==dmin(ii))
THEN
231 IF(
max(abs(s(i)) ,abs(t(i) ))<
232 .
max(abs(st(1,ii)),abs(st(2,ii))) )
THEN
255 . LB,LC,P,GAPV, TFLAG)
260#include "implicit_f.inc"
267 . XI(*),YI(*),ZI(*),XA(*),YA(*),ZA(*),
268 . xb(*),yb(*),zb(*),xc(*),yc(*),zc(*),
269 . nx(*),ny(*),nz(*),lb(*),lc(*),p(*),gapv(*)
273#include "vect07_c.inc"
280 . xpa,ypa,zpa,xpb,ypb,zpb,xpc,ypc,zpc,
281 . xab,yab,zab,xac,yac,zac,alp,
282 . s2,sx,sy,sz,xp,yp,zp
293 nx(i) = yab*zac - zab*yac
294 ny(i) = zab*xac - xab*zac
295 nz(i) = xab*yac - yab*xac
297 s2 =
max(em20,sqrt(nx(i)**2 + ny(i)**2 + nz(i)**2))
302 p(i) = nx(i) * (xi(i) - xa(i))
303 . + ny(i) * (yi(i) - ya(i))
304 . + nz(i) * (zi(i) - za(i))
306 xp = xi(i) - nx(i) * p(i)
307 yp = yi(i) - ny(i) * p(i)
308 zp = zi(i) - nz(i) * p(i)
322 sx = ypc*zpa - zpc*ypa
323 sy = zpc*xpa - xpc*zpa
326 lb(i) = (nx(i)*sx + ny(i)*sy + nz(i)*sz) / s2
328 sx = ypa*zpb - zpa*ypb
329 sy = zpa*xpb - xpa*zpb
330 sz = xpa*ypb - ypa*xpb
332 lc(i) = (nx(i)*sx + ny(i)*sy + nz(i)*sz) / s2
336 IF(one-lb(i)-lc(i)<zero)
THEN
337 CALL i7lin3(xi(i),yi(i),zi(i),xb(i),yb(i),
338 . zb(i),xc(i),yc(i),zc(i),nx(i),
339 . ny(i),nz(i),p(i),alp)
340 ELSEIF(lb(i)<zero)
THEN
341 CALL i7lin3(xi(i),yi(i),zi(i),xc(i),yc(i),
342 . zc(i),xa(i),ya(i),za(i),nx(i),
343 . ny(i),nz(i),p(i),alp)
344 IF (tflag(i) == 0)
THEN
348 ELSEIF(lc(i)<zero)
THEN
349 CALL i7lin3(xi(i),yi(i),zi(i),xa(i),ya(i),
350 . za(i),xb(i),yb(i),zb(i),nx(i),
351 . ny(i),nz(i),p(i),alp)
352 IF (tflag(i) == 0)
THEN
356 ELSEIF(p(i)<zero)
THEN
366 p(i) =
max(zero, gapv(i) - p(i))
subroutine i2bar3(xi, yi, zi, xa, ya, za, xb, yb, zb, xc, yc, zc, nx, ny, nz, lb, lc, p, gapv, tflag)
subroutine i2dst3(gapv, cand_e, cand_n, tzinf, irtl, st, dmin, ignore, thk, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, x, irect, nint, ixc, ixtg, thk_part, ipartc, geo, noint, ixs, ixs10, pm, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, s, t)
subroutine i7lin3(xi, yi, zi, xa, ya, za, xb, yb, zb, nx, ny, nz, p, alp)