29 1 X ,IRECTM ,NRTM ,NMN ,MSR ,
30 2 NINT ,NTY ,NOINT ,NOD_NORMAL, XM0 )
34#include "implicit_f.inc"
42 INTEGER NRTM, NINT, NTY, NOINT,NMN
43 INTEGER IRECTM(4,*), MSR(*)
46 . x(3,*), nod_normal(3,*), xm0(3,*)
50 INTEGER I, , FIRST, LAST, IRM, I1, I2, I3, I4
51 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
54 . x0(mvsiz), y0(mvsiz), z0(mvsiz),
55 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
56 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
57 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
58 . x01(mvsiz), x02(mvsiz), x03(mvsiz), x04(mvsiz),
59 . y01(mvsiz), y02(mvsiz), y03(mvsiz), y04(mvsiz),
60 . z01(mvsiz), z02(mvsiz), z03(mvsiz), z04(mvsiz),
61 . xn1(mvsiz),yn1(mvsiz),zn1(mvsiz),
62 . xn2(mvsiz),yn2(mvsiz),zn2(mvsiz),
63 . xn3(mvsiz),yn3(mvsiz),zn3(mvsiz),
64 . xn4(mvsiz),yn4(mvsiz),zn4(mvsiz),
74 ix1(i)=msr(irectm(1,irm))
75 ix2(i)=msr(irectm(2,irm))
76 ix3(i)=msr(irectm(3,irm))
77 ix4(i)=msr(irectm(4,irm))
93 IF(ix3(i)/=ix4(i))
THEN
94 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
95 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
96 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
106 x01(i) = x1(i) - x0(i)
107 y01(i) = y1(i) - y0(i)
108 z01(i) = z1(i) - z0(i)
110 x02(i) = x2(i) - x0(i)
111 y02(i) = y2(i) - y0(i)
112 z02(i) = z2(i) - z0(i)
114 x03(i) = x3(i) - x0(i)
115 y03(i) = y3(i) - y0(i)
116 z03(i) = z3(i) - z0(i)
118 x04(i) = x4(i) - x0(i)
119 y04(i) = y4(i) - y0(i)
120 z04(i) = z4(i) - z0(i)
126 xn1(i) = y01(i)*z02(i) - z01(i)*y02(i)
127 yn1(i) = z01(i)*x02(i) - x01(i)*z02(i)
128 zn1(i) = x01(i)*y02(i) - y01(i)*x02(i)
130 xn2(i) = y02(i)*z03(i) - z02(i)*y03(i)
131 yn2(i) = z02(i)*x03(i) - x02(i)*z03(i)
132 zn2(i) = x02(i)*y03(i) - y02(i)*x03(i)
134 xn3(i) = y03(i)*z04(i) - z03(i)*y04(i)
135 yn3(i) = z03(i)*x04(i) - x03(i)*z04(i)
136 zn3(i) = x03(i)*y04(i) - y03(i)*x04(i)
138 xn4(i) = y04(i)*z01(i) - z04(i)*y01(i)
139 yn4(i) = z04(i)*x01(i) - x04(i)*z01(i)
140 zn4(i) = x04(i)*y01(i) - y04(i)*x01(i)
146 aaa=one/
max(em30,sqrt(xn1(i)*xn1(i)+yn1(i)*yn1(i)+zn1(i)*zn1(i)))
151 aaa=one/
max(em30,sqrt(xn2(i)*xn2(i)+yn2(i)*yn2(i)+zn2(i)*zn2(i)))
156 aaa=one/
max(em30,sqrt(xn3(i)*xn3(i)+yn3(i)*yn3(i)+zn3(i)*zn3(i)))
161 aaa=one/
max(em30,sqrt(xn4(i)*xn4(i)+yn4(i)*yn4(i)+zn4(i)*zn4(i)))
179 nod_normal(1,i1)=nod_normal(1,i1)+xn4(i)+xn1(i)
180 nod_normal(2,i1)=nod_normal(2,i1)+yn4(i)+yn1(i)
181 nod_normal(3,i1)=nod_normal(3,i1)+zn4(i)+zn1(i)
183 nod_normal(1,i2)=nod_normal(1,i2)+xn1(i)+xn2(i)
184 nod_normal(2,i2)=nod_normal(2,i2)+yn1(i)+yn2(i)
185 nod_normal(3,i2)=nod_normal(3,i2)+zn1(i)+zn2(i)
187 nod_normal(1,i3)=nod_normal(1,i3)+xn2(i)+xn3(i)
188 nod_normal(2,i3)=nod_normal(2,i3)+yn2(i)+yn3(i)
189 nod_normal(3,i3)=nod_normal(3,i3)+zn2(i)+zn3(i)
191 nod_normal(1,i4)=nod_normal(1,i4)+xn3(i)+xn4(i)
192 nod_normal(2,i4)=nod_normal(2,i4)+yn3(i)+yn4(i)
193 nod_normal(3,i4)=nod_normal(3,i4)+zn3(i)+zn4(i)
197 nod_normal(1,i1)=nod_normal(1,i1)+xn1(i)
198 nod_normal(2,i1)=nod_normal(2,i1)+yn1(i)
199 nod_normal(3,i1)=nod_normal(3,i1)+zn1(i)
201 nod_normal(1,i2)=nod_normal(1,i2)+xn1(i)
202 nod_normal(2,i2)=nod_normal(2,i2)+yn1(i)
203 nod_normal(3,i2)=nod_normal(3,i2)+zn1(i)
205 nod_normal(1,i3)=nod_normal(1,i3)+xn1(i)
206 nod_normal(2,i3)=nod_normal(2,i3)+yn1(i)
207 nod_normal(3,i3)=nod_normal(3,i3)+zn1(i)
215 last =
min(last+mvsiz,nrtm)
223 aaa=one/
max(em30,sqrt(nod_normal(1,i)*nod_normal(1,i)+
224 . nod_normal(2,i)*nod_normal(2,i)+
225 . nod_normal(3,i)*nod_normal(3,i)))
226 nod_normal(1,i)=nod_normal(1,i)*aaa
227 nod_normal(2,i)=nod_normal(2,i)*aaa
228 nod_normal(3,i)=nod_normal(3,i)*aaa
241 1000
FORMAT(2x,
'GAP MIN = ',1pg20.13)
248 SUBROUTINE i21rcurv(NRTM,XM0 ,NOD_NORMAL ,IRECT ,RCURV ,
253#include "implicit_f.inc"
257 INTEGER NRTM, IRECT(4,*)
259 . XM0(3,*), NOD_NORMAL(3,*), RCURV(*), ANGLM(*)
263 INTEGER I ,N1, N2, N3, N4
268 . nnx1, nnx2, nnx3, nnx4,
269 . nny1, nny2, nny3, nny4,
270 . nnz1, nnz2, nnz3, nnz4,
271 . surfx, surfy, surfz,
272 . erx, ery, erz, dnx, dny, dnz, dnt, ll, aaa, rr,
273 . x13, y13, z13, x24, y24, z24, nx, ny, nz, cc
300 nnx1=nod_normal(1,n1)
301 nny1=nod_normal(2,n1)
302 nnz1=nod_normal(3,n1)
304 nnx2=nod_normal(1,n2)
305 nny2=nod_normal(2,n2)
306 nnz2=nod_normal(3,n2)
308 nnx3=nod_normal(1,n3)
309 nny3=nod_normal(2,n3)
310 nnz3=nod_normal(3,n3)
312 nnx4=nod_normal(1,n4)
313 nny4=nod_normal(2,n4)
314 nnz4=nod_normal(3,n4)
317 erx = (x2+x3)-(x1+x4)
318 ery = (y2+y3)-(y1+y4)
319 erz = (z2+z3)-(z1+z4)
322 ll = sqrt(erx*erx+ery*ery+erz*erz)
328 dnx= (nnx2+nnx3)-(nnx1+nnx4)
329 dny= (nny2+nny3)-(nny1+nny4)
330 dnz= (nnz2+nnz3)-(nnz1+nnz4)
333 dnt=(dnx*erx+dny*ery+dnz*erz)
335 rr=ll/
max(em20,abs(dnt))
336 rcurv(i)=
min(rcurv(i),rr)
338 erx = (x4+x3)-(x1+x2)
339 ery = (y4+y3)-(y1+y2)
340 erz = (z4+z3)-(z1+z2)
343 ll = sqrt(erx*erx+ery*ery+erz*erz)
349 dnx= (nnx4+nnx3)-(nnx1+nnx2)
350 dny= (nny4+nny3)-(nny1+nny2)
351 dnz= (nnz4+nnz3)-(nnz1+nnz2)
354 dnt=(dnx*erx+dny*ery+dnz*erz)
356 rr=ll/
max(em20,abs(dnt))
357 rcurv(i)=
min(rcurv(i),rr)
371 surfx = y13*z24 - z13*y24
372 surfy = z13*x24 - x13*z24
373 surfz = x13*y24 - y13*x24
375 aaa=one/
max(em30,sqrt(surfx*surfx+surfy*surfy+surfz*surfz))
380 cc=(surfx*nnx1+surfy*nny1+surfz*nnz1)
381 anglm(i)=
min(anglm(i),cc)
383 cc=(surfx*nnx2+surfy*nny2+surfz*nnz2)
384 anglm(i)=
min(anglm(i),cc)
386 cc=(surfx*nnx3+surfy*nny3+surfz*nnz3)
387 anglm(i)=
min(anglm(i),cc)
389 cc=(surfx*nnx4+surfy*nny4+surfz*nnz4)
390 anglm(i)=
min(anglm(i),cc)