31 . NEDGE ,LEDGE ,MARGE ,GAPE ,GAP_E_L ,
32 . IGAP ,X ,IRECT ,PENE ,ADMSR ,
33 . EDG_BISECTOR,VTX_BISECTOR,ITAB ,DGAPLOAD)
42#include "implicit_f.inc"
54 INTEGER JLT, IGAP0, NEDGE, IGAP
55 INTEGER IRECT(4,*), CAND_S(*), CAND_M(*), LEDGE(NLEDGE,*), ADMSR(4,*), ITAB(*)
58 my_real ,
INTENT(IN) :: dgapload
60 . x(3,*), gape(*), gap_e_l(*), pene(mvsiz)
61 real*4 edg_bisector(3,4,*), vtx_bisector(3,2,*)
65 INTEGER I, IG,N1,N2,M1,M2,NI,L,J, IE, JE, IL, JL
67 . XXS1(MVSIZ) ,XXS2(MVSIZ) ,XYS1(MVSIZ) ,XYS2(MVSIZ) ,XZS1(MVSIZ) ,XZS2(MVSIZ) ,
68 . xxm1(mvsiz) ,xxm2(mvsiz) ,xym1(mvsiz) ,xym2(mvsiz) ,xzm1(mvsiz) ,xzm2(mvsiz) ,
69 . xs12,ys12,zs12,xm12,ym12,zm12,xa,xb,
70 . xs2,xm2,xsm,xs2m2,ys2,ym2,ysm,ys2m2,zs2,zm2,zsm,zs2m2,
71 . xx,yy,zz,als,alm,det,gap2,
72 . xmax1,ymax1,zmax1,xmax2,ymax2,zmax2,
73 . xmin1,ymin1,zmin1,xmin2,ymin2,zmin2,gapv(mvsiz),
74 . aaa, dx, dy, dz, dd, ex, ey ,ez, nni, ni2, invcos
81 IF(cand_s(i) <= nedge)
THEN
83 gapv(i)=gape(ie)+gape(je)
86 gapv(i)=two*gape(ie)+gape(je)
88 gapv(i)=two*(gape(ie)+gape(je))
92 . gapv(i)=
min(gap_e_l(ie)+gap_e_l(je),gapv(i))
94 gapv(i)=
max(drad,gapv(i)+dgapload )+marge
132 IF(cand_s(i)<=nedge)
THEN
133 n1 = ledge(5,cand_s(i))
134 n2 = ledge(6,cand_s(i))
145 m1 = ledge(5,cand_m(i))
146 m2 = ledge(6,cand_m(i))
161 xmax1 =
max(xxs1(i),xxs2(i))
162 ymax1 =
max(xys1(i),xys2(i))
164 xmax2 =
max(xxm1(i),xxm2(i))
165 ymax2 =
max(xym1(i),xym2(i))
166 zmax2 =
max(xzm1(i),xzm2(i))
167 xmin1 =
min(xxs1(i),xxs2(i))
168 ymin1 =
min(xys1(i),xys2(i))
169 zmin1 =
min(xzs1(i),xzs2(i))
170 xmin2 =
min(xxm1(i),xxm2(i))
171 ymin2 =
min(xym1(i),xym2(i))
172 zmin2 =
min(xzm1(i),xzm2(i))
173 dd =
max(xmin1-xmax2,ymin1-ymax2,zmin1-zmax2,
174 . xmin2-xmax1,ymin2-ymax1,zmin2-zmax1)
182 xm12 = xxm2(i)-xxm1(i)
183 ym12 = xym2(i)-xym1(i)
184 zm12 = xzm2(i)-xzm1(i)
185 xm2 = xm12*xm12 + ym12*ym12 + zm12*zm12
187 xs12 = xxs2(i)-xxs1(i)
188 ys12 = xys2(i)-xys1(i)
189 zs12 = xzs2(i)-xzs1(i)
190 xs2 = xs12*xs12 + ys12*ys12 + zs12*zs12
191 xsm = - (xs12*xm12 + ys12*ym12 + zs12*zm12)
192 xs2m2 = xxm2(i)-xxs2(i)
193 ys2m2 = xym2(i)-xys2(i)
194 zs2m2 = xzm2(i)-xzs2(i)
196 xa = xs12*xs2m2 + ys12*ys2m2 + zs12*zs2m2
197 xb = -xm12*xs2m2 - ym12*ys2m2 - zm12*zs2m2
198 det = xm2*xs2 - xsm*xsm
201 alm = (xa*xsm-xb*xs2) / det
204 alm=
min(one,
max(zero,alm))
205 als = -(xa + alm*xsm) / xs2
206 als=
min(one,
max(zero,als))
207 alm = -(xb + als*xsm) / xm2
208 alm=
min(one,
max(zero,alm))
212 xx = als*xxs1(i) + (one-als)*xxs2(i)
213 . - alm*xxm1(i) - (one-alm)*xxm2(i)
214 yy = als*xys1(i) + (one-als)*xys2(i)
215 . - alm*xym1(i) - (one-alm)*xym2(i)
216 zz = als*xzs1(i) + (one-als)*xzs2(i)
217 . - alm*xzm1(i) - (one-alm)*xzm2(i)
220 pene(i) =
max(zero,gap2- xx*xx - yy*yy - zz*zz)
subroutine i25pen3_edg(jlt, cand_s, cand_m, drad, igap0, nedge, ledge, marge, gape, gap_e_l, igap, x, irect, pene, admsr, edg_bisector, vtx_bisector, itab, dgapload)