37 1 IRECTS, IRECTM , X , NRTM ,
38 2 XYZM , II_STOK, CAND_S, CAND_M ,NSN ,
39 3 NOINT , TZINF , I_MEM , ADDCM , IADFIN ,
40 5 CHAINE, NRTS , ITAB , MULTIMP,
41 6 IAUTO , VOXEL , NBX , NBY ,NBZ ,
42 7 GAPMIN, DRAD , MARGE , GAP_S , GAP_M ,
43 8 GAP_S_L,GAP_M_L,IGAP ,FLAGREMNODE,KREMNODE,
54#include "implicit_f.inc"
113 . NRTM,NRTS,MULTIMP,IADFIN,IGAP,
114 . NSN,NOINT,ITAB(*),NBX,NBY,NBZ,IAUTO,
115 . IRECTS(2,NRTS),IRECTM(2,NRTM),FLAGREMNODE
117 INTEGER,
INTENT(INOUT) ::
118 . CAND_S(*),CAND_M(*),ADDCM(*),CHAINE(2,*),
119 . (1:NBX+2,1:+2,1:NBZ+2), ,II_STOK,
120 . kremnode(*),remnode(*)
124 . gapmin, drad, marge, tzinf, dgapload,
125 . gap_s(*), gap_m(*), gap_s_l(*), gap_m_l(*)
131 . N1,N2,MM1,MM2, , iN2, iM1, iM2, K,L,
132 . PROV_S(2*MVSIZ),PROV_M(2*MVSIZ),
133 . IX1,IY1,IZ1,IX2,IY2,IZ2,
135 . I_STOK, I_STOK_BAK, IEDG,
136 . PREV_ADD, CHAIN_ADD, CURRENT_ADD,
137 . nedg, deja , max_add ,ii_stok0, m
140 . xmin, xmax,ymin,
ymax,zmin, zmax,
143 . xminb,yminb,zminb,xmaxb,ymaxb,zmaxb
144 my_real,
dimension(:),
ALLOCATABLE :: xmax_edgs, xmin_edgs, ymax_edgs, ymin_edgs, zmax_edgs, zmin_edgs
145 my_real,
dimension(:),
ALLOCATABLE :: xmax_edgm, xmin_edgm
146 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGREMLINE
148 ALLOCATE(XMAX_EDGS(NRTS), XMIN_EDGS(NRTS), YMAX_EDGS(NRTS))
149 ALLOCATE(YMIN_EDGS(NRTS), ZMAX_EDGS(NRTS), ZMIN_EDGS(NRTS))
150 (XMAX_EDGM(NRTM), XMIN_EDGM(NRTM), YMAX_EDGM(NRTM))
151 ALLOCATE(YMIN_EDGM(NRTM), ZMAX_EDGM(NRTM), ZMIN_EDGM(NRTM))
153 IF(flagremnode==2)
THEN
154 ALLOCATE(tagremline(nrts))
155 tagremline(1:nrts) = 0
170 max_add =
max(1,4*(nrts))
176 IF(nrtm==0.OR.nrts==0)
THEN
227 xmax_edgs(i)=
max(xx1,xx2);
IF(xmax_edgs(i) < xmin) cycle
228 xmin_edgs(i)=
min(xx1,xx2);
IF(xmin_edgs(i) > xmax) cycle
231 ymax_edgs(i)=
max(yy1,yy2);
IF(ymax_edgs(i) < ymin) cycle
232 ymin_edgs(i)=
min(yy1,yy2);
IF(ymin_edgs(i) >
ymax) cycle
235 zmax_edgs(i)=
max(zz1,zz2);
IF(zmax_edgs(i) < zmin) cycle
236 zmin_edgs(i)=
min(zz1,zz2);
IF(zmin_edgs(i) > zmax) cycle
242 ix1=int(nbx*(xmin_edgs(i)-xminb)/(xmaxb-xminb))
243 iy1=int(nby*(ymin_edgs(i)-yminb)/(ymaxb-yminb))
244 iz1=int(nbz*(zmin_edgs(i)-zminb)/(zmaxb-zminb))
249 ix2=int(nbx*(xmax_edgs(i)-xminb)/(xmaxb-xminb))
250 iy2=int(nby*(ymax_edgs(i)-yminb)/(ymaxb-yminb))
251 iz2=int(nbz*(zmax_edgs(i)-zminb)/(zmaxb-zminb))
297 first_add = voxel(ix,iy,iz)
299 IF(first_add == 0)
THEN
301 voxel(ix,iy,iz) = current_add
314 current_add = current_add+1
316 IF( current_add>=max_add)
THEN
319 max_add = 2 * max_add
359 xmax_edgm(iedg)=
max(xx1,xx2)+tzinf
360 xmin_edgm(iedg)=
min(xx1,xx2)-tzinf
363 ymax_edgm(iedg)=
max(yy1,yy2)+tzinf
364 ymin_edgm(iedg)=
min(yy1,yy2)-tzinf
367 zmax_edgm(iedg)=
max(zz1,zz2)+tzinf
368 zmin_edgm(iedg)=
min(zz1,zz2)-tzinf
374 ix1=int(nbx*(xmin_edgm(iedg)-aaa-xminb)/(xmaxb-xminb))
375 iy1=int(nby*(ymin_edgm(iedg)-aaa-yminb)/(ymaxb-yminb))
376 iz1=int(nbz*(zmin_edgm(iedg)-aaa-zminb)/(zmaxb-zminb))
381 ix2=int(nbx*(xmax_edgm(iedg)+aaa-xminb)/(xmaxb-xminb))
382 iy2=int(nby*(ymax_edgm(iedg)+aaa-yminb)/(ymaxb-yminb))
383 iz2=int(nbz*(zmax_edgm(iedg)+aaa-zminb)/(zmaxb-zminb))
392 IF(flagremnode==2)
THEN
394 l = kremnode(iedg+1)-1
396 tagremline(remnode(m)) = 1
400 !on parcours a nouveau les edges secnd dans le voisinage de l edge
main iedg
407 chain_add = voxel(ix,iy,iz)
408 DO WHILE(chain_add /= 0
412 ss1=itab(irects(1,i))
413 ss2=itab(irects(2,i))
415 IF( (ss1==mm1).OR.(ss1==mm2).OR.
416 . (ss2==mm1).OR.(ss2==mm2) )
THEN
422 IF(iauto==1 .AND. mm1<ss1 )
THEN
428 IF(flagremnode==2)
THEN
429 IF(tagremline(i)==1)
THEN
437 prov_m(i_stok) = iedg
440 IF(deja==0) nedg = nedg + 1
444 IF(i_stok>=nvsiz)
THEN
446 1 nvsiz,irects,irectm,x ,ii_stok ,
447 2 cand_s,cand_m,nsn ,noint ,marge ,
448 3 i_mem ,prov_s,prov_m,multimp,addcm ,
449 4 chaine,iadfin,gapmin,drad ,igap ,
450 5 gap_s ,gap_m ,gap_s_l,gap_m_l,dgapload)
456 i_stok = i_stok-nvsiz
458 prov_s(j) = prov_s(j+nvsiz)
459 prov_m(j) = prov_m(j+nvsiz)
470 IF(flagremnode==2)
THEN
472 l = kremnode(iedg+1)-1
474 tagremline(remnode(m)) = 0
486 1 i_stok,irects,irectm,x ,ii_stok,
487 2 cand_s,cand_m,nsn ,noint ,marge ,
488 3 i_mem ,prov_s,prov_m,multimp,addcm ,
489 4 chaine,iadfin,gapmin,drad ,igap ,
490 5 gap_s ,gap_m ,gap_s_l,gap_m_l
506 1 (/min_ix, min_iy, min_iz/),
507 . (/max_ix, max_iy, max_iz/),
508 2 nbx, nby, nbz, voxel )
510 DEALLOCATE(lchain_next)
511 DEALLOCATE(lchain_elem)
512 DEALLOCATE(lchain_last)
513 IF(flagremnode==2)
DEALLOCATE(tagremline)
515 DEALLOCATE(xmax_edgs, xmin_edgs, ymax_edgs)
516 DEALLOCATE(ymin_edgs, zmax_edgs, zmin_edgs)
517 DEALLOCATE(xmax_edgm, xmin_edgm, ymax_edgm)
518 DEALLOCATE(ymin_edgm, zmax_edgm, zmin_edgm)
subroutine i11trivox1(irects, irectm, x, nrtm, xyzm, ii_stok, cand_s, cand_m, nsn, noint, tzinf, i_mem, addcm, iadfin, chaine, nrts, itab, multimp, iauto, voxel, nbx, nby, nbz, gapmin, drad, marge, gap_s, gap_m, gap_s_l, gap_m_l, igap, flagremnode, kremnode, remnode, dgapload)