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)
47 use element_mod ,
only :nixs,nixq,nixtg
51#include "implicit_f.inc"
64 INTEGER,
INTENT(IN) :: I_INIVOL
65 INTEGER,
INTENT(IN) :: NUM_INIVOL
66 TYPE (INIVOL_STRUCT_),
DIMENSION(NUM_INIVOL),
INTENT(INOUT) :: INIVOL
67 INTEGER,
INTENT(IN) :: NEL
68 INTEGER,
INTENT(IN) :: NBSUBMAT
69 my_real,
INTENT(INOUT) :: KVOL(NBSUBMAT,NEL)
70 INTEGER NTRACE,NTRACE0,IFILL,JMID,IDP,NSEG,NBCONTY,IDC,NNOD2SURF,
71 . ISOLNOD,ICUMU,SURF_TYPE,IAD_BUFR,IDSURF,IVOLSURF(NSURF),NUMEL_TOT
72 INTEGER IXS(NIXS,NUMELS),IXQ(NIXQ,NUMELQ),IXTG(NIXTG,NUMELTG),IPART_(*),NSOLTOSF(NBCONTY,*),
73 . inod2surf(nnod2surf,*),knod2surf(*),iphase(nbsubmat+1,numel_tot),
74 . inphase(ntrace,nel),surf_eltyp(nseg),ityp,
75 . surf_nodes(nseg,4),nbip(nbsubmat,*),swiftsurf(nsurf),segtosurf(*),nsurf_invol
76 my_real x1(*),x2(*),x3(*),x4(*),x5(*),x6(*),x7(*),x8(*),
77 . y1(*),y2(*),y3(*),y4(*),y5(*),y6(*),y7(*),y8(*),
78 . z1(*),z2(*),z3(*),z4(*),z5(*),z6(*),z7(*),z8(*),
79 . x(3,*),dis(nsurf_invol,*),bufsf(*),nod_normal(3,*),fill_ratio
80 TYPE (SURF_),
DIMENSION(NSURF) :: IGRSURF
84 INTEGER I,II,J,JJ,K,N,N1,N2,N3,K1,K2,K3,OK,OK1,OK2,OK3,INOD,
85 . ie,nsh,ipl,ip,ixpl(4),getel,nphase,iph,nip,iad0,
86 . ix(8),npoint,ntrace_tot,jmid_old,isurf
87 INTEGER FULL(MVSIZ),JCT(MVSIZ),TRACEP(MVSIZ),TRACEN(MVSIZ)
88 INTEGER BUFFILL1(NBSUBMAT),BUFFILL2(NBSUBMAT,MVSIZ),ELEM_NUMNOD,ISUBMAT_TO_SUBSTRACT
90 my_real :: kvol_bak(nbsubmat)
92 . xmin,ymin,zmin,xmax,
ymax,zmax,dx,dy,dz,xx(3,8),
93 . xk(ntrace0),yk(ntrace0),zk(ntrace0),xfas(3,4),
94 . x0,y0,z0,dist,dist_old,tmpsum,xn(3),
95 . xk0(ntrace),yk0(ntrace),zk0(ntrace),
96 . l12(3,3),l23(3,3),l31(3,3),ll(3,3),
97 . coef,aaa(3),bbb(3),ccc(3),
cg(3)
99 . xs(ntrace,mvsiz),ys(ntrace,mvsiz),zs(ntrace,mvsiz),
100 . disp(ntrace,mvsiz),xp1,yp1,zp1,xp2,yp2,zp2,aa,bb,cc,
101 . xg,yg,zg,skw(9),dgr,tmp(3),x_prime,y_prime,z_prime,
105 INTEGER :: d1(4),d2(4),d3(4),d4(4)
106 DATA d1/1,2,3,4/,d2/2,3,4,1/,d3/3,4,1,2/,d4/4,1,2,3/
110 elem_numnod = -huge(elem_numnod)
114 IF (ipart_(i) /= idp) cycle
125 disp(1:ntrace,1:mvsiz) = zero
130 IF (ipart_(i) /= idp) cycle
136 IF (isolnod == 4)
THEN
142 ELSEIF (isolnod == 8)
THEN
162 ELSEIF(ityp == 2)
THEN
174 IF (dis(ivolsurf(idsurf),n) /= zero)
THEN
176 IF (dis(ivolsurf(idsurf),n) > zero)
THEN
178 ELSEIF (dis(ivolsurf(idsurf),n) < zero)
THEN
182 IF (dis(ivolsurf(idsurf),n) == zero) ok3 = ok3 + 1
186 IF (ok1 == elem_numnod .OR. (ok1+ok3) == elem_numnod)
THEN
188 ELSEIF (ok2 == elem_numnod .OR. (ok2+ok3) == elem_numnod)
THEN
190 ELSEIF (ok1 > 0 .AND. ok2 > 0)
THEN
208 IF (isolnod == 4 .OR. n2d/=0)
THEN
211 IF (ipart_(i) /= idp) cycle
227 cg(1) = third*(xx(1,d1(k))+xx(1,d2(k))+xx(1,d3(k)))
228 cg(2) = third*(xx(2,d1(k))+xx(2,d2(k))+xx(2,d3(k)))
229 cg(3) = third*(xx(3,d1(k))+xx(3,d2(k))+xx(3,d3(k)))
232 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
235 bbb(1) = xx(1,d4(k))+coef
236 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
237 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
238 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
239 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k
240 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
241 xk0(npoint) = fourth*(aaa(1)+bbb(1)+ccc(1)+xx(1,d4(k)))
242 yk0(npoint) = fourth*(aaa(2)+bbb(2)+ccc(2)+xx(2,d4(k)))
243 zk0(npoint) = fourth*(aaa(3)+bbb(3)+ccc(3)+xx(3,d4(k)))
246 coef = three*one_over_8
247 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
248 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
249 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4(k)))
250 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
251 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
252 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
253 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
254 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k))-xx(2,d4(k)))
255 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
257 xk0(npoint) = third*(aaa(1)+bbb(1)+ccc(1))
258 yk0(npoint) = third*(aaa(2)+bbb(2)+ccc(2))
259 zk0(npoint) = third*(aaa(3)+bbb(3)+ccc(3))
260 l12(1,1) = half*(aaa(1)+bbb(1))
261 l12(2,1) = half*(aaa(2)+bbb(2))
262 l12(3,1) = half*(aaa(3)+bbb(3))
263 l23(1,1) = half*(bbb(1)+ccc(1))
264 l23(2,1) = half*(bbb(2)+ccc(2))
265 l23(3,1) = half*(bbb(3)+ccc(3))
266 l31(1,1) = half*(ccc(1)+aaa(1))
267 l31(2,1) = half*(ccc(2)+aaa(2))
268 l31(3,1) = half*(ccc(3)+aaa(3))
270 xk0(npoint) = third*(aaa(1)+l12(1,1)+l31(1,1))
271 yk0(npoint) = third*(aaa(2)+l12(2,1)+l31(2,1))
274 xk0(npoint) = third*(bbb(1)+l12(1,1)+l23(1,1))
275 yk0(npoint) = third*(bbb(2)+l12(2,1)+l23(2,1))
276 zk0(npoint) = third*(bbb(3)+l12(3,1)+l23(3,1))
278 xk0(npoint) = third*(ccc(1)+l23(1,1)+l31(1,1))
279 yk0(npoint) = third*(ccc(2)+l23(2,1)+l31
280 zk0(npoint) = third*(ccc(3)+l23(3,1)+l31(3,1))
283 coef = five*one_over_8
284 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
285 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
286 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4(k)))
287 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
288 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
289 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
290 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
291 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k))-xx(2,d4(k)))
292 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
293 cg(1) = third*(aaa(1)+bbb(1)+ccc(1))
294 cg(2) = third*(aaa(2)+bbb(2)+ccc(2))
295 cg(3) = third*(aaa(3)+bbb(3)+ccc(3))
296 l12(1,1) = third*(two*aaa(1)+bbb(1))
297 l12(2,1) = third*(two*aaa(2)+bbb(2))
298 l12(3,1) = third*(two*aaa(3)+bbb(3))
299 l12(1,2) = third*(aaa(1)+two*bbb(1))
300 l12(2,2) = third*(aaa(2)+two*bbb(2))
301 l12(3,2) = third*(aaa(3)+two*bbb(3))
302 l23(1,1) = third*(two*bbb(1)+ccc(1))
303 l23(2,1) = third*(two*bbb(2)+ccc(2))
304 l23(3,1) = third*(two*bbb(3)+ccc(3))
305 l23(1,2) = third*(bbb(1)+two*ccc(1))
306 l23(2,2) = third*(bbb(2)+two*ccc(2))
307 l23(3,2) = third*(bbb(3)+two*ccc(3))
308 l31(1,1) = third*(two*ccc(1)+aaa(1))
309 l31(2,1) = third*(two*ccc(2)+aaa(2))
310 l31(3,1) = third*(two*ccc(3)+aaa(3))
311 l31(1,2) = third*(ccc(1)+two*aaa(1))
312 l31(2,2) = third*(ccc(2)+two*aaa(2))
313 l31(3,2) = third*(ccc(3)+two*aaa(3))
315 xk0(npoint) = third*(aaa(1)+l12(1,1)+l31(1,2))
316 yk0(npoint) = third*(aaa(2)+l12(2,1)+l31(2,2))
317 zk0(npoint) = third*(aaa(3)+l12(3,1)+l31(3,2))
319 xk0(npoint) = third*(bbb(1)+l12(1,2)+l23(1,1))
320 yk0(npoint) = third*(bbb(2)+l12(2,2)+l23(2,1))
321 zk0(npoint) = third*(bbb(3)+l12(3,2)+l23(3,1))
323 xk0(npoint) = third*(ccc(1)+l23(1,2)+l31(1,1))
324 yk0(npoint) = third*(ccc(2)+l23(2,2)+l31(2,1))
325 zk0(npoint) = third*(ccc(3)+l23(3,2)+l31(3,1))
327 xk0(npoint) = third*(
cg(1)+l12(1,1)+l31(1,2))
328 yk0(npoint) = third*(
cg(2)+l12(2,1)+l31(2,2))
329 zk0(npoint) = third*(
cg(3)+l12(3,1)+l31(3,2))
331 xk0(npoint) = third*(
cg(1)+l12(1,2)+l23(1,1))
332 yk0(npoint) = third*(
cg(2)+l12(2,2)+l23(2,1))
333 zk0(npoint) = third*(
cg(3)+l12(3,2)+l23(3,1))
335 xk0(npoint) = third*(
cg(1)+l23(1,2)+l31(1,1))
336 yk0(npoint) = third*(
cg(2)+l23(2,2)+l31(2,1))
337 zk0(npoint) = third*(
cg(3)+l23(3,2)+l31(3,1))
339 xk0(npoint) = third*(
cg(1)+l12(1,1)+l12(1,2))
340 yk0(npoint) = third*(
cg(2)+l12(2,1)+l12(2,2))
341 zk0(npoint) = third*(
cg(3)+l12(3,1)+l12(3,2))
343 xk0(npoint) = third*(
cg(1)+l23(1,1)+l23(1,2))
344 yk0(npoint) = third*(
cg(2)+l23(2,1)+l23(2,2))
345 zk0(npoint) = third*(
cg(3)+l23(3,1)+l23(3,2))
347 xk0(npoint) = third*(
cg(1)+l31(1,1)+l31(1,2))
348 yk0(npoint) = third*(
cg(2)+l31(2,1)+l31(2,2))
349 zk0(npoint) = third*(
cg(3)+l31(3,1)+l31(3,2))
352 coef = seven*one_over_8
353 aaa(1) = xx(1,d4(k))+coef*(xx(1,d1(k))-xx(1,d4(k)))
354 aaa(2) = xx(2,d4(k))+coef*(xx(2,d1(k))-xx(2,d4(k)))
355 aaa(3) = xx(3,d4(k))+coef*(xx(3,d1(k))-xx(3,d4(k)))
356 bbb(1) = xx(1,d4(k))+coef*(xx(1,d2(k))-xx(1,d4(k)))
357 bbb(2) = xx(2,d4(k))+coef*(xx(2,d2(k))-xx(2,d4(k)))
358 bbb(3) = xx(3,d4(k))+coef*(xx(3,d2(k))-xx(3,d4(k)))
359 ccc(1) = xx(1,d4(k))+coef*(xx(1,d3(k))-xx(1,d4(k)))
360 ccc(2) = xx(2,d4(k))+coef*(xx(2,d3(k))-xx(2,d4(k)))
361 ccc(3) = xx(3,d4(k))+coef*(xx(3,d3(k))-xx(3,d4(k)))
362 cg(1) = third*(aaa(1)+bbb(1)+ccc(1))
363 cg(2) = third*(aaa(2)+bbb(2)+ccc(2))
364 cg(3) = third*(aaa(3)+bbb(3)+ccc(3))
370 l12(1,1) = fourth*(three*aaa(1)+bbb(1))
371 l12(2,1) = fourth*(three*aaa(2)+bbb(2))
372 l12(3,1) = fourth*(three*aaa(3)+bbb(3))
373 l12(1,2) = half*(aaa(1)+bbb(1))
374 l12(2,2) = half*(aaa(2)+bbb(2))
375 l12(3,2) = half*(aaa(3)+bbb(3))
376 l12(1,3) = fourth*(aaa(1)+three*bbb(1))
377 l12(2,3) = fourth*(aaa(2)+three*bbb(2))
378 l12(3,3) = fourth*(aaa(3)+three*bbb(3))
379 l23(1,1) = fourth*(three*bbb(1)+ccc(1))
380 l23(2,1) = fourth*(three*bbb(2)+ccc(2))
381 l23(3,1) = fourth*(three*bbb(3)+ccc(3))
382 l23(1,2) = half*(bbb(1)+ccc(1))
383 l23(2,2) = half*(bbb(2)+ccc(2))
384 l23(3,2) = half*(bbb(3)+ccc(3))
385 l23(1,3) = fourth*(bbb(1)+three*ccc(1))
386 l23(2,3) = fourth*(bbb(2)+three*ccc(2))
387 l23(3,3) = fourth*(bbb(3)+three*ccc(3))
388 l31(1,1) = fourth*(three*ccc(1)+aaa(1))
389 l31(2,1) = fourth*(three*ccc(2)+aaa(2))
390 l31(3,1) = fourth*(three*ccc(3)+aaa(3))
391 l31(1,2) = half*(ccc(1)+aaa(1))
392 l31(2,2) = half*(ccc(2)+aaa(2))
393 l31(3,2) = half*(ccc(3)+aaa(3))
394 l31(1,3) = fourth*(ccc(1)+three*aaa(1))
395 l31(2,3) = fourth*(ccc(2)+three*aaa(2))
396 l31(3,3) = fourth*(ccc(3)+three*aaa(3))
397 ll(1,1) = half*(l12(1,2)+l31(1,2))
398 ll(2,1) = half*(l12(2,2)+l31(2,2))
399 ll(3,1) = half*(l12(3,2)+l31(3,2))
400 ll(1,2) = half*(l12(1,2)+l23(1,2))
401 ll(2,2) = half*(l12(2,2)+l23(2,2))
402 ll(3,2) = half*(l12(3,2)+l23(3,2))
403 ll(1,3) = half*(l23(1,2)+l12(1,2))
404 ll(2,3) = half*(l23(2,2)+l12(2,2))
405 ll(3,3) = half*(l23(3,2)+l12(3,2))
407 xk0(npoint) = third*(aaa(1)+l12(1,1)+l31(1,3))
408 yk0(npoint) = third*(aaa(2)+l12(2,1)+l31(2,3))
409 zk0(npoint) = third*(aaa(3)+l12(3,1)+l31(3,3))
411 xk0(npoint) = third*(bbb(1)+l12(1,3)+l23(1,1))
412 yk0(npoint) = third*(bbb(2)+l12(2,3)+l23(2,1))
413 zk0(npoint) = third*(bbb(3)+l12(3,3)+l23(3,1))
415 xk0(npoint) = third*(ccc(1)+l23(1,3)+l31(1,1))
416 yk0(npoint) = third*(ccc(2)+l23(2,3)+l31(2,1))
417 zk0(npoint) = third*(ccc(3)+l23(3,3)+l31(3,1))
419 xk0(npoint) = third*(ll(1,1)+l12(1,1)+l31(1,3))
420 yk0(npoint) = third*(ll(2,1)+l12(2,1)+l31(2,3))
421 zk0(npoint) = third*(ll(3,1)+l12(3,1)+l31(3,3))
423 xk0(npoint) = third*(ll(1,2)+l12(1,3)+l23(1,1))
424 yk0(npoint) = third*(ll(2,2)+l12(2,3)+l23(2,1))
425 zk0(npoint) = third*(ll(3,2)+l12(3,3)+l23(3,1))
427 xk0(npoint) = third*(ll(1,3)+l23(1,3)+l31(1,1))
428 yk0(npoint) = third*(ll(2,3)+l23(2,3)+l31(2,1))
429 zk0(npoint) = third*(ll(3,3)+l23(3,3)+l31(3,1))
431 xk0(npoint) = third*(ll(1,1)+l12(1,1)+l12(1,2))
432 yk0(npoint) = third*(ll(2,1)+l12(2,1)+l12(2,2))
433 zk0(npoint) = third*(ll(3,1)+l12(3,1)+l12(3,2))
435 xk0(npoint) = third*(ll(1,2)+l12(1,2)+l12(1,3))
436 yk0(npoint) = third*(ll(2,2)+l12(2,2)+l12(2,3))
437 zk0(npoint) = third*(ll(3,2)+l12(3,2)+l12(3,3))
439 xk0(npoint) = third*(ll(1,2)+l23(1,1)+l23(1,2))
440 yk0(npoint) = third*(ll(2,2)+l23(2,1)+l23(2,2))
441 zk0(npoint) = third*(ll(3,2)+l23(3,1)+l23(3,2))
443 xk0(npoint) = third*(ll(1,3)+l23(1,2)+l23(1,3))
444 yk0(npoint) = third*(ll(2,3)+l23(2,2)+l23(2,3))
445 zk0(npoint) = third*(ll(3,3)+l23(3,2)+l23(3,3))
447 xk0(npoint) = third*(ll(1,3)+l31(1,1)+l31(1,2))
448 yk0(npoint) = third*(ll(2,3)+l31(2,1)+l31(2,2))
449 zk0(npoint) = third*(ll(3,3)+l31(3,1)+l31(3,2))
451 xk0(npoint) = third*(ll(1,1)+l31(1,2)+l31(1,3))
452 yk0(npoint) = third*(ll(2,1)+l31(2,2)+l31(2,3))
453 zk0(npoint) = third*(ll(3,1)+l31(3,2)+l31(3,3))
455 xk0(npoint) = third*(ll(1,1)+ll(1,2)+l12(1,2))
456 yk0(npoint) = third*(ll(2,1)+ll(2,2)+l12(2,2))
457 zk0(npoint) = third*(ll(3,1)+ll(3,2)+l12(3,2))
459 xk0(npoint) = third*(ll(1,2)+ll(1,3)+l23(1,2))
460 yk0(npoint) = third*(ll(2,2)+ll(2,3)+l23(2,2))
461 zk0(npoint) = third*(ll(3,2)+ll(3,3)+l23(3,2))
463 xk0(npoint) = third*(ll(1,3)+ll(1,1)+l31(1,2))
464 yk0(npoint) = third*(ll(2,3)+ll(2,1)+l31(2,2))
465 zk0(npoint) = third*(ll(3,3)+ll(3,1)+l31(3,2))
476 ELSEIF (isolnod == 8)
THEN
504 IF (ipart_(i) /= idp) cycle
514 xmin=
min(xmin,xx(1,j))
515 ymin=
min(ymin,xx(2,j))
516 zmin=
min(zmin,xx(3,j))
517 xmax=
max(xmax,xx(1,j))
519 zmax=
max(zmax,xx(3,j))
522 dx = (xmax-xmin)/float(ntrace0)
523 dy = (
ymax-ymin)/float(ntrace0)
524 dz = (zmax-zmin)/float(ntrace0)
530 xk(1) = xmin + dx*half
531 yk(1) = ymin + dy*half
532 zk(1) = zmin + dz*half
535 xk(k1) = xk(k1-1) + dx
536 yk(k1) = yk(k1-1) + dy
537 zk(k1) = zk(k1-1) + dz
554 IF (isolnod == 4 .OR. n2d/=0)
THEN
556 ELSEIF (isolnod == 8)
THEN
562 IF (ipart_(i) /= idp) cycle
569 IF(surf_type == 101)
THEN
583 skw(4)=bufsf(iad0+10)
584 skw(5)=bufsf(iad0+11)
585 skw(6)=bufsf(iad0+12)
586 skw(7)=bufsf(iad0+13)
587 skw(8)=bufsf(iad0+14)
588 skw(9)=bufsf(iad0+15)
591 x_prime = skw(1)*(xs(ip,i)-xg) + skw(4)*(ys(ip,i)-yg) + skw(7)*(zs(ip,i)-zg)
592 y_prime = skw(2)*(xs(ip,i)-xg) + skw(5)*(ys(ip,i)-yg) + skw(8)*(zs(ip,i)-zg)
593 z_prime = skw(3)*(xs(ip,i)-xg) + skw(6)*(ys(ip,i)-yg) + skw(9)*(zs(ip,i)-zg)
594 tmp(1)= abs(x_prime)/aa
595 tmp(2)= abs(y_prime)/bb
596 tmp(3)= abs(z_prime)/cc
597 IF(tmp(1)/=zero)tmp(1)= exp(dgr*log(tmp(1)))
598 IF(tmp(2)/=zero)tmp(2)= exp(dgr*log(tmp(2)))
599 IF(tmp(3)/=zero)tmp(3)= exp(dgr*log(tmp(3)))
600 dist = (tmp(1)+tmp(2)+tmp(3))
601 disp(ip,i) = one-dist
603 ELSEIF (surf_type == 200)
THEN
620 dist = aa*(xs(ip,i)-xp1)+bb*(ys(ip,i)-yp1)+cc*(zs(ip,i)-zp1)
621 tmpsum = sqrt(aa*aa+bb*bb+cc*cc)
622 tmpsum = one/
max(em30,tmpsum)
629 IF (isolnod == 4)
THEN
635 ELSEIF (isolnod == 8)
THEN
653 ELSEIF(ityp == 2)
THEN
667 nsh = nsoltosf(idc,n)
671 DO jj=1,knod2surf(nsh)
674 ipl = inod2surf(jj,nsh)
679 isurf = segtosurf(ipl)
680 ipl = ipl - swiftsurf(isurf)
681 IF (ipl <= 0 .OR. ipl > nseg) cycle
683 ixpl(1) = igrsurf(isurf)%NODES(ipl,1)
684 ixpl(2) = igrsurf(isurf)%NODES(ipl,2)
685 ixpl(3) = igrsurf(isurf)%NODES(ipl,3)
686 ixpl(4) = igrsurf(isurf)%NODES(ipl,4)
688 xfas(1,1) = x(1,ixpl(1))
689 xfas(2,1) = x(2,ixpl(1))
690 xfas(3,1) = x(3,ixpl(1))
691 xfas(1,2) = x(1,ixpl(2))
692 xfas(2,2) = x(2,ixpl(2))
693 xfas(3,2) = x(3,ixpl(2))
694 xfas(1,3) = x(1,ixpl(3))
695 xfas(2,3) = x(2,ixpl(3))
696 xfas(3,3) = x(3,ixpl(3))
697 xfas(1,4) = x(1,ixpl(4))
698 xfas(2,4) = x(2,ixpl(4))
699 xfas(3,4) = x(3,ixpl(4))
703 x0 = xs(ip,i) - xfas(1,k)
704 y0 = ys(ip,i) - xfas(2,k)
705 z0 = zs(ip,i) - xfas(3,k)
706 dist = x0*x0 + y0*y0 + z0*z0
708 IF (dist < dist_old .and. dist > em10)
THEN
716 IF (inod == 0)
GOTO 122
718 IF (dist_old == ep20) dist_old = zero
719 disp(ip,i) = dist_old
727 . inod ,inod2surf ,knod2surf ,nnod2surf ,x ,
728 . xn ,dist ,nseg ,surf_eltyp,nod_normal,
729 . surf_nodes,swiftsurf ,idsurf ,segtosurf )
735 jmid_old = inphase(ip,i)
736 IF (disp(ip,i) > zero)
THEN
737 tracep(i) = tracep(i) + 1
739 IF (jmid_old /= jmid)
THEN
741 nbip(jmid_old,i) = nbip(jmid_old,i) - 1
742 nbip(jmid,i) = nbip(jmid,i) + 1
745 ELSEIF (disp(ip,i) < zero)
THEN
746 tracen(i) = tracen(i) + 1
748 IF (jmid_old /= jmid)
THEN
750 nbip(jmid_old,i) = nbip(jmid_old,i) - 1
751 nbip(jmid,i) = nbip(jmid,i) + 1
754 ELSEIF (disp(ip,i) == zero .and. jmid /= jmid_old)
THEN
756 nbip(jmid_old,i) = nbip(jmid_old,i) - 1
764 IF (jmid_old > 0)
THEN
765 IF(nbip(jmid_old,i) < 0) nbip(jmid_old,i) = 0
769 nphase = iphase(nbsubmat+1,i)
772 IF (jmid /= iphase(j,i)) ok = ok + 1
777 iphase(nbsubmat+1,i) = k
780 IF (tracep(i) <= 0 .and. tracen(i) > 0)
THEN
782 ELSEIF (tracep(i) > 0 .and. tracen(i) <= 0)
THEN
790 IF (ipart_(i) /= idp) cycle
791 IF (full(i) == 1 .and. ifill == 0)
THEN
792 kvol_bak(1:nbsubmat) = kvol(1:nbsubmat,i)
799 iphase(nbsubmat+1,i) = 1
800 nbip(jmid,i) = ntrace_tot
804 IF(icumu == 0)kvol(jmid,i)=zero
805 kvol(jmid,i)= kvol(jmid,i)+fill_ratio
809 sumvf = sum(kvol(1:nbsubmat, i))
813 isubmat_to_substract = inivol(i_inivol)%CONTAINER(idc-1)%SUBMAT_ID
814 vf_to_substract = sumvf-one
815 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
816 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
819 isubmat_to_substract = maxloc(kvol_bak,1)
820 vf_to_substract = sumvf-one
821 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
822 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
826 ELSEIF (full(i) == -1 .and. ifill == 1)
THEN
827 kvol_bak(1:nbsubmat) = kvol(1:nbsubmat,i)
830 IF(icumu == 0)kvol(j,i) = zero
834 iphase(nbsubmat+1,i) = 1
835 nbip(jmid,i) = ntrace_tot
839 IF(icumu == 0)kvol(jmid,i)=zero
840 kvol(jmid,i)= kvol(jmid,i)+fill_ratio
843 sumvf = sum(kvol(1:nbsubmat, i))
847 isubmat_to_substract = inivol(i_inivol)%CONTAINER(idc-1)%SUBMAT_ID
848 vf_to_substract = sumvf-one
849 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
850 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
853 isubmat_to_substract = maxloc(kvol_bak,1)
854 vf_to_substract = sumvf-one
855 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
856 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
860 ELSEIF (full(i) == 2)
THEN
866 DO j=1,iphase(nbsubmat+1,i)
869 IF (nbip(iph,i) == 0) iphase(j,i) = 0
875 DO j=1,iphase(nbsubmat+1,i)
876 IF (iphase(j,i) /= 0)
THEN
879 buffill1(k) = iphase(j,i)
880 buffill2(k,i)= nbip(iph,i)
884 IF (iphase(nbsubmat+1,i) > 1)
THEN
891 iphase(j,i) = buffill1(j)
893 nbip(iph,i) = buffill2(j,i)
895 iphase(nbsubmat+1,i) = k
904 IF (ipart_(i) /= idp) cycle
906 IF (iphase(nbsubmat+1,i) > 1)
THEN
907 DO j=1,iphase(nbsubmat+1,i)
909 nip = nip + nbip(iph,i)
911 kvol_bak(1:nbsubmat) = kvol(1:nbsubmat,i)
912 DO j=1,iphase(nbsubmat+1,i)
914 IF(icumu == 0)kvol(iph,i)=zero
915 kvol(iph,i)= kvol(iph,i)+fill_ratio*float(nbip(iph,i))/float(nip)
918 sumvf = sum(kvol(1:nbsubmat, i))
919 IF (sumvf > one )
THEN
922 isubmat_to_substract = inivol(i_inivol)%CONTAINER(idc-1)%SUBMAT_ID
923 vf_to_substract = sumvf-one
924 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
925 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract
928 isubmat_to_substract = maxloc(kvol_bak,1)
929 vf_to_substract = sumvf-one
930 vf_to_substract =
min(vf_to_substract, kvol(isubmat_to_substract,i))
931 kvol(isubmat_to_substract,i) = kvol(isubmat_to_substract,i) - vf_to_substract