31 1 JLT ,LEDGE ,IRECT ,X ,
33 4 XXS1 ,XXS2 ,XYS1 ,XYS2 ,XZS1 ,
34 5 XZS2 ,XXM1 ,XXM2 ,XYM1 ,XYM2 ,
35 6 XZM1 ,XZM2 ,EX ,EY ,EZ ,
37 8 N1 ,N2 ,M1 ,M2 ,NEDGE ,
39 A IEDGE ,ADMSR ,LBOUND ,EDG_BISECTOR ,
40 B VTX_BISECTOR ,ITAB ,IGAP0 ,IGAP ,
49#include "implicit_f.inc"
61 INTEGER LEDGE(NLEDGE,*), IRECT(4,*), CAND_M(*), CAND_S(*), ADMSR(4,*),
62 . LBOUND(*), JLT, NEDGE, IEDGE, ITAB(*), IGAP0, IGAP,
63 . N1(MVSIZ), N2(MVSIZ),
64 . M1(MVSIZ), M2(MVSIZ)
68 . XXS1(MVSIZ), XXS2(MVSIZ), XYS1(MVSIZ), XYS2(MVSIZ),
69 . XZS1(MVSIZ), XZS2(), XXM1(MVSIZ), XXM2(MVSIZ),
70 . XYM1(MVSIZ), XYM2(MVSIZ), XZM1(MVSIZ), XZM2(MVSIZ),
71 . GAPE(*),GAPVE(MVSIZ),GAP_E_L(NEDGE),
72 . ex(mvsiz), ey(mvsiz), ez(mvsiz), fx(mvsiz), fy(mvsiz), fz(mvsiz)
73 real*4 edg_bisector(3,4,*), vtx_bisector(3,2,*)
77 INTEGER I ,NN, J, JRM, K, KRM, I1, J1, I2, J2,
78 . IE, JE, SOL_EDGE, SH_EDGE, IM(MVSIZ), IS(MVSIZ)
80 . AAA, DX, DY, , DD, NNI, NI2, INVCOS, GAPE_M(MVSIZ), GAPE_S(MVSIZ)
83 IF(cand_s(i)<=nedge)
THEN
87 n1(i)=ledge(5,cand_s(i))
88 n2(i)=ledge(6,cand_s(i))
90 IF(irect(j1,i1)==n1(i).AND.irect(mod(j1,4)+1,i1)==n2(i))
THEN
92 ELSEIF(irect(j1,i1)==n2(i).AND.irect(mod(j1,4)+1,i1)==n1(i))
THEN
95 print *,
'i25cor3e - internal problem',cand_s(i),n1(i),n2(i),
96 . irect(j1,i1),irect(mod(j1,4)+1,i1)
100 j2=ledge(2,cand_m(i))
101 m1(i)=ledge(5,cand_m(i))
102 m2(i)=ledge(6,cand_m(i))
104 IF(irect(j2,i2)==m1(i).AND.irect(mod(j2,4)+1,i2)==m2(i))
THEN
106 ELSEIF(irect(j2,i2)==m2(i).AND.irect(mod(j2,4)+1,i2)==m1(i))
THEN
109 print *,
'i25cor3e - internal problem',cand_m(i),m1(i),m2(i),
110 . irect(j2,i2),irect(mod(j2,4)+1,i2)
129 gape_m(i)=gape(cand_m(i))
130 IF(cand_s(i)<=nedge)
THEN
131 gape_s(i)=gape(cand_s(i))
134 gapve(i)=gape_m(i)+gape_s(i)
138 gape_m(i)=
min(gape_m(i),gap_e_l(cand_m(i)))
139 IF(cand_s(i)<=nedge)
THEN
140 gape_s(i)=
min(gape_s(i),gap_e_l(cand_s(i)))
141 gapve(i)=
min(gap_e_l(cand_m(i))+gap_e_l(cand_s(i)),gapve(i))
147 sh_edge =iedge-10*sol_edge
158 ie=ledge(1,cand_m(i))
159 je=ledge(2,cand_m(i))
160 ex(i) = edg_bisector(1,je,ie)
161 ey(i) = edg_bisector(2,je,ie)
162 ez(i) = edg_bisector(3,je,ie)
164 IF(iabs(ledge(7,cand_s(i)))/=1)
THEN
165 ie=ledge(1,cand_s(i))
166 je=ledge(2,cand_s(i))
167 fx(i) = edg_bisector(1,je,ie)
168 fy(i) = edg_bisector(2,je,ie)
169 fz(i) = edg_bisector(3,je,ie)
177 IF(ledge(3,cand_m(i))/=0)cycle
179 ie=ledge(1,cand_m(i))
180 je=ledge(2,cand_m(i))
183 i2=admsr(mod(je,4)+1,ie)
186 i1=admsr(mod(je,4)+1,ie)
189 ex(i) = edg_bisector(1,je,ie)
190 ey(i) = edg_bisector(2,je,ie)
191 ez(i) = edg_bisector(3,je,ie)
194 dx = vtx_bisector(1,1,i1)+vtx_bisector(1,2,i1)
195 dy = vtx_bisector(2,1,i1)+vtx_bisector(2,2,i1)
196 dz = vtx_bisector(3,1,i1)+vtx_bisector(3,2,i1)
198 nni = ex(i)*dx + ey(i)*dy + ez(i)*dz
199 ni2 = dx*dx + dy*dy + dz*dz
208 IF(two*nni*nni < ni2)
THEN
210 aaa = sqrt(
max(zero,ni2-nni*nni)) - nni
215 dd=one/
max(em20,sqrt(dx*dx+dy*dy+dz*dz))
219 invcos = one /
max(em20,ex(i)*dx + ey(i)*dy + ez(i)*dz)
224 xxm1(i) = xxm1(i)-gape_m(i)*dx
225 xym1(i) = xym1(i)-gape_m(i)*dy
226 xzm1(i) = xzm1(i)-gape_m(i)*dz
229 dx = vtx_bisector(1,1,i2)+vtx_bisector(1,2,i2)
230 dy = vtx_bisector(2,1,i2)+vtx_bisector(2,2,i2)
231 dz = vtx_bisector(3,1,i2)+vtx_bisector(3,2,i2)
233 nni = ex(i)*dx + ey(i)*dy + ez(i)*dz
234 ni2 = dx*dx + dy*dy + dz*dz
243 IF(two*nni*nni < ni2)
THEN
245 aaa = sqrt(
max(zero,ni2-nni*nni)) - nni
250 dd=one/
max(em20,sqrt(dx*dx+dy*dy+dz*dz))
254 invcos = one /
max(em20,ex(i)*dx + ey(i)*dy + ez(i)*dz)
259 xxm2(i) = xxm2(i)-gape_m(i)*dx
261 xzm2(i) = xzm2(i)-gape_m(i)*dz
268 IF(ledge(3,cand_s(i))/=0)cycle
270 ie=ledge(1,cand_s(i))
271 je=ledge(2,cand_s(i))
274 i2=admsr(mod(je,4)+1,ie)
277 i1=admsr(mod(je,4)+1,ie)
280 fx(i) = edg_bisector(1,je,ie)
281 fy(i) = edg_bisector(2,je,ie)
282 fz(i) = edg_bisector(3,je,ie)
285 dx = vtx_bisector(1,1,i1)+vtx_bisector(1,2,i1)
286 dy = vtx_bisector(2,1,i1)+vtx_bisector(2,2,i1)
287 dz = vtx_bisector(3,1,i1)+vtx_bisector(3,2,i1)
289 nni = fx(i)*dx + fy(i)*dy + fz(i)*dz
299 IF(two*nni*nni < ni2)
THEN
301 aaa = sqrt(
max(zero,ni2-nni*nni)) - nni
306 dd=one/
max(em20,sqrt(dx*dx+dy*dy+dz*dz))
310 invcos = one /
max(em20,fx(i)*dx + fy(i)*dy + fz(i)*dz)
315 xxs1(i) = xxs1(i)-gape_s(i)*dx
316 xys1(i) = xys1(i)-gape_s(i)*dy
317 xzs1(i) = xzs1(i)-gape_s(i)*dz
320 dx = vtx_bisector(1,1,i2)+vtx_bisector(1,2,i2)
321 dy = vtx_bisector(2,1,i2)+vtx_bisector(2,2,i2)
322 dz = vtx_bisector(3,1,i2)+vtx_bisector(3,2,i2)
324 nni = fx(i)*dx + fy(i)*dy + fz(i)*dz
325 ni2 = dx*dx + dy*dy + dz*dz
334 IF(two*nni*nni < ni2)
THEN
336 aaa = sqrt(
max(zero,ni2-nni*nni)) - nni
341 dd=one/
max(em20,sqrt(dx*dx+dy*dy+dz*dz))
345 invcos = one /
max(em20,fx(i)*dx + fy(i)*dy + fz(i)*dz)
350 xxs2(i) = xxs2(i)-gape_s(i)*dx
351 xys2(i) = xys2(i)-gape_s(i)*dy
352 xzs2(i) = xzs2(i)-gape_s(i)*dz
subroutine i25cor3e(jlt, ledge, irect, x, cand_s, cand_m, xxs1, xxs2, xys1, xys2, xzs1, xzs2, xxm1, xxm2, xym1, xym2, xzm1, xzm2, ex, ey, ez, fx, fy, fz, n1, n2, m1, m2, nedge, gape, gapve, iedge, admsr, lbound, edg_bisector, vtx_bisector, itab, igap0, igap, gap_e_l)