31 . GAPV,CAND_E ,CAND_N,TZINF,IRTL,ST,DMIN,IGNORE,
33 1 IX4,X1 ,X2 ,X3 ,X4 ,
34 1 Y1 ,Y2 ,Y3 ,Y4 ,Z1 ,
35 2 Z2 ,Z3 ,Z4 ,XI ,YI ,
36 3 ZI ,X0 ,Y0 ,Z0 ,NX1,
37 4 NY1,NZ1,NX2,NY2,NZ2,
38 5 NX3,NY3,NZ3,NX4,NY4,
39 6 NZ4,P1 ,P2 ,P3 ,P4 ,
40 7 LB1,LB2,LB3,LB4,LC1,
51#include "implicit_f.inc"
59 integer,
intent(in) :: first
60 integer,
intent(in) :: last
61 INTEGER CAND_E(*),CAND_N(*),IRTL(*),IGNORE
63 . GAPV(*),TZINF,ST(2,*),DMIN(*)
64 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX3,IX4
65 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,X4
66 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Y1,Y2,Y3,Y4
67 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Z1,Z2,Z3,Z4
68 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: XI,YI,ZI
69 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X0,Y0,Z0
70 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx1,ny1,nz1
71 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx2,ny2,nz2
72 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx3,ny3,nz3
73 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: nx4,ny4,nz4
74 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: p1,p2,p3,p4
75 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: lb1,lb2,lb3,lb4
76 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: lc1,lc2,lc3,lc4
77 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: s,t
82#include "vect07_c.inc"
92 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
93 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
94 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
98 IF (ix3(i) == ix4(i))
THEN
109 . xi ,yi ,zi ,x0 ,y0 ,
110 . z0 ,x1 ,y1 ,z1 ,x2 ,
111 . y2 ,z2 ,nx1,ny1,nz1,
112 . lb1 ,lc1 ,p1 ,gapv, tflag )
115 . xi ,yi ,zi ,x0 ,y0 ,
116 . z0 ,x2 ,y2 ,z2 ,x3 ,
117 . y3 ,z3 ,nx2,ny2,nz2,
118 . lb2 ,lc2 ,p2 ,gapv, tflag )
121 . xi ,yi ,zi ,x0 ,y0 ,
122 . z0 ,x3 ,y3 ,z3 ,x4 ,
123 . y4 ,z4 ,nx3,ny3,nz3,
124 . lb3 ,lc3 ,p3 ,gapv, tflag )
127 . xi ,yi ,zi ,x0 ,y0 ,
128 . z0 ,x4 ,y4 ,z4 ,x1 ,
129 . y1 ,z1 ,nx4,ny4,nz4,
130 . lb4 ,lc4 ,p4 ,gapv, tflag )
133 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
135 IF(p1(i)==pene(i))
THEN
136 s(i) = -lb1(i) + lc1(i)
137 t(i) = -lb1(i) - lc1(i)
138 ELSEIF(p2(i)==pene(i))
THEN
139 s(i) = lb2(i) + lc2(i)
140 t(i) = -lb2(i) + lc2(i)
141 ELSEIF(p3(i)==pene(i))
THEN
142 s(i) = lb3(i) - lc3(i)
143 t(i) = lb3(i) + lc3(i)
144 ELSEIF(p4(i)==pene(i))
THEN
145 s(i) = -lb4(i) - lc4(i)
146 t(i) = lb4(i) - lc4(i)
154 IF (tflag(i) == 1)
THEN
156 t(i)= one - two*lb1(i) - two*lc1(i)
157 IF (t(i) < one-em10)
THEN
158 s(i)= (lc1(i)-lb1(i))/(lc1(i)+lb1(i))
159 ELSEIF (lb1(i) < -em10)
THEN
161 ELSEIF (lc1(i) < -em10)
THEN
169 IF(ignore==2 .OR. ignore == 3)
THEN
171 IF(pene(i)>zero .AND.
172 . (s(i) < onep5 .AND.
177 IF(gapv(i) - pene(i)<dmin(ii))
THEN
178 dmin(ii)=gapv(i)-pene(i)
182 ELSEIF(gapv(i) - pene(i)==dmin(ii))
THEN
183 IF(
max(abs(s(i)) ,abs(t(i) ))<
184 .
max(abs(st(1,ii)),abs(st(2,ii))) )
THEN
192 ELSEIF(ignore==1)
THEN
195 IF(pene(i)>zero .AND.
196 . (s(i) < onep5 .AND.
199 . t(i) >-onep5))
THEN
202 IF(tzinf - pene(i)<dmin(ii))
THEN
203 dmin(ii)=tzinf - pene(i)
207 ELSEIF(tzinf - pene(i)==dmin(ii))
THEN
208 IF(
max(abs(s(i)) ,abs(t(i) ))<
209 .
max(abs(st(1,ii)),abs(st(2,ii))) )
THEN
220 IF(pene(i)>zero)
THEN
222 IF(tzinf - pene(i)<dmin(ii))
THEN
223 dmin(ii)=tzinf - pene(i)
227 ELSEIF(tzinf - pene(i)==dmin(ii))
THEN
228 IF(
max(abs(s(i)) ,abs(t(i) ))<
229 .
max(abs(st(1,ii)),abs(st(2,ii))) )
THEN
253 . LB,LC,P,GAPV,TFLAG)
258#include
"implicit_f.inc"
263 integer,
intent(in) :: first
264 integer,
intent(in) :: last
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
324 sz = xpc*ypa - ypc*xpa
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 i2dst3(first, last, gapv, cand_e, cand_n, tzinf, irtl, st, dmin, ignore, 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 i2bar3(first, last, xi, yi, zi, xa, ya, za, xb, yb, zb, xc, yc, zc, nx, ny, nz, lb, lc, p, gapv, tflag)
subroutine i7lin3(xi, yi, zi, xa, ya, za, xb, yb, zb, nx, ny, nz, p, alp)