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"
111 . NRTM,NRTS,MULTIMP,IADFIN,IGAP,
112 . NSN,NOINT,ITAB(*),NBX,NBY,NBZ,IAUTO,
113 . IRECTS(2,NRTS),IRECTM(2,NRTM),FLAGREMNODE
115 INTEGER,
INTENT(INOUT) ::
116 . CAND_S(*),CAND_M(*),ADDCM(*),CHAINE(2,*),
117 . VOXEL(1:NBX+2,1:NBY+2,1:NBZ+2), I_MEM,II_STOK,
118 . kremnode(*),remnode(*)
122 . gapmin, drad, marge, tzinf, dgapload,
123 . gap_s(*), gap_m(*), gap_s_l(*), gap_m_l(*)
129 . N1,N2,MM1,MM2, iN1, iN2, iM1, iM2, K,L,
130 . PROV_S(2*MVSIZ),PROV_M(2*MVSIZ),
131 . IX1,IY1,IZ1,,IY2,IZ2,
132 . IX,IY,IZ, FIRST_ADD,
133 . , I_STOK_BAK, IEDG,
134 . PREV_ADD, CHAIN_ADD, CURRENT_ADD,
135 . nedg, deja , max_add ,ii_stok0, m
138 . xmin, xmax,ymin,
ymax,zmin, zmax,
141 . xminb,yminb,zminb,xmaxb,ymaxb,zmaxb
142 my_real,
dimension(:),
ALLOCATABLE :: xmax_edgs, xmin_edgs, ymax_edgs, ymin_edgs, zmax_edgs, zmin_edgs
143 my_real,
dimension(:),
ALLOCATABLE :: xmax_edgm, xmin_edgm, ymax_edgm, ymin_edgm, zmax_edgm, zmin_edgm
144 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGREMLINE
146 ALLOCATE(XMAX_EDGS(NRTS), XMIN_EDGS(NRTS), YMAX_EDGS(NRTS))
147 ALLOCATE(YMIN_EDGS(NRTS), ZMAX_EDGS(NRTS), ZMIN_EDGS(NRTS))
148 ALLOCATE(XMAX_EDGM(NRTM), XMIN_EDGM(NRTM), YMAX_EDGM(NRTM))
149 ALLOCATE(YMIN_EDGM(NRTM), ZMAX_EDGM(NRTM), ZMIN_EDGM(NRTM))
151 IF(flagremnode==2)
THEN
152 ALLOCATE(tagremline(nrts))
153 tagremline(1:nrts) = 0
168 max_add =
max(1,4*(nrts))
174 IF(nrtm==0.OR.nrts==0)
THEN
225 xmax_edgs(i)=
max(xx1,xx2);
IF(xmax_edgs(i) < xmin) cycle
226 xmin_edgs(i)=
min(xx1,xx2);
IF(xmin_edgs(i) > xmax) cycle
229 ymax_edgs(i)=
max(yy1,yy2);
IF(ymax_edgs(i) < ymin) cycle
230 ymin_edgs(i)=
min(yy1,yy2);
IF(ymin_edgs(i) >
ymax) cycle
233 zmax_edgs(i)=
max(zz1,zz2);
IF(zmax_edgs(i) < zmin) cycle
234 zmin_edgs(i)=
min(zz1,zz2);
IF(zmin_edgs(i) > zmax) cycle
240 ix1=int(nbx*(xmin_edgs(i)-xminb)/(xmaxb-xminb))
241 iy1=int(nby*(ymin_edgs(i)-yminb)/(ymaxb-yminb))
242 iz1=int(nbz*(zmin_edgs(i)-zminb)/(zmaxb-zminb))
247 ix2=int(nbx*(xmax_edgs(i)-xminb)/(xmaxb-xminb))
248 iy2=int(nby*(ymax_edgs(i)-yminb)/(ymaxb-yminb))
249 iz2=int(nbz*(zmax_edgs(i)-zminb)/(zmaxb-zminb))
295 first_add = voxel(ix,iy,iz)
297 IF(first_add == 0)
THEN
299 voxel(ix,iy,iz) = current_add
312 current_add = current_add+1
314 IF( current_add>=max_add)
THEN
317 max_add = 2 * max_add
357 xmax_edgm(iedg)=
max(xx1,xx2)+tzinf
358 xmin_edgm(iedg)=
min(xx1,xx2)-tzinf
361 ymax_edgm(iedg)=
max(yy1,yy2)+tzinf
362 ymin_edgm(iedg)=
min(yy1,yy2)-tzinf
365 zmax_edgm(iedg)=
max(zz1,zz2)+tzinf
366 zmin_edgm(iedg)=
min(zz1,zz2)-tzinf
372 ix1=int(nbx*(xmin_edgm(iedg)-aaa-xminb)/(xmaxb-xminb))
373 iy1=int(nby*(ymin_edgm(iedg)-aaa-yminb)/(ymaxb-yminb))
374 iz1=int(nbz*(zmin_edgm(iedg)-aaa-zminb)/(zmaxb-zminb))
379 ix2=int(nbx*(xmax_edgm(iedg)+aaa-xminb)/(xmaxb-xminb))
380 iy2=int(nby*(ymax_edgm(iedg)+aaa-yminb)/(ymaxb-yminb))
381 iz2=int(nbz*(zmax_edgm(iedg)+aaa-zminb)/(zmaxb-zminb))
390 IF(flagremnode==2)
THEN
392 l = kremnode(iedg+1)-1
394 tagremline(remnode(m)) = 1
404 chain_add = voxel(ix,iy,iz)
405 DO WHILE(chain_add /= 0)
409 ss1=itab(irects(1,i))
410 ss2=itab(irects(2,i))
412 IF( (ss1==mm1).OR.(ss1==mm2).OR.
413 . (ss2==mm1).OR.(ss2==mm2) )
THEN
419 IF(iauto==1 .AND. mm1<ss1 )
THEN
425 IF(flagremnode==2)
THEN
426 IF(tagremline(i)==1)
THEN
434 prov_m(i_stok) = iedg
436 IF(deja==0) nedg = nedg + 1
440 IF(i_stok>=nvsiz)
THEN
442 1 nvsiz,irects,irectm,x ,ii_stok ,
443 2 cand_s,cand_m,nsn ,noint ,marge ,
444 3 i_mem ,prov_s,prov_m,multimp,addcm ,
445 4 chaine,iadfin,gapmin,drad ,igap ,
446 5 gap_s ,gap_m ,gap_s_l,gap_m_l,dgapload)
452 i_stok = i_stok-nvsiz
454 prov_s(j) = prov_s(j+nvsiz)
455 prov_m(j) = prov_m(j+nvsiz)
466 IF(flagremnode==2)
THEN
468 l = kremnode(iedg+1)-1
470 tagremline(remnode(m)) = 0
482 1 i_stok,irects,irectm,x ,ii_stok,
483 2 cand_s,cand_m,nsn ,noint ,marge ,
484 3 i_mem ,prov_s,prov_m,multimp,addcm ,
485 4 chaine,iadfin,gapmin,drad ,igap ,
486 5 gap_s ,gap_m ,gap_s_l,gap_m_l,dgapload)
502 1 (/min_ix, min_iy, min_iz/),
503 . (/max_ix, max_iy, max_iz/),
504 2 nbx, nby, nbz, voxel )
506 DEALLOCATE(lchain_next)
507 DEALLOCATE(lchain_elem)
508 DEALLOCATE(lchain_last)
509 IF(flagremnode==2)
DEALLOCATE(tagremline)
511 DEALLOCATE(xmax_edgs, xmin_edgs, ymax_edgs)
512 DEALLOCATE(ymin_edgs, zmax_edgs, zmin_edgs)
513 DEALLOCATE(xmax_edgm, xmin_edgm, ymax_edgm)
514 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)