40 SUBROUTINE i25norm(NRTM,IRECTM,NUMNOD,X ,NOD_NORMAL,
41 . NMN ,MSR ,ITAB ,NRTM0 ,MSEGTYP ,
42 . MVOISIN,EVOISIN,NEDGE,LEDGE,
43 . LBOUND,ADMSR,VTX_BISECTOR,
44 . E2S_NOD_NORMAL,NADMSR,IEDGE,IELEM_M)
52#include "implicit_f.inc"
64 INTEGER NRTM,NUMNOD,NRTM0,NADMSR,IEDGE,IRECTM(4,NRTM),NMN,MSR(*),
65 . MVOISIN(4,NRTM), EVOISIN(4,NRTM),ITAB(*),MSEGTYP(*),
66 . NEDGE, LEDGE(NLEDGE,*), LBOUND(*), ADMSR(4,*)
70 real*4 nod_normal(3,4,nrtm), vtx_bisector(3,2,*),e2s_nod_normal(3,*)
71 INTEGER ,
INTENT(INOUT) :: IELEM_M(2,NRTM)
75 INTEGER I, J, FIRST, LAST, IRM, IEDG, I1, I2, I3, I4
76 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
77 . JRM, JEDG, IS1, IS2, ISH, SOL_EDGE
80 . x0(mvsiz), y0(mvsiz), z0(mvsiz),
81 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
82 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
83 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
84 . x01(mvsiz), x02(mvsiz), x03(mvsiz), x04(mvsiz),
85 . y01(mvsiz), y02(mvsiz), y03(mvsiz), y04(mvsiz),
86 . z01(mvsiz), z02(mvsiz), z03(mvsiz), z04(mvsiz),
87 . xn1(mvsiz),yn1(mvsiz),zn1(mvsiz),
88 . xn2(mvsiz),yn2(mvsiz),zn2(mvsiz),
89 . xn3(mvsiz),yn3(mvsiz),zn3(mvsiz),
90 . xn4(mvsiz),yn4(mvsiz),zn4(mvsiz),
91 . xs(mvsiz),ys(mvsiz),zs(mvsiz),
92 . aaa, xad, s1, s2, s3, s4,
93 . rzero, run, rem30, rep30, rdix,
94 . nx, ny, nz, vx, vy, vz, x12, y12, z12
102 nod_normal(1:3,1:4,1:nrtm) = rzero
103 vtx_bisector(1:3,1:2,1:nadmsr) = rzero
106 IF(iedge/=0) sol_edge =iedge/10
109 e2s_nod_normal(1,i) = rzero
110 e2s_nod_normal(2,i) = rzero
111 e2s_nod_normal(3,i) = rzero
116 last =
min(nrtm0,mvsiz)
122 IF(ielem_m(2,irm) ==0)
THEN
144 IF(ielem_m(2,irm) ==0)
THEN
145 IF(ix3(i)/=ix4(i))
THEN
146 x0(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
147 y0(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
148 z0(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
159 IF(ielem_m(2,irm) ==0)
THEN
161 x01(i) = x1(i) - x0(i)
162 y01(i) = y1(i) - y0(i)
163 z01(i) = z1(i) - z0(i)
165 x02(i) = x2(i) - x0(i)
166 y02(i) = y2(i) - y0(i)
167 z02(i) = z2(i) - z0(i)
169 x03(i) = x3(i) - x0(i)
170 y03(i) = y3(i) - y0(i)
171 z03(i) = z3(i) - z0(i)
173 x04(i) = x4(i) - x0(i)
174 y04(i) = y4(i) - y0(i)
175 z04(i) = z4(i) - z0(i)
182 IF(ielem_m(2,irm) ==0)
THEN
184 xn1(i) = y01(i)*z02(i) - z01(i)*y02(i)
185 yn1(i) = z01(i)*x02(i) - x01(i)*z02(i)
186 zn1(i) = x01(i)*y02(i) - y01(i)*x02(i)
188 xn2(i) = y02(i)*z03(i) - z02(i)*y03(i)
189 yn2(i) = z02(i)*x03(i) - x02(i)*z03(i)
190 zn2(i) = x02(i)*y03(i) - y02(i)*x03(i)
192 xn3(i) = y03(i)*z04(i) - z03(i)*y04(i)
193 yn3(i) = z03(i)*x04(i) - x03(i)*z04(i)
194 zn3(i) = x03(i)*y04(i) - y03(i)*x04(i)
196 xn4(i) = y04(i)*z01(i) - z04(i)*y01(i)
197 yn4(i) = z04(i)*x01(i) - x04(i)*z01(i)
198 zn4(i) = x04(i)*y01(i) - y04(i)*x01(i)
206 IF(ielem_m(2,irm) ==0)
THEN
207 aaa=run/
max(rem30,sqrt(xn1(i)*xn1(i)+yn1(i)*yn1(i)+zn1(i)*zn1(i)))
212 aaa=run/
max(rem30,sqrt(xn2(i)*xn2(i)+yn2(i)*yn2(i)+zn2(i)*zn2(i)))
217 aaa=run/
max(rem30,sqrt(xn3(i)*xn3(i)+yn3(i)*yn3(i)+zn3(i)*zn3(i)))
222 aaa=run/
max(rem30,sqrt(xn4(i)*xn4(i)+yn4(i)*yn4(i)+zn4(i)*zn4(i)))
238 nod_normal(1,1,irm)=xn1(i)
239 nod_normal(2,1,irm)=yn1(i)
242 nod_normal(1,2,irm)=xn2(i)
243 nod_normal(2,2,irm)=yn2(i)
244 nod_normal(3,2,irm)=zn2(i)
246 nod_normal(1,3,irm)=xn3(i)
247 nod_normal(2,3,irm)=yn3(i)
248 nod_normal(3,3,irm)=zn3(i)
250 nod_normal(1,4,irm)=xn4(i)
251 nod_normal(2,4,irm)=yn4(i)
252 nod_normal(3,4,irm)=zn4(i)
256 nod_normal(1,1,irm)=xn1(i)
257 nod_normal(2,1,irm)=yn1(i)
258 nod_normal(3,1,irm)=zn1(i)
260 nod_normal(1,2,irm)=xn1(i)
261 nod_normal(2,2,irm)=yn1(i)
262 nod_normal(3,2,irm)=zn1(i)
264 nod_normal(1,4,irm)=xn1(i)
265 nod_normal(2,4,irm)=yn1(i)
266 nod_normal(3,4,irm)=zn1(i)
277 IF(ielem_m(2,irm) ==0)
THEN
281 IF(ish > nrtm)ish=ish-nrtm
283 IF(ix3(i)/=ix4(i))
THEN
285 nod_normal(1,1,ish)=-xn1(i)
286 nod_normal(2,1,ish)=-yn1(i)
287 nod_normal(3,1,ish)=-zn1(i)
289 nod_normal(1,4,ish)=-xn2(i)
290 nod_normal(2,4,ish)=-yn2(i)
291 nod_normal(3,4,ish)=-zn2(i)
293 nod_normal(1,3,ish)=-xn3(i)
294 nod_normal(2,3,ish)=-yn3(i)
295 nod_normal(3,3,ish)=-zn3(i)
297 nod_normal(1,2,ish)=-xn4(i)
298 nod_normal(2,2,ish)=-yn4(i)
299 nod_normal(3,2,ish)=-zn4(i)
303 nod_normal(1,1,ish)=-xn1(i)
304 nod_normal(2,1,ish)=-yn1(i)
305 nod_normal(3,1,ish)=-zn1(i)
307 nod_normal(1,4,ish)=-xn1(i)
308 nod_normal(2,4,ish)=-yn1(i)
309 nod_normal(3,4,ish)=-zn1(i)
311 nod_normal(1,2,ish)=-xn1(i)
312 nod_normal(2,2,ish)=-yn1(i)
313 nod_normal(3,2,ish)=-zn1(i)
348 e2s_nod_normal(1,i1)=e2s_nod_normal(1,i1)+s1*(xn4(i)+xn1(i))
349 e2s_nod_normal(2,i1)=e2s_nod_normal(2,i1)+s1*(yn4(i)+yn1(i))
350 e2s_nod_normal(3,i1)=e2s_nod_normal(3,i1)+s1*(zn4(i)+zn1(i))
352 e2s_nod_normal(1,i2)=e2s_nod_normal(1,i2)+s2*(xn1(i)+xn2(i))
353 e2s_nod_normal(2,i2)=e2s_nod_normal(2,i2)+s2*(yn1(i)+yn2(i))
354 e2s_nod_normal(3,i2)=e2s_nod_normal
356 e2s_nod_normal(1,i3)=e2s_nod_normal(1,i3)+s3*(xn2(i)+xn3(i))
357 e2s_nod_normal(2,i3)=e2s_nod_normal(2,i3)+s3*(yn2(i)+yn3(i))
358 e2s_nod_normal(3,i3)=e2s_nod_normal(3,i3)+s3*(zn2(i)+zn3(i))
360 e2s_nod_normal(1,i4)=e2s_nod_normal(1,i4)+s4*(xn3(i)+xn4(i))
361 e2s_nod_normal(2,i4)=e2s_nod_normal(2,i4)+s4*(yn3(i)+yn4(i))
362 e2s_nod_normal(3,i4)=e2s_nod_normal(3,i4)+s4*(zn3(i)+zn4(i))
366 e2s_nod_normal(1,i1)=e2s_nod_normal(1,i1)+s1*xn1(i)
367 e2s_nod_normal(2,i1)=e2s_nod_normal(2,i1)+s1*yn1(i)
368 e2s_nod_normal(3,i1)=e2s_nod_normal(3,i1)+s1*zn1(i)
370 e2s_nod_normal(1,i2)=e2s_nod_normal(1,i2)+s2*xn1(i)
371 e2s_nod_normal(2,i2)=e2s_nod_normal(2,i2)+s2*yn1(i)
372 e2s_nod_normal(3,i2)=e2s_nod_normal(3,i2)+s2*zn1(i)
374 e2s_nod_normal(1,i3)=e2s_nod_normal(1,i3)+s3*xn1(i)
375 e2s_nod_normal(2,i3)=e2s_nod_normal(2,i3)+s3*yn1(i)
376 e2s_nod_normal(3,i3)=e2s_nod_normal(3,i3)+s3*zn1(i)
388 last =
min(last+mvsiz,nrtm0)
394 IF(ielem_m(2,irm) ==0)
THEN
396 IF(mvoisin(iedg,irm)==0)
THEN
397 IF(.NOT.(irectm(3,irm)==irectm(4,irm).AND.iedg==3))
THEN
399 nx=nod_normal(1,iedg,irm)
400 ny=nod_normal(2,iedg,irm)
401 nz=nod_normal(3,iedg,irm)
404 i2=irectm(mod(iedg,4)+1,irm)
414 aaa=run/
max(rem30,sqrt(vx*vx+vy*vy+vz*vz))
419 nod_normal(1,iedg,irm)=vx
420 nod_normal(2,iedg,irm)=vy
421 nod_normal(3,iedg,irm)=vz
431 IF(ielem_m(2,irm) ==0)
THEN
433 IF(mvoisin(iedg,irm)==0)
THEN
434 IF(.NOT.(irectm(3,irm)==irectm(4,irm).AND.iedg==3))
THEN
436 vx=nod_normal(1,iedg,irm)
437 vy=nod_normal(2,iedg,irm)
442 IF(vtx_bisector(1,1,is1)==rzero.AND.
443 . vtx_bisector(2,1,is1)==rzero.AND.
444 . vtx_bisector(3,1,is1)==rzero)
THEN
445 vtx_bisector(1,1,is1)=vx
446 vtx_bisector(2,1,is1)=vy
447 vtx_bisector(3,1,is1)=vz
449 vtx_bisector(1,2,is1)=vx
450 vtx_bisector(2,2,is1)=vy
451 vtx_bisector(3,2,is1)=vz
454 is2=admsr(mod(iedg,4)+1,irm)
456 IF(vtx_bisector(1,1,is2)==rzero.AND.
457 . vtx_bisector(2,1,is2)==rzero.AND.
458 . vtx_bisector(3,1,is2)==rzero)
THEN
459 vtx_bisector(1,1,is2)=vx
460 vtx_bisector(2,1,is2)=vy
461 vtx_bisector(3,1,is2)=vz
463 vtx_bisector(1,2,is2)=vx
464 vtx_bisector(2,2,is2)=vy
465 vtx_bisector(3,2,is2)=vz
477 IF(ielem_m(2,irm) ==0)
THEN
479 IF(.NOT.(irectm(3,irm)==irectm(4,irm).AND.j==3))
THEN
497 IF(ielem_m(2,irm) ==0)
THEN
499 IF(.NOT.(irectm(3,irm)==irectm(4,irm).AND.j==3))
THEN
505 aaa=run/
max(rem30,sqrt(nx*nx+ny*ny+nz*nz))
507 nod_normal(2,j,irm)=ny*aaa
508 nod_normal(3,j,irm)=nz*aaa
519 aaa=run/
max(rem30,sqrt(e2s_nod_normal(1,i)*e2s_nod_normal(1,i)+
520 . e2s_nod_normal(2,i)*e2s_nod_normal(2,i)+
521 . e2s_nod_normal(3,i)*e2s_nod_normal(3,i)))
522 e2s_nod_normal(1,i)=e2s_nod_normal(1,i)*aaa
523 e2s_nod_normal(2,i)=e2s_nod_normal(2,i)*aaa
524 e2s_nod_normal(3,i)=e2s_nod_normal(3,i)*aaa