34 2 IRECTS,IRECTM,X ,NRTM ,NRTSR,
35 3 XYZM ,I_ADD ,MAXSIZ,II_STOK ,CAND_S,
36 4 CAND_M,NSN4 ,NOINT ,TZINF ,MAXBOX,
37 5 MINBOX,I_MEM ,NB_N_B,I_ADD_MAX,ESHIFT,
38 6 ADDCM ,CHAINE,NRTS ,ITAB ,NB_OLD,
39 7 STFS ,STFM ,IAUTO ,NIN ,IFPEN ,
48#include "implicit_f.inc"
112 INTEGER NRTM,NRTSR,I_ADD,MAXSIZ,I_MEM,ESHIFT,NRTS,
113 . NSN4,NB_N_B,NOINT,I_ADD_MAX,IAUTO ,NIN,
114 . ADD(2,*),IRECTS(2,*),IRECTM(2,*),
115 . CAND_S(*),CAND_M(*),ADDCM(*),CHAINE(2,*),ITAB(*),
116 . NB_OLD(2,*),IFPEN(*),IFORM,II_STOK
119 . X(3,*),XYZM(6,*),STFS(*),STFM(*),
120 . tzinf,maxbox,minbox
124 INTEGER NB_NCN,NB_NCN1,NB_ECN,ADDNN,ADDNE,I,J,DIR,NN1,NN2,
125 . N1,N2,NN,NE,K,L,NCAND_PROV,J_STOK,NI,
126 . istop,nb_ecn1,prov_s(2*mvsiz),prov_m(2*mvsiz),
127 . nb_nc_old, nb_ec_old, nb_nc, nb_ec,jj,kk,
130 . bpe(nrtm+100),pe(maxsiz),bpn(nrts+nrtsr+100),pn(maxsiz)
133 . dx,dy,dz,dsup,seuil, xx1, xx2,
134 . xmin, xmax,ymin,
ymax,zmin, zmax,
135 . xmins,ymins,zmins,xmaxs,ymaxs,zmaxs,
136 . yy1,yy2,zz1,zz2,dmx,dmy,dmz,
137 . xy1,xy2,xz1,xz2,ximin,ximax,xjmin,xjmax,xkmin,xkmax,
138 . timin,timax,tjmin,tjmax,tkmin,tkmax,tsmin,tsmax,
139 . txmin, txmax,tymin, tymax,tzmin, tzmax
159 IF(stfm(i)/=zero)
THEN
171 IF(stfs(i)/=zero)
THEN
174 xmins =
min(x(1,n1),x(1,n2))
175 ymins =
min(x(2,n1),x(2,n2))
176 zmins =
min(x(3,n1),x(3,n2))
177 xmaxs =
max(x(1,n1),x(1,n2))
178 ymaxs =
max(x(2,n1),x(2,n2))
179 zmaxs =
max(x(3,n1),x(3,n2))
180 IF(xmaxs>=xmin.AND.xmins<=xmax.AND.
181 . ymaxs>=ymin.AND.ymins<=
ymax.AND.
182 . zmaxs>=zmin.AND.zmins<=zmax)
THEN
191 DO i = nrts+1, nrts+nrtsr
207 dx = xyzm(4,i_add) - xyzm(1,i_add)
208 dy = xyzm(5,i_add) - xyzm(2,i_add)
209 dz = xyzm(6,i_add) - xyzm(3,i_add)
236 xx1=x(1, irectm(1,ne))
237 xx2=x(1, irectm(2,ne))
238 xmin=
min(xmin,xx1,xx2)
239 xmax=
max(xmax,xx1,xx2)
241 yy1=x(2, irectm(1,ne))
242 yy2=x(2, irectm(2,ne))
243 ymin=
min(ymin,yy1,yy2)
246 zz1=x(3, irectm(1,ne))
247 zz2=x(3, irectm(2,ne))
248 zmin=
min(zmin,zz1,zz2)
249 zmax=
max(zmax,zz1,zz2)
299 xmin =
max(xmin - tzinf , xyzm(1,i_add))
300 ymin =
max(ymin - tzinf , xyzm(2,i_add))
301 zmin =
max(zmin - tzinf , xyzm(3,i_add))
302 xmax =
min(xmax + tzinf , xyzm(4,i_add))
304 zmax =
min(zmax + tzinf , xyzm(6,i_add))
317 dsup =
max(dmx,dmy,dmz)
323 seuil = (ymin+
ymax)*0.5
336 ELSE IF(dmz==dsup)
THEN
340 seuil = (zmin+zmax)*0.5
357 seuil = (xmin+xmax)*0.5
372 tsmin = seuil - tzinf
373 tsmax = seuil + tzinf
397 xx1=x(dir,irects(1,nn))
398 xx2=x(dir,irects(2,nn))
399 xy1=x(jj, irects(1,nn))
400 xy2=x(jj, irects(2,nn))
401 xz1=x(kk, irects(1,nn))
402 xz2=x(kk, irects(2,nn))
414 IF(xmin<seuil.AND.xmax>=ximin)
THEN
415 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
416 . ximin,seuil,xjmin,xjmax,xkmin,xkmax))
THEN
418 nb_ncn1 = nb_ncn1 + 1
427 xx1=x(dir,irects(1,nn))
428 xx2=x(dir,irects(2,nn))
429 xy1=x(jj, irects(1,nn))
430 xy2=x(jj, irects(2,nn))
431 xz1=x(kk, irects(1,nn))
432 xz2=x(kk, irects(2,nn))
444 IF(xmax>=seuil.AND.xmin<=ximax)
THEN
445 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
446 . seuil,ximax,xjmin,xjmax,xkmin,xkmax))
THEN
485 xx1=x(dir, irectm(1,ne))
486 xx2=x(dir, irectm(2,ne))
487 IF(
max(xx1,xx2)>=tsmin)
THEN
488 xy1=x(jj, irectm(1,ne))
489 xy2=x(jj, irectm(2,ne))
490 xz1=x(kk, irectm(1,ne))
491 xz2=x(kk, irectm(2,ne))
492 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
493 . tsmin,timax,tjmin,tjmax,tkmin,tkmax))
THEN
500 ELSEIF(nb_ncn==0)
THEN
503 xx1=x(dir, irectm(1,ne))
504 xx2=x(dir, irectm(2,ne))
505 IF(
min(xx1,xx2)<tsmax)
THEN
506 xy1=x(jj, irectm(1,ne))
507 xy2=x(jj, irectm(2,ne))
508 xz1=x(kk, irectm(1,ne))
509 xz2=x(kk, irectm(2,ne))
510 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
511 . timin,tsmax,tjmin,tjmax,tkmin,tkmax))
THEN
522 xx1=x(dir, irectm(1,ne))
523 xx2=x(dir, irectm(2,ne))
524 IF(
min(xx1,xx2)<tsmax)
THEN
525 xy1=x(jj, irectm(1,ne))
526 xy2=x(jj, irectm(2,ne))
527 xz1=x(kk, irectm(1,ne))
528 xz2=x(kk, irectm(2,ne))
529 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
530 . timin,tsmax,tjmin,tjmax,tkmin,tkmax))
THEN
540 xx1=x(dir, irectm(1,ne))
541 xx2=x(dir, irectm(2,ne))
542 IF(
max(xx1,xx2)>=tsmin)
THEN
543 xy1=x(jj, irectm(1,ne))
544 xy2=x(jj, irectm(2,ne))
545 xz1=x(kk, irectm(1,ne))
546 xz2=x(kk, irectm(2,ne))
547 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
548 . tsmin,timax,tjmin,tjmax,tkmin,tkmax))
THEN
559 add(1,i_add+1) = addnn
560 add(2,i_add+1) = addne
567 xyzm(1,i_add+1) = xyzm(1,i_add)
568 xyzm(2,i_add+1) = xyzm(2,i_add)
569 xyzm(3,i_add+1) = xyzm(3,i_add)
570 xyzm(4,i_add+1) = xyzm(4,i_add)
571 xyzm(5,i_add+1) = xyzm(5,i_add)
572 xyzm(6,i_add+1) = xyzm(6,i_add)
574 xyzm(dir ,i_add) = ximin
575 xyzm(dir+3,i_add) = seuil
576 xyzm(dir ,i_add+1) = seuil
577 xyzm(dir+3,i_add+1) = ximax
579 nb_old(1,i_add)=nb_nc
580 nb_old(2,i_add)=nb_ec
581 nb_old(1,i_add+1)=nb_nc
582 nb_old(2,i_add+1)=nb_ec
588 IF(i_add+1>=i_add_max)
THEN
605 IF(add(1,i_add)+nb_nc>maxsiz)
THEN
610 IF(add(2,i_add)+nb_ec>maxsiz)
THEN
618 IF(nb_ec/=0.AND.nb_nc/=0)
THEN
620 dx = xyzm(4,i_add) - xyzm(1,i_add)
621 dy = xyzm(5,i_add) - xyzm(2,i_add)
622 dz = xyzm(6,i_add) - xyzm(3,i_add)
629 IF(nb_ec+nb_nc<=128)
THEN
630 ncand_prov = nb_ec*nb_nc
635 nb_nc_old = nb_old(1,i_add)
636 nb_ec_old = nb_old(2,i_add)
639 . nb_nc<=nb_n_b.OR.nb_ec<=nb_n_b.OR.
640 . ncand_prov<=128.OR.(nb_ec==nb_ec_old
641 . .AND.nb_nc==nb_nc_old))
THEN
643 ncand_prov = nb_ec*nb_nc
644 DO k=1,ncand_prov,nvsiz
645 DO l=k,
min(k-1+nvsiz,ncand_prov)
655 IF(iauto==0 .OR. itab(n1)>itab(nn1) )
THEN
656 IF(nn1/=n1.AND.nn1/=n2.AND.
657 . nn2/=n1.AND.nn2/=n2)
THEN
669 IF(iauto==0 .OR. n1>nn1 )
THEN
670 IF(nn1/=n1.AND.nn1/=n2.AND.
671 . nn2/=n1.AND.nn2/=n2)
THEN
679 IF(j_stok>=nvsiz)
THEN
681 1 nvsiz,irects,irectm,x ,ii_stok,
682 2 cand_s,cand_m,nsn4 ,noint ,tzinf ,
683 3 i_mem ,prov_s,prov_m,eshift,addcm ,
684 4 chaine,nrts ,itab ,ifpen ,iform )
686 j_stok = j_stok-nvsiz
687#include "vectorize.inc"
689 prov_s(j) = prov_s(j+nvsiz)
690 prov_m(j) = prov_m(j+nvsiz)
711 CALL i7dstk(nb_nc,nb_ec,add(1,i_add),bpn,pn,bpe,pe)
720 1 j_stok,irects,irectm,x ,ii_stok,
721 2 cand_s,cand_m,nsn4 ,noint ,tzinf ,
722 3 i_mem ,prov_s,prov_m,eshift,addcm ,
723 4 chaine,nrts ,itab ,ifpen ,iform )