28 SUBROUTINE polyhedr(IPOLY, RPOLY , POLB , NPOLB, POLH,
29 . NPOLH, NRPMAX , NPHMAX, IBRIC, LMIN,
30 . INFO , NPOLHMAX, NPPMAX)
34#include "implicit_f.inc"
38 INTEGER NPPMAX, IPOLY(6+NPPMAX,*), POLB(*), NPOLB, NPHMAX,
39 . POLH(NPHMAX+2,*),NPOLH, NRPMAX, IBRIC, INFO, NPOLHMAX
41 . rpoly(nrpmax,*), lmin
45 INTEGER I, (NPOLB), ICMAX, ICUR, II, J, JJ, K, KK, ISTOP,
46 . L, LL, ICUR_OLD, ITY, JMIN, PMIN, POLD
48 . x1, y1, z1, x2, y2, z2, xx1, yy1, zz1, xx2, yy2, zz2,
49 . dd11, dd12, dd21, dd22, tole
55 tole=epsilon(zero)*0.5*lmin*lmin
72 IF (j/=ipoly(2,ii))
THEN
77 x1=rpoly(4+3*(j-1)+1,ii)
78 y1=rpoly(4+3*(j-1)+2,ii)
79 z1=rpoly(4+3*(j-1)+3,ii)
80 x2=rpoly(4+3*(jj-1)+1,ii)
81 y2=rpoly(4+3*(jj-1)+2,ii)
82 z2=rpoly(4+3*(jj-1)+3,ii)
88 DO WHILE (istop==0.AND.l<ipoly(2,kk))
90 IF (l/=ipoly(2,kk))
THEN
95 xx1=rpoly(4+3*(l-1)+1,kk)
96 yy1=rpoly(4+3*(l-1)+2,kk)
97 zz1=rpoly(4+3*(l-1)+3,kk)
98 xx2=rpoly(4+3*(ll-1)+1,kk)
99 yy2=rpoly(4+3*(ll-1)+2,kk)
100 zz2=rpoly(4+3*(ll-1)+3,kk)
101 dd11=(xx1-x1)**2+(yy1-y1)**2+(zz1-z1)**2
102 dd21=(xx2-x1)**2+(yy2-y1)**2+(zz2-z1)**2
103 dd12=(xx1-x2)**2+(yy1-y2)**2+(zz1-z2)**2
104 dd22=(xx2-x2)**2+(yy2-y2)**2+(zz2-z2)**2
105 IF ((dd11<=tole.AND.dd22<=tole).OR.
106 . (dd21<=tole.AND.dd12<=tole)) istop=l
115 IF (itag(l)==icur_old) itag(l)=icur
127 IF (itag(j)==i) ii=ii+1
129 IF (ii/=0) npolh=npolh+1
131 IF (npolh>npolhmax)
THEN
141 IF (itag(j)==i) ii=ii+1
158 IF (ipoly(5,jj)==0)
THEN
169 DO k=j+1,polh(1,npolh)
170 IF (polh(2+k,npolh)<pmin)
THEN
177 polh(2+jmin,npolh)=pold
subroutine polyhedr(ipoly, rpoly, polb, npolb, polh, npolh, nrpmax, nphmax, ibric, lmin, info, npolhmax, nppmax)