32 SUBROUTINE i2dst3_27(GAPV,CAND_E ,CAND_N,TZINF,IRTL,ST,DMIN,IGNORE,
33 . THK ,KNOD2ELS,KNOD2ELC,KNOD2ELTG,NOD2ELS,
34 . NOD2ELC,NOD2ELTG,X,IRECT,
35 . NINT,IXC ,IXTG ,THK_PART,IPARTC,GEO ,
36 . NOINT,IXS,IXS10 ,PM,IX3,
37 1 IX4,X1 ,X2 ,X3 ,X4 ,
38 1 Y1 ,Y2 ,Y3 ,Y4 ,Z1 ,
39 2 Z2 ,Z3 ,Z4 ,XI ,YI ,
40 3 ZI ,X0 ,Y0 ,Z0 ,NX1,
41 4 NY1,NZ1,NX2,NY2,NZ2,
42 5 NX3,NY3,NZ3,NX4,NY4,
43 6 NZ4,P1 ,P2 ,P3 ,P4 ,
44 7 LB1,LB2,LB3,LB4,LC1,
55#include "implicit_f.inc"
63 INTEGER CAND_E(*),CAND_N(*),IRTL(*),IGNORE,
64 . KNOD2ELS(*), KNOD2ELC(*),KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*),
65 . NOD2ELTG(*),IRECT(4,*),NINT,
66 . IXC(NIXC,*),IXTG(NIXTG,*),IPARTC(*),NOINT,IXS(NIXS,*),
69 . GAPV(*),TZINF,(2,*),DMIN(*),THK(*),X(3,*),(*),
71 INTEGER,
DIMENSION(MVSIZ),
INTENT(IN) :: IX3,IX4
72 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,,X4
73 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Y1,Y2,Y3,Y4
74 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: Z1,Z2,Z3,Z4
75 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: XI,YI,ZI
76 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0
77 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx1,ny1,nz1
78 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
79 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
80 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
81 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
82 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3,lb4
83 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4
84 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: s,t
89#include "vect07_c.inc"
104 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
105 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
106 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
110 IF (ix3(i) == ix4(i))
THEN
120 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
121 . z0 ,x1 ,y1 ,z1 ,x2 ,
122 . y2 ,z2 ,nx1,ny1,nz1,
123 . lb1 ,lc1 ,p1 ,gapv, tflag )
125 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
126 . z0 ,x2 ,y2 ,z2 ,x3 ,
127 . y3 ,z3 ,nx2,ny2,nz2,
128 . lb2 ,lc2 ,p2 ,gapv, tflag )
130 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
131 . z0 ,x3 ,y3 ,z3 ,x4 ,
132 . y4 ,z4 ,nx3,ny3,nz3,
133 . lb3 ,lc3 ,p3 ,gapv, tflag )
135 CALL i2bar3(xi ,yi ,zi ,x0 ,y0 ,
136 . z0 ,x4 ,y4 ,z4 ,x1 ,
137 . y1 ,z1 ,nx4,ny4,nz4,
138 . lb4 ,lc4 ,p4 ,gapv, tflag )
141 IF (tflag(i) == 1)
THEN
146 pene(i) =
max(p1(i),p2(i),p3(i),p4(i))
147 IF(p1(i)==pene(i))
THEN
148 s(i) = -lb1(i) + lc1(i)
149 t(i) = -lb1(i) - lc1(i)
150 ELSEIF(p2(i)==pene(i))
THEN
151 s(i) = lb2(i) + lc2(i)
152 t(i) = -lb2(i) + lc2(i)
153 ELSEIF(p3(i)==pene(i))
THEN
154 s(i) = lb3(i) - lc3(i)
155 t(i) = lb3(i) + lc3(i)
156 ELSEIF(p4(i)==pene(i))
THEN
157 s(i) = -lb4(i) - lc4(i)
158 t(i) = lb4(i) - lc4(i)
166 IF(ignore==2 .OR. ignore == 3)
THEN
168 IF(pene(i)>zero .AND.
169 . (s(i) < onep5 .AND.
174 IF(gapv(i) - pene(i)<dmin(ii))
THEN
175 dmin(ii)=gapv(i)-pene(i)
179 ELSEIF(gapv(i) - pene(i)==dmin(ii))
THEN
180 CALL choose_main_segment(irect,irtl(ii),cand_e(i),s(i),t(i),st(1,ii),st(2,ii),tflag(i),ii)
184 ELSEIF(ignore==1)
THEN
187 IF(pene(i)>zero .AND.
188 . (s(i) < onep5 .AND.
191 . t(i) >-onep5))
THEN
194 IF(tzinf - pene(i)<dmin(ii))
THEN
195 dmin(ii)=tzinf - pene(i)
199 ELSEIF(tzinf - pene(i)==dmin(ii))
THEN
200 CALL choose_main_segment(irect,irtl(ii),cand_e(i),s(i),t(i),st(1,ii),st(2,ii),tflag(i),ii)
207 IF(pene(i)>zero)
THEN
210 IF(tzinf - pene(i)<dmin(ii))
THEN
211 dmin(ii)=tzinf - pene(i)
215 ELSEIF(tzinf - pene(i)==dmin(ii))
THEN
216 CALL choose_main_segment(irect,irtl(ii),cand_e(i),s(i),t(i),st(1,ii),st(2,ii),tflag(i),ii)
235#include "implicit_f.inc"
239 INTEGER IRECT(4,*),M_OLD,M_NEW,TFLAG,II
245 INTEGER TFLAG_OLD,INTERIOR_OLD,INTERIOR,SWITCH
250 IF (IRECT(3,M_OLD)==irect(4,m_old))
THEN
252 IF ((s>=zero).AND.(t>=zero).AND.(one-s-t>=zero))
THEN
259 IF ((abs(s)<=one).AND.(abs
THEN
267 IF ((s_new>=zero).AND.(t_new>=zero).AND.(one-s_new-t_new>=zero))
THEN
273 IF ((abs(s_new)<=one).AND.(abs(t_new)<=one))
THEN
282 IF ((tflag_old==0).AND.(tflag==0))
THEN
284 IF (
max(abs(s_new),abs(t_new))<
max(abs(s),abs(t))) switch = 1
287 IF (interior_old < interior)
THEN
289 ELSEIF (interior_old == interior)
THEN
291 IF (((s_new-third*tflag)**2+(t_new-third*tflag)**2)<
292 . ((s-third*tflag_old)**2+(t-third*tflag_old)**2)) switch = 1
296 IF (switch == 1)
THEN
subroutine i2bar3(xi, yi, zi, xa, ya, za, xb, yb, zb, xc, yc, zc, nx, ny, nz, lb, lc, p, gapv, tflag)
subroutine i2dst3_27(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)