33 . X1 ,X2 ,X3 ,X4 ,X5 ,X6 ,X7 ,X8 ,
34 . Y1 ,Y2 ,Y3 ,Y4 ,Y5 ,Y6 ,Y7 ,Y8 ,
35 . Z1 ,Z2 ,Z3 ,Z4 ,Z5 ,Z6 ,Z7 ,Z8 ,
36 . IDP ,X ,IXS ,IPART_ ,IFILL ,NTRACE ,NTRACE0 ,DIS ,
37 . NSOLTOSF ,NNOD2SURF ,INOD2SURF ,KNOD2SURF ,JMID ,IPHASE ,INPHASE ,KVOL ,
38 . SURF_TYPE ,IAD_BUFR ,BUFSF ,NOD_NORMAL ,ISOLNOD ,NBSUBMAT,FILL_RATIO ,ICUMU ,
39 . NSEG ,SURF_ELTYP,SURF_NODES,NBCONTY ,IDC ,NBIP ,IDSURF ,SWIFTSURF,
40 . SEGTOSURF ,IGRSURF ,IVOLSURF ,NSURF_INVOL ,IXQ ,IXTG ,ITYP ,NEL ,
41 . NUMEL_TOT ,NUM_INIVOL,INIVOL ,I_INIVOL)
50#include "implicit_f.inc"
64 INTEGER,
INTENT(IN) :: NUM_INIVOL
65 TYPE (INIVOL_STRUCT_),
DIMENSION(NUM_INIVOL),
INTENT(INOUT) :: INIVOL
67 INTEGER,
INTENT(IN) :: NBSUBMAT
68 my_real,
INTENT(INOUT) :: KVOL(NBSUBMAT,)
69 INTEGER NTRACE,NTRACE0,IFILL,JMID,IDP,NSEG,NBCONTY,IDC,,
70 . ISOLNOD,ICUMU,SURF_TYPE,IAD_BUFR,IDSURF,IVOLSURF(NSURF),NUMEL_TOT
71 INTEGER IXS(NIXS,NUMELS),IXQ(,NUMELQ),IXTG(NIXTG,NUMELTG),IPART_(*),NSOLTOSF(,*),
72 . inod2surf(nnod2surf,*),knod2surf(*),iphase(nbsubmat+1,numel_tot),
74 . surf_nodes(nseg,4),nbip(nbsubmat,*),swiftsurf(nsurf),segtosurf(*),nsurf_invol
75 my_real x1(*),x2(*),x3(*),x4(*),x5(*),x6(*),x7(*),x8(*),
76 . y1(*),y2(*),y3(*),y4(*),y5(*),y6(*),y7(*),y8(*),
77 . z1(*),z2(*),z3(*),z4(*),z5(*),z6(*),z7(*),z8(*),
78 . x(3,*),dis(nsurf_invol,*),bufsf(*),nod_normal(3,*),fill_ratio
79 TYPE (SURF_),
DIMENSION(NSURF) :: IGRSURF
83 INTEGER I,II,J,JJ,K,N,N1,N2,N3,K1,K2,,OK,OK1,OK2,OK3,INOD,
85 . ix(8),npoint,ntrace_tot,jmid_old,isurf
86 INTEGER (MVSIZ),JCT(MVSIZ),(MVSIZ),TRACEN(MVSIZ)
87 INTEGER BUFFILL1(NBSUBMAT),BUFFILL2(NBSUBMAT,MVSIZ),ELEM_NUMNOD,ISUBMAT_TO_SUBSTRACT
89 my_real :: kvol_bak(nbsubmat)
91 . xmin,ymin,zmin,xmax,
ymax,zmax,dx,dy,dz,xx(3,8),
92 . xk(ntrace0),yk(ntrace0),zk(ntrace0),xfas(3,4),
93 . x0,y0,z0,dist,dist_old,tmpsum,xn(3),
94 . xk0(ntrace),yk0(ntrace),zk0(ntrace),
95 . l12(3,3),l23(3,3),l31(3,3),ll(3,3),
96 . coef,aaa(3),bbb(3),ccc(3),
cg(3)
98 . xs(ntrace,mvsiz),ys(ntrace,mvsiz),zs(ntrace,mvsiz),
99 . disp(ntrace,mvsiz),xp1,yp1,zp1,xp2,yp2,zp2,aa,bb,cc,
100 . xg,yg,zg,skw(9),dgr,tmp(3),x_prime,y_prime,z_prime,
104 INTEGER :: d1(4),d2(4),d3(4),d4(4)
105 DATA d1/1,2,3,4/,d2/2,3,4,1/,/3,4,1,2/,/4,1,2,3/
109 elem_numnod = -huge(elem_numnod)
113 IF (ipart_(i) /= idp) cycle
124 disp(1:ntrace,1:mvsiz) = zero
129 IF (ipart_(i) /= idp) cycle
135 IF (isolnod == 4)
THEN
141 ELSEIF (isolnod == 8)
THEN
161 ELSEIF(ityp == 2)
THEN
173 IF (dis(ivolsurf(idsurf),n) /= zero)
THEN
175 IF (dis(ivolsurf(idsurf),n) > zero)
THEN
177 ELSEIF (dis(ivolsurf(idsurf),n) < zero)
THEN
181 IF (dis(ivolsurf(idsurf),n) == zero) ok3 = ok3 + 1
185 IF (ok1 == elem_numnod .OR. (ok1+ok3) == elem_numnod)
THEN
187 ELSEIF (ok2 == elem_numnod .OR. (ok2+ok3) == elem_numnod)
THEN
189 ELSEIF (ok1 > 0 .AND. ok2 > 0)
THEN
207 IF (isolnod == 4 .OR. n2d/=0)
THEN
210 IF (ipart_(i) /= idp) cycle
226 cg(1) = third*(xx(1,d1(k))+xx(1,d2(k))+xx(1,d3(k)))
227 cg(2) = third*(xx(2,d1(k))+xx(2,d2(k))+xx(2,d3(k)))
228 cg(3) = third*(xx(3,d1(k))+xx(3,d2(k))+xx(3,d3(k)))
231 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
232 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
233 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4(k)))
234 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
235 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
236 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
237 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
238 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k))-xx(2,d4(k)))
239 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
240 xk0(npoint) = fourth*(aaa(1)+bbb(1)+ccc(1)+xx(1,d4(k)))
241 yk0(npoint) = fourth*(aaa(2)+bbb(2)+ccc(2)+xx(2,d4(k)))
242 zk0(npoint) = fourth*(aaa(3)+bbb(3)+ccc(3)+xx(3,d4(k)))
245 coef = three*one_over_8
246 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
247 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
248 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4(k)))
249 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
250 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
251 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
252 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
254 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
256 xk0(npoint) = third*(aaa(1)+bbb(1)+ccc(1))
257 yk0(npoint) = third*(aaa(2)+bbb(2)+ccc(2))
258 zk0(npoint) = third*(aaa(3)+bbb(3)+ccc
259 l12(1,1) = half*(aaa(1)+bbb(1))
260 l12(2,1) = half*(aaa(2)+bbb(2))
261 l12(3,1) = half*(aaa(3)+bbb(3))
262 l23(1,1) = half*(bbb(1)+ccc(1))
263 l23(2,1) = half*(bbb(2)+ccc(2))
264 l23(3,1) = half*(bbb(3)+ccc(3))
265 l31(1,1) = half*(ccc(1)+aaa(1))
266 l31(2,1) = half*(ccc(2)+aaa(2))
267 l31(3,1) = half*(ccc(3)+aaa(3))
269 xk0(npoint) = third*(aaa(1)+l12(1,1)+l31(1,1))
270 yk0(npoint) = third*(aaa(2)+l12(2,1)+l31(2,1))
271 zk0(npoint) = third*(aaa(3)+l12(3,1)+l31(3,1))
273 xk0(npoint) = third*(bbb(1)+l12(1,1)+l23(1,1))
274 yk0(npoint) = third*(bbb(2)+l12(2,1)+l23(2,1))
275 zk0(npoint) = third*(bbb(3)+l12(3,1)+l23(3,1))
278 yk0(npoint) = third*(ccc(2)+l23(2,1)+l31(2,1))
279 zk0(npoint) = third*(ccc(3)+l23(3,1)+l31(3,1))
282 coef = five*one_over_8
283 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
284 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
285 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4(k)))
286 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
287 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
288 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
289 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
290 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k))-xx(2,d4(k)))
291 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
292 cg(1) = third*(aaa(1)+bbb(1)+ccc(1))
293 cg(2) = third*(aaa(2)+bbb(2)+ccc(2))
294 cg(3) = third*(aaa(3)+bbb(3)+ccc(3))
295 l12(1,1) = third*(two*aaa(1)+bbb(1))
296 l12(2,1) = third*(two*aaa(2)+bbb(2))
297 l12(3,1) = third*(two*aaa(3)+bbb(3))
298 l12(1,2) = third*(aaa(1)+two*bbb(1))
299 l12(2,2) = third*(aaa(2)+two*bbb(2))
300 l12(3,2) = third*(aaa(3)+two*bbb(3))
301 l23(1,1) = third*(two*bbb(1)+ccc(1))
302 l23(2,1) = third*(two*bbb(2)+ccc(2))
303 l23(3,1) = third*(two*bbb(3)+ccc(3))
304 l23(1,2) = third*(bbb(1)+two*ccc(1))
305 l23(2,2) = third*(bbb(2)+two*ccc(2))
306 l23(3,2) = third*(bbb(3)+two*ccc(3))
307 l31(1,1) = third*(two*ccc(1)+aaa(1))
308 l31(2,1) = third*(two*ccc(2)+aaa(2))
309 l31(3,1) = third*(two*ccc(3)+aaa(3))
310 l31(1,2) = third*(ccc(1)+two*aaa(1))
311 l31(2,2) = third*(ccc(2)+two*aaa(2))
312 l31(3,2) = third*(ccc(3)+two*aaa(3))
314 xk0(npoint) = third*(aaa(1)+l12(1,1)+l31(1,2))
315 yk0(npoint) = third*(aaa(2)+l12(2,1)+l31(2,2))
316 zk0(npoint) = third*(aaa(3)+l12(3,1)+l31(3,2))
318 xk0(npoint) = third*(bbb(1)+l12(1,2)+l23(1,1))
319 yk0(npoint) = third*(bbb(2)+l12(2,2)+l23(2,1))
320 zk0(npoint) = third*(bbb(3)+l12(3,2)+l23(3,1))
322 xk0(npoint) = third*(ccc(1)+l23(1,2)+l31(1,1))
323 yk0(npoint) = third*(ccc(2)+l23(2,2)+l31(2,1))
324 zk0(npoint) = third*(ccc(3)+l23(3,2)+l31(3,1))
326 xk0(npoint) = third*(
cg(1)+l12(1,1)+l31(1,2))
327 yk0(npoint) = third*(
cg(2)+l12(2,1)+l31(2,2))
328 zk0(npoint) = third*(
cg(3)+l12(3,1)+l31(3,2))
330 xk0(npoint) = third*(
cg(1)+l12(1,2)+l23(1,1))
331 yk0(npoint) = third*(
cg(2)+l12(2,2)+l23(2,1))
332 zk0(npoint) = third*(
cg(3)+l12(3,2)+l23(3,1))
334 xk0(npoint) = third*(
cg(1)+l23(1,2)+l31(1,1))
335 yk0(npoint) = third*(
cg(2)+l23(2,2)+l31(2,1))
336 zk0(npoint) = third*(
cg(3)+l23(3,2)+l31(3,1))
338 xk0(npoint) = third*(
cg(1)+l12(1,1)+l12(1,2))
339 yk0(npoint) = third*(
cg(2)+l12(2,1)+l12(2,2))
340 zk0(npoint) = third*(
cg(3)+l12(3,1)+l12(3,2))
342 xk0(npoint) = third*(
cg(1)+l23(1,1)+l23(1,2))
343 yk0(npoint) = third*(
cg(2)+l23(2,1)+l23(2,2))
346 xk0(npoint) = third*(
cg(1)+l31(1,1)+l31(1,2))
347 yk0(npoint) = third*(
cg(2)+l31(2,1)+l31(2,2))
348 zk0(npoint) = third*(
cg(3)+l31(3,1)+l31(3,2))
351 coef = seven*one_over_8
352 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
353 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
354 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4
355 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
356 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2
357 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
358 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
359 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k))-xx(2,d4(k)))
360 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k
361 cg(1) = third*(aaa(1)+bbb(1)+ccc(1))
362 cg(2) = third*(aaa(2)+bbb(2)+ccc(2))
363 cg(3) = third*(aaa(3)+bbb(3)+ccc(3))
369 l12(1,1) = fourth*(three*aaa(1)+bbb(1))
370 l12(2,1) = fourth*(three*aaa(2)+bbb(2))
371 l12(3,1) = fourth*(three*aaa(3)+bbb(3))
372 l12(1,2) = half*(aaa(1)+bbb(1))
373 l12(2,2) = half*(aaa(2)+bbb(2))
374 l12(3,2) = half*(aaa(3)+bbb(3))
375 l12(1,3) = fourth*(aaa(1)+three*bbb(1))
376 l12(2,3) = fourth*(aaa(2)+three*bbb(2))
377 l12(3,3) = fourth*(aaa(3)+three*bbb(3))
378 l23(1,1) = fourth*(three*bbb(1)+ccc(1))
379 l23(2,1) = fourth*(three*bbb(2)+ccc(2))
380 l23(3,1) = fourth*(three*bbb(3)+ccc(3))
381 l23(1,2) = half*(bbb(1)+ccc(1))
382 l23(2,2) = half*(bbb(2)+ccc(2))
383 l23(3,2) = half*(bbb(3)+ccc(3))
384 l23(1,3) = fourth*(bbb(1)+three*ccc(1))
385 l23(2,3) = fourth*(bbb(2)+three*ccc(2))
386 l23(3,3) = fourth*(bbb(3)+three*ccc(3))
387 l31(1,1) = fourth*(three*ccc(1)+aaa(1))
388 l31(2,1) = fourth*(three*ccc(2)+aaa(2))
389 l31(3,1) = fourth*(three*ccc(3)+aaa(3))
390 l31(1,2) = half*(ccc(1)+aaa(1))
391 l31(2,2) = half*(ccc(2)+aaa(2))
392 l31(3,2) = half*(ccc(3)+aaa(3))
393 l31(1,3) = fourth*(ccc(1)+three*aaa(1))
394 l31(2,3) = fourth*(ccc(2)+three*aaa(2))
395 l31(3,3) = fourth*(ccc(3)+three*aaa(3))
396 ll(1,1) = half*(l12(1,2)+l31(1,2))
397 ll(2,1) = half*(l12(2,2)+l31(2,2))
398 ll(3,1) = half*(l12(3,2)+l31(3,2))
399 ll(1,2) = half*(l12(1,2)+l23(1,2))
400 ll(2,2) = half*(l12(2,2)+l23(2,2))
401 ll(3,2) = half*(l12(3,2)+l23(3,2))
402 ll(1,3) = half*(l23(1,2)+l12(1,2))
403 ll(2,3) = half*(l23(2,2)+l12(2,2))
404 ll(3,3) = half*(l23(3,2)+l12(3,2))
406 xk0(npoint) = third*(aaa(1)+l12(1,1)+l31(1,3))
407 yk0(npoint) = third*(aaa(2)+l12(2,1)+l31(2,3))
408 zk0(npoint) = third*(aaa(3)+l12(3,1)+l31(3,3))
410 xk0(npoint) = third*(bbb(1)+l12(1,3)+l23(1,1))
411 yk0(npoint) = third*(bbb(2)+l12(2,3)+l23(2,1))
412 zk0(npoint) = third*(bbb(3)+l12(3,3)+l23(3,1))
414 xk0(npoint) = third*(ccc(1)+l23(1,3)+l31(1,1))
415 yk0(npoint) = third*(ccc(2)+l23(2,3)+l31
416 zk0(npoint) = third*(ccc(3)+l23(3,3)+l31(3,1))
418 xk0(npoint) = third*(ll(1,1)+l12(1,1)+l31(1,3))
419 yk0(npoint) = third*(ll(2,1)+l12(2,1)+l31(2,3))
420 zk0(npoint) = third*(ll(3,1)+l12(3,1)+l31(3,3))
422 xk0(npoint) = third*(ll(1,2)+l12(1,3)+l23(1,1))
423 yk0(npoint) = third*(ll(2,2)+l12(2,3)+l23(2,1))
424 zk0(npoint) = third*(ll(3,2)+l12(3,3)+l23(3,1))
427 yk0(npoint) = third*(ll(2,3)+l23(2,3)+l31(2,1))
428 zk0(npoint) = third*(ll(3,3)+l23(3,3)+l31(3,1))
430 xk0(npoint) = third*(ll(1,1)+l12(1,1)+l12(1,2))
431 yk0(npoint) = third*(ll(2,1)+l12(2,1)+l12(2,2))
432 zk0(npoint) = third*(ll(3,1)+l12(3,1)+l12(3,2))
434 xk0(npoint) = third*(ll(1,2)+l12(1,2)+l12(1,3))
435 yk0(npoint) = third*(ll(2,2)+l12(2,2)+l12(2,3))
436 zk0(npoint) = third*(ll(3,2)+l12(3,2)+l12(3,3))
438 xk0(npoint) = third*(ll(1,2)+l23(1,1)+l23(1,2))
439 yk0(npoint) = third*(ll(2,2)+l23(2,1)+l23(2,2))
440 zk0(npoint) = third*(ll(3,2)+l23(3,1)+l23(3,2))
442 xk0(npoint) = third*(ll(1,3)+l23(1,2)+l23(1,3))
443 yk0(npoint) = third*(ll(2,3)+l23(2,2)+l23(2,3))
444 zk0(npoint) = third*(ll(3,3)+l23(3,2)+l23(3,3))
446 xk0(npoint) = third*(ll(1,3)+l31(1,1)+l31(1,2))
447 yk0(npoint) = third*(ll(2,3)+l31(2,1)+l31(2,2))
448 zk0(npoint) = third*(ll(3,3)+l31(3,1)+l31(3,2))
450 xk0(npoint) = third*(ll(1,1)+l31(1,2)+l31(1,3))
451 yk0(npoint) = third*(ll(2,1)+l31(2,2)+l31(2,3))
452 zk0(npoint) = third*(ll(3,1)+l31(3,2)+l31(3,3))
454 xk0(npoint) = third*(ll(1,1)+ll(1,2)+l12(1,2))
455 yk0(npoint) = third*(ll(2,1)+ll(2,2)+l12(2,2))
456 zk0(npoint) = third*(ll(3,1)+ll(3,2)+l12(3,2))
458 xk0(npoint) = third*(ll(1,2)+ll(1,3)+l23(1,2))
459 yk0(npoint) = third*(ll(2,2)+ll(2,3)+l23(2,2))
460 zk0(npoint) = third*(ll(3,2)+ll(3,3)+l23(3,2))
462 xk0(npoint) = third*(ll(1,3)+ll(1,1)+l31(1,2))
463 yk0(npoint) = third*(ll(2,3)+ll(2,1)+l31(2,2))
464 zk0(npoint) = third*(ll(3,3)+ll(3,1)+l31(3,2))
475 ELSEIF (isolnod == 8)
THEN
503 IF (ipart_(i) /= idp) cycle
513 xmin=
min(xmin,xx(1,j))
514 ymin=
min(ymin,xx(2,j))
515 zmin=
min(zmin,xx(3,j))
516 xmax=
max(xmax,xx(1,j))
518 zmax=
max(zmax,xx(3,j))
521 dx = (xmax-xmin)/float(ntrace0)
522 dy = (
ymax-ymin)/float(ntrace0)
523 dz = (zmax-zmin)/float(ntrace0)
529 xk(1) = xmin + dx*half
530 yk(1) = ymin + dy*half
531 zk(1) = zmin + dz*half
534 xk(k1) = xk(k1-1) + dx
535 yk(k1) = yk(k1-1) + dy
536 zk(k1) = zk(k1-1) + dz
553 IF (isolnod == 4 .OR. n2d/=0)
THEN
555 ELSEIF (isolnod == 8)
THEN
561 IF (ipart_(i) /= idp) cycle
568 IF(surf_type == 101)
THEN
582 skw(4)=bufsf(iad0+10)
583 skw(5)=bufsf(iad0+11)
584 skw(6)=bufsf(iad0+12)
585 skw(7)=bufsf(iad0+13)
586 skw(8)=bufsf(iad0+14)
587 skw(9)=bufsf(iad0+15)
590 x_prime = skw(1)*(xs(ip,i)-xg) + skw(4)*(ys(ip,i)-yg) + skw(7)*(zs(ip,i)-zg)
591 y_prime = skw(2)*(xs(ip,i)-xg) + skw(5)*(ys(ip,i)-yg) + skw(8)*(zs(ip,i)-zg)
592 z_prime = skw(3)*(xs(ip,i)-xg) + skw(6)*(ys(ip,i)-yg) + skw(9)*(zs(ip,i)-zg)
593 tmp(1)= abs(x_prime)/aa
594 tmp(2)= abs(y_prime)/bb
595 tmp(3)= abs(z_prime)/cc
596 IF(tmp(1)/=zero)tmp(1)= exp(dgr*log(tmp(1)))
597 IF(tmp(2)/=zero)tmp(2)= exp(dgr*log(tmp(2)))
598 IF(tmp(3)/=zero)tmp(3)= exp(dgr*log(tmp(3)))
599 dist = (tmp(1)+tmp(2)+tmp(3))
600 disp(ip,i) = one-dist
602 ELSEIF (surf_type == 200)
THEN
619 dist = aa*(xs(ip,i)-xp1)+bb*(ys(ip,i)-yp1)+cc*(zs(ip,i)-zp1)
620 tmpsum = sqrt(aa*aa+bb*bb+cc*cc)
621 tmpsum = one/
max(em30,tmpsum)
628 IF (isolnod == 4)
THEN
634 ELSEIF (isolnod == 8)
THEN
652 ELSEIF(ityp == 2)
THEN
666 nsh = nsoltosf(idc,n)
670 DO jj=1,knod2surf(nsh)
673 ipl = inod2surf(jj,nsh)
678 isurf = segtosurf(ipl)
679 ipl = ipl - swiftsurf(isurf)
680 IF (ipl <= 0 .OR. ipl > nseg) cycle
682 ixpl(1) = igrsurf(isurf)%NODES(ipl,1)
683 ixpl(2) = igrsurf(isurf)%NODES(ipl,2)
684 ixpl(3) = igrsurf(isurf)%NODES(ipl,3)
685 ixpl(4) = igrsurf(isurf)%NODES(ipl,4)
687 xfas(1,1) = x(1,ixpl(1))
688 xfas(2,1) = x(2,ixpl(1))
689 xfas(3,1) = x(3,ixpl(1))
690 xfas(1,2) = x(1,ixpl(2))
691 xfas(2,2) = x(2,ixpl(2))
692 xfas(3,2) = x(3,ixpl(2))
693 xfas(1,3) = x(1,ixpl(3))
694 xfas(2,3) = x(2,ixpl(3))
695 xfas(3,3) = x(3,ixpl(3))
696 xfas(1,4) = x(1,ixpl(4))
697 xfas(2,4) = x(2,ixpl(4))
698 xfas(3,4) = x(3,ixpl(4))
702 x0 = xs(ip,i) - xfas(1,k)
703 y0 = ys(ip,i) - xfas(2,k)
704 z0 = zs(ip,i) - xfas(3,k)
705 dist = x0*x0 + y0*y0 + z0*z0
707 IF (dist < dist_old .and. dist > em10)
THEN
715 IF (inod == 0)
GOTO 122
717 IF (dist_old == ep20) dist_old = zero
718 disp(ip,i) = dist_old
726 . inod ,inod2surf ,knod2surf ,nnod2surf ,x ,
727 . xn ,dist ,nseg ,surf_eltyp,nod_normal,
728 . surf_nodes,swiftsurf ,idsurf ,segtosurf )
734 jmid_old = inphase(ip,i)
735 IF (disp(ip,i) > zero)
THEN
736 tracep(i) = tracep(i) + 1
738 IF (jmid_old /= jmid)
THEN
740 nbip(jmid_old,i) = nbip(jmid_old,i) - 1
741 nbip(jmid,i) = nbip(jmid,i) + 1
744 ELSEIF (disp(ip,i) < zero)
THEN
745 tracen(i) = tracen(i) + 1
747 IF (jmid_old /= jmid)
THEN
749 nbip(jmid_old,i) = nbip(jmid_old,i) - 1
750 nbip(jmid,i) = nbip(jmid,i) + 1
753 ELSEIF (disp(ip,i) == zero .and. jmid /= jmid_old)
THEN
755 nbip(jmid_old,i) = nbip(jmid_old,i) - 1
763 IF (jmid_old > 0)
THEN
764 IF(nbip(jmid_old,i) < 0) nbip(jmid_old,i) = 0
768 nphase = iphase(nbsubmat+1,i)
771 IF (jmid /= iphase(j,i)) ok = ok + 1
776 iphase(nbsubmat+1,i) = k
779 IF (tracep(i) <= 0 .and. tracen(i) > 0)
THEN
781 ELSEIF (tracep(i) > 0 .and. tracen(i) <= 0)
THEN
789 IF (ipart_(i) /= idp) cycle
790 IF (full(i) == 1 .and. ifill == 0)
THEN
791 kvol_bak(1:nbsubmat) = kvol(1:nbsubmat,i)
794 IF(icumu == 0)kvol(j,i) = zero
798 iphase(nbsubmat+1,i) = 1
799 nbip(jmid,i) = ntrace_tot
803 IF(icumu == 0)kvol(jmid,i)=zero
804 kvol(jmid,i)= kvol(jmid,i)+fill_ratio
808 sumvf = sum(kvol(1:nbsubmat, i))
812 isubmat_to_substract = inivol(i_inivol)%CONTAINER(idc-1)%SUBMAT_ID
813 vf_to_substract = sumvf-one
814 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
815 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
818 isubmat_to_substract = maxloc(kvol_bak,1)
819 vf_to_substract = sumvf-one
820 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
821 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
825 ELSEIF (full(i) == -1 .and. ifill == 1)
THEN
826 kvol_bak(1:nbsubmat) = kvol(1:nbsubmat,i)
829 IF(icumu == 0)kvol(j,i) = zero
833 iphase(nbsubmat+1,i) = 1
834 nbip(jmid,i) = ntrace_tot
838 IF(icumu == 0)kvol(jmid,i)=zero
839 kvol(jmid,i)= kvol(jmid
842 sumvf = sum(kvol(1:nbsubmat, i))
846 isubmat_to_substract = inivol(i_inivol)%CONTAINER(idc-1)%SUBMAT_ID
847 vf_to_substract = sumvf-one
848 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
849 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
852 isubmat_to_substract = maxloc(kvol_bak,1)
853 vf_to_substract = sumvf-one
854 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
855 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
859 ELSEIF (full(i) == 2)
THEN
865 DO j=1,iphase(nbsubmat+1,i)
868 IF (nbip(iph,i) == 0) iphase(j,i) = 0
874 DO j=1,iphase(nbsubmat+1,i)
875 IF (iphase(j,i) /= 0)
THEN
878 buffill1(k) = iphase(j,i)
879 buffill2(k,i)= nbip(iph,i)
883 IF (iphase(nbsubmat+1,i) > 1)
THEN
890 iphase(j,i) = buffill1(j)
892 nbip(iph,i) = buffill2(j,i)
894 iphase(nbsubmat+1,i) = k
903 IF (ipart_(i) /= idp) cycle
905 IF (iphase(nbsubmat+1,i) > 1)
THEN
908 nip = nip + nbip(iph,i)
910 kvol_bak(1:nbsubmat) = kvol(1:nbsubmat,i)
911 DO j=1,iphase(nbsubmat+1,i)
913 IF(icumu == 0)kvol(iph,i)=zero
914 kvol(iph,i)= kvol(iph,i)+fill_ratio*float(nbip(iph,i))/float(nip)
917 sumvf = sum(kvol(1:nbsubmat, i))
918 IF (sumvf > one )
THEN
921 isubmat_to_substract = inivol(i_inivol)%CONTAINER(idc-1)%SUBMAT_ID
922 vf_to_substract = sumvf-one
923 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
924 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
927 isubmat_to_substract = maxloc(kvol_bak,1)
928 vf_to_substract = sumvf-one
929 vf_to_substract =
min(vf_to_substract
930 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract