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"
114 INTEGER NRTM,NRTSR,I_ADD,MAXSIZ,I_MEM,ESHIFT,NRTS,
115 . NSN4,NB_N_B,NOINT,I_ADD_MAX,IAUTO ,NIN,
116 . ADD(2,*),IRECTS(2,*),IRECTM(2,*),
117 . CAND_S(*),CAND_M(*),ADDCM(*),CHAINE(2,*),ITAB(*),
118 . NB_OLD(2,*),IFPEN(*),IFORM,II_STOK
121 . X(3,*),XYZM(6,*),STFS(*),STFM(*),
122 . tzinf,maxbox,minbox
126 INTEGER NB_NCN,NB_NCN1,NB_ECN,ADDNN,ADDNE,I,J,DIR,NN1,NN2,
127 . N1,N2,N3,N4,NN,NE,K_STOK,K,L,NCAND_PROV,J_STOK,NI,
128 . istop,nb_ecn1,prov_s(2*mvsiz),prov_m(2*mvsiz),
129 . nb_nc_old, nb_ec_old, nb_nc, nb_ec,jj,kk,
132 . bpe(nrtm+100),pe(maxsiz),bpn(nrts+nrtsr+100),pn(maxsiz)
135 . dx,dy,dz,dsup,seuil,seuils,seuili, xx1, xx2, xx3, xx4,
136 . xmin, xmax,ymin,
ymax,zmin, zmax, xx,yy,zz,
137 . xmins,ymins,zmins,xmaxs,ymaxs,zmaxs,
138 . yy1,yy2,zz1,zz2,dmx,dmy,dmz,
139 . xy1,xy2,xz1,xz2,ximin,ximax,xjmin,xjmax,xkmin,xkmax,
140 . timin,timax,tjmin,tjmax,tkmin,tkmax,tsmin,tsmax,
141 . txmin, txmax,tymin, tymax,tzmin, tzmax
161 IF(stfm(i)/=zero)
THEN
173 IF(stfs(i)/=zero)
THEN
176 xmins =
min(x(1,n1),x(1,n2))
177 ymins =
min(x(2,n1),x(2,n2))
178 zmins =
min(x(3,n1),x(3,n2))
179 xmaxs =
max(x(1,n1),x(1,n2))
180 ymaxs =
max(x(2,n1),x(2,n2))
181 zmaxs =
max(x(3,n1),x(3,n2))
182 IF(xmaxs>=xmin.AND.xmins<=xmax.AND.
183 . ymaxs>=ymin.AND.ymins<=
ymax.AND.
184 . zmaxs>=zmin.AND.zmins<=zmax)
THEN
193 DO i = nrts+1, nrts+nrtsr
209 dx = xyzm(4,i_add) - xyzm(1,i_add)
210 dy = xyzm(5,i_add) - xyzm(2,i_add)
211 dz = xyzm(6,i_add) - xyzm(3,i_add)
238 xx1=x(1, irectm(1,ne))
239 xx2=x(1, irectm(2,ne))
240 xmin=
min(xmin,xx1,xx2)
241 xmax=
max(xmax,xx1,xx2)
243 yy1=x(2, irectm(1,ne))
244 yy2=x(2, irectm(2,ne))
245 ymin=
min(ymin,yy1,yy2)
248 zz1=x(3, irectm(1,ne))
249 zz2=x(3, irectm(2,ne))
250 zmin=
min(zmin,zz1,zz2)
251 zmax=
max(zmax,zz1,zz2)
301 xmin =
max(xmin - tzinf , xyzm(1,i_add))
302 ymin =
max(ymin - tzinf , xyzm(2,i_add))
303 zmin =
max(zmin - tzinf , xyzm(3,i_add))
304 xmax =
min(xmax + tzinf , xyzm(4,i_add))
306 zmax =
min(zmax + tzinf , xyzm(6,i_add))
319 dsup =
max(dmx,dmy,dmz)
325 seuil = (ymin+
ymax)*0.5
338 ELSE IF(dmz==dsup)
THEN
342 seuil = (zmin+zmax)*0.5
359 seuil = (xmin+xmax)*0.5
374 tsmin = seuil - tzinf
375 tsmax = seuil + tzinf
399 xx1=x(dir,irects(1,nn))
400 xx2=x(dir,irects(2,nn))
401 xy1=x(jj, irects(1,nn))
402 xy2=x(jj, irects(2,nn))
403 xz1=x(kk, irects(1,nn))
404 xz2=x(kk, irects(2,nn))
416 IF(xmin<seuil.AND.xmax>=ximin)
THEN
417 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
418 . ximin,seuil,xjmin,xjmax,xkmin
THEN
420 nb_ncn1 = nb_ncn1 + 1
429 xx1=x(dir,irects(1,nn))
430 xx2=x(dir,irects(2,nn))
431 xy1=x(jj, irects(1,nn))
432 xy2=x(jj, irects(2,nn))
433 xz1=x(kk, irects(1,nn))
434 xz2=x(kk, irects(2,nn))
446 IF(xmax>=seuil.AND.xmin<=ximax)
THEN
447 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
448 . seuil,ximax,xjmin,xjmax,xkmin,xkmax))
THEN
487 xx1=x(dir, irectm(1,ne))
488 xx2=x(dir, irectm(2,ne))
489 IF(
max(xx1,xx2)>=tsmin)
THEN
490 xy1=x(jj, irectm(1,ne))
491 xy2=x(jj, irectm(2,ne))
492 xz1=x(kk, irectm(1,ne))
493 xz2=x(kk, irectm(2,ne))
494 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
495 . tsmin,timax,tjmin,tjmax,tkmin,tkmax))
THEN
502 ELSEIF(nb_ncn==0)
THEN
505 xx1=x(dir, irectm(1,ne))
506 xx2=x(dir, irectm(2,ne))
507 IF(
min(xx1,xx2)<tsmax)
THEN
508 xy1=x(jj, irectm(1,ne))
509 xy2=x(jj, irectm(2,ne))
510 xz1=x(kk, irectm(1,ne))
511 xz2=x(kk, irectm(2,ne))
512 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
513 . timin,tsmax,tjmin,tjmax,tkmin,tkmax))
THEN
524 xx1=x(dir, irectm(1,ne))
525 xx2=x(dir, irectm(2,ne))
526 IF(
min(xx1,xx2)<tsmax)
THEN
527 xy1=x(jj, irectm(1,ne))
528 xy2=x(jj, irectm(2,ne))
529 xz1=x(kk, irectm(1,ne))
530 xz2=x(kk, irectm(2,ne))
531 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
532 . timin,tsmax,tjmin,tjmax,tkmin,tkmax))
THEN
542 xx1=x(dir, irectm(1,ne))
543 xx2=x(dir, irectm(2,ne))
544 IF(
max(xx1,xx2)>=tsmin)
THEN
545 xy1=x(jj, irectm(1,ne))
546 xy2=x(jj, irectm(2,ne))
547 xz1=x(kk, irectm(1,ne))
548 xz2=x(kk, irectm(2,ne))
549 IF(i11insid(xx1,xx2,xy1,xy2,xz1,xz2,
550 . tsmin,timax,tjmin,tjmax,tkmin,tkmax))
THEN
561 add(1,i_add+1) = addnn
562 add(2,i_add+1) = addne
569 xyzm(1,i_add+1) = xyzm(1,i_add)
570 xyzm(2,i_add+1) = xyzm(2,i_add)
571 xyzm(3,i_add+1) = xyzm(3,i_add)
572 xyzm(4,i_add+1) = xyzm(4,i_add)
573 xyzm(5,i_add+1) = xyzm(5,i_add)
574 xyzm(6,i_add+1) = xyzm(6,i_add)
576 xyzm(dir ,i_add) = ximin
577 xyzm(dir+3,i_add) = seuil
578 xyzm(dir ,i_add+1) = seuil
579 xyzm(dir+3,i_add+1) = ximax
581 nb_old(1,i_add)=nb_nc
582 nb_old(2,i_add)=nb_ec
583 nb_old(1,i_add+1)=nb_nc
584 nb_old(2,i_add+1)=nb_ec
590 IF(i_add+1>=i_add_max)
THEN
608 IF(add(1,i_add)+nb_nc>maxsiz)
THEN
613 IF(add(2,i_add)+nb_ec>maxsiz)
THEN
621 IF(nb_ec/=0.AND.nb_nc/=0)
THEN
623 dx = xyzm(4,i_add) - xyzm(1,i_add)
624 dy = xyzm(5,i_add) - xyzm(2,i_add)
625 dz = xyzm(6,i_add) - xyzm(3,i_add)
632 IF(nb_ec+nb_nc<=128)
THEN
633 ncand_prov = nb_ec*nb_nc
638 nb_nc_old = nb_old(1,i_add)
639 nb_ec_old = nb_old(2,i_add)
642 . nb_nc<=nb_n_b.OR.nb_ec<=nb_n_b.OR.
643 . ncand_prov<=128.OR.(nb_ec==nb_ec_old
644 . .AND.nb_nc==nb_nc_old
THEN
646 ncand_prov = nb_ec*nb_nc
647 DO k=1,ncand_prov,nvsiz
648 DO l=k,
min(k-1+nvsiz,ncand_prov)
658 IF(iauto==0 .OR. itab(n1)>itab(nn1) )
THEN
659 IF(nn1/=n1.AND.nn1/=n2.AND.
660 . nn2/=n1.AND.nn2/=n2)
THEN
672 IF(iauto==0 .OR. n1>nn1 )
THEN
673 IF(nn1/=n1.AND.nn1/=n2.AND.
674 . nn2/=n1.AND.nn2/=n2)
THEN
682 IF(j_stok>=nvsiz)
THEN
684 1 nvsiz,irects,irectm,x ,ii_stok,
685 2 cand_s,cand_m,nsn4 ,noint ,tzinf ,
686 3 i_mem ,prov_s,prov_m,eshift,addcm ,
687 4 chaine,nrts ,itab ,ifpen ,iform )
689 j_stok = j_stok-nvsiz
690#include "vectorize.inc"
692 prov_s(j) = prov_s(j+nvsiz)
693 prov_m(j) = prov_m(j+nvsiz)
714 CALL i7dstk(nb_nc,nb_ec,add(1,i_add),bpn,pn,bpe,pe)
723 1 j_stok,irects,irectm,x ,ii_stok,
724 2 cand_s,cand_m,nsn4 ,noint ,tzinf ,
725 3 i_mem ,prov_s,prov_m,eshift,addcm ,
726 4 chaine,nrts ,itab ,ifpen ,iform )