35 1 ADD ,NSN ,RENUM ,NSNR ,NRTM ,
36 2 IRECT ,X ,XYZM ,IGAP ,GAP ,
37 3 I_ADD ,NSV ,MAXSIZ ,II_STOK ,CAND_N ,
38 4 CAND_E,NSN4 ,NOINT ,TZINF ,MAXBOX ,
39 5 MINBOX,I_MEM ,NB_N_B ,I_ADD_MAX,CAND_A ,
40 6 ESHIFT,NSNROLD,STF ,STFN ,GAP_S ,
41 7 GAP_M ,GAPMIN ,GAPMAX ,MARGE ,NIN ,
42 8 INTHEAT,IDT_THERM,NODADT_THERM)
55#include
"implicit_f.inc"
120 INTEGER I_ADD,MAXSIZ,I_MEM,ESHIFT,NSN,NSNROLD,
121 . NSN4,NB_N_B,NOINT,I_ADD_MAX,NSNR,NRTM,IGAP,
122 . ADD(2,*),IRECT(4,*),II_STOK,
123 . NSV(*),CAND_N(*),CAND_E(*),CAND_A(*),RENUM(*)
124 INTEGER,
INTENT(IN) :: INTHEAT
125 INTEGER,
INTENT(IN) :: IDT_THERM
126 INTEGER,
INTENT(IN) :: NODADT_THERM
129 . x(3,*),xyzm(6,*),stf(*),stfn(*),gap_s(*),gap_m(*),
130 . tzinf,maxbox,minbox,gap,gapmin,gapmax,marge
134 INTEGER NB_NCN,NB_NCN1,NB_ECN,ADDNN,ADDNE,I,J,DIR,,NB_EC,
135 . N1,N2,N3,N4,NN,NE,K,L,NCAND_PROV,J_STOK,II,JJ,NIN,
136 . prov_n(2*mvsiz),prov_e(2*mvsiz),oldnum(nsnr),
138 . bpe(maxsiz/3),pe(maxsiz),bpn(nsn+nsnr),pn(nsn+nsnr)
141 . dx,dy,dz,dsup,seuil, xx1, xx2, xx3, xx4,
142 . xmin,xmax,ymin,
ymax,zmin,zmax, tz, gapsmx, bgapsmx
171 IF(stfn(i)/=zero)
THEN
172 IF(x(1,j)>=xmin.AND.x(1,j)<=xmax.AND.
173 . x(2,j)>=ymin.AND.x(2,j)<=
ymax.AND.
174 . x(3,j)>=zmin.AND.x(3,j)<=zmax)
THEN
183 DO i = nsn+1, nsn+nsnr
191 CALL spmd_oldnumcd(renum,oldnum,nsnr,nsnrold,intheat,idt_therm,nodadt_therm)
213 ELSE IF(dz==dsup)
THEN
216 seuil =(xyzm(dir+3,i_add)+xyzm(dir,i_add))*0.5
227 IF(x(dir,nsv(j))<seuil)
THEN
229 nb_ncn1 = nb_ncn1 + 1
234 IF(xrem(dir,j-nsn)<seuil)
THEN
236 nb_ncn1 = nb_ncn1 + 1
246 IF(x(dir,nsv(j))>=seuil)
THEN
252 IF(xrem(dir,j-nsn)>=seuil)
THEN
264 IF(x(dir,nsv(j))<seuil)
THEN
266 nb_ncn1 = nb_ncn1 + 1
269 gapsmx =
max(gapsmx,gap_s(j))
272 IF(xrem(dir,j-nsn)<seuil)
THEN
274 nb_ncn1 = nb_ncn1 + 1
277 gapsmx =
max(gapsmx,xrem(9,j-nsn))
286 IF(x(dir,nsv(j))>=seuil)
THEN
290 bgapsmx =
max(bgapsmx,gap_s(j))
293 IF(xrem(dir,j-nsn)>=seuil)
THEN
297 bgapsmx =
max(bgapsmx,xrem(9,j-nsn))
311 xx1=x(dir, irect(1,ne))
312 xx2=x(dir, irect(2,ne))
313 xx3=x(dir, irect(3,ne))
314 xx4=x(dir, irect(4,ne))
315 xmax=
max(xx1,xx2,xx3,xx4)+tzinf
322 ELSEIF(nb_ncn==0)
THEN
325 xx1=x(dir, irect(1,ne))
326 xx2=x(dir, irect(2,ne))
327 xx3=x(dir, irect(3,ne))
328 xx4=x(dir, irect(4,ne))
329 xmin=
min(xx1,xx2,xx3,xx4)-tzinf
339 xx1=x(dir, irect(1,ne))
340 xx2=x(dir, irect(2,ne))
341 xx3=x(dir, irect(3,ne))
342 xx4=x(dir, irect(4,ne))
343 xmin=
min(xx1,xx2,xx3,xx4)-tzinf
352 xx1=x(dir, irect(1,ne))
353 xx2=x(dir, irect(2,ne))
355 xx4=x(dir, irect(4,ne))
356 xmax=
max(xx1,xx2,xx3,xx4)+tzinf
371 xx1=x(dir, irect(1,ne))
372 xx2=x(dir, irect(2,ne))
373 xx3=x(dir, irect(3,ne))
374 xx4=x(dir, irect(4,ne))
375 xmax=
max(xx1,xx2,xx3,xx4)
376 + +
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax)+marge
383 ELSEIF(nb_ncn==0)
THEN
386 xx1=x(dir, irect(1,ne))
387 xx2=x(dir, irect(2,ne))
388 xx3=x(dir, irect(3,ne))
389 xx4=x(dir, irect(4,ne))
390 xmin=
min(xx1,xx2,xx3,xx4)
391 - -
min(
max(gapsmx+gap_m(ne),gapmin),gapmax)-marge
401 xx1=x(dir, irect(1,ne))
402 xx2=x(dir, irect(2,ne))
403 xx3=x(dir, irect(3,ne))
404 xx4=x(dir, irect(4,ne))
405 xmin=
min(xx1,xx2,xx3,xx4)
406 - -
min(
max(gapsmx+gap_m(ne),gapmin),gapmax)-marge
415 xx1=x(dir, irect(1,ne))
416 xx2=x(dir, irect(2,ne))
417 xx3=x(dir, irect(3,ne))
418 xx4=x(dir, irect(4,ne))
419 xmax=
max(xx1,xx2,xx3,xx4)
420 + +
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax
432 add(1,i_add+1) = addnn
433 add(2,i_add+1) = addne
440 xyzm(1,i_add+1) = xyzm(1,i_add)
441 xyzm(2,i_add+1) = xyzm(2,i_add)
442 xyzm(3,i_add+1) = xyzm(3,i_add)
443 xyzm(4,i_add+1) = xyzm(4,i_add)
444 xyzm(5,i_add+1) = xyzm(5,i_add)
445 xyzm(6,i_add+1) = xyzm(6,i_add)
446 xyzm(dir,i_add+1) = seuil
447 xyzm(dir+3,i_add) = seuil
453 IF(i_add+1>=i_add_max)
THEN
472 IF(add(2,i_add)+nb_ec>maxsiz)
THEN
480 IF(nb_ec/=0.AND.nb_nc/=0)
THEN
482 dx = xyzm(4,i_add) - xyzm(1,i_add)
483 dy = xyzm(5,i_add) - xyzm(2,i_add)
491 IF(nb_ec+nb_nc<=128)
THEN
492 ncand_prov = nb_ec*nb_nc
496 IF(dsup<minbox.OR.nb_nc<=nb_n_b.OR.ncand_prov<=128)
THEN
497 ncand_prov = nb_ec*nb_nc
498 DO k=1,ncand_prov,nvsiz
500 DO l=k,
min(k-1+nvsiz,ncand_prov)
514 xmax=
max(xx1,xx2,xx3,xx4)+tzinf
515 xmin=
min(xx1,xx2,xx3,xx4)-tzinf
520 ymax=
max(xx1,xx2,xx3,xx4)+tzinf
521 ymin=
min(xx1,xx2,xx3,xx4)-tzinf
526 zmax=
max(xx1,xx2,xx3,xx4)+tzinf
527 zmin=
min(xx1,xx2,xx3,xx4)-tzinf
532 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4.AND.
533 & x(1,nn)>xmin.AND.x(1,nn)<xmax.AND.
534 & x(2,nn)>ymin.AND.x(2,nn)<
ymax.AND.
535 & x(3,nn)>zmin.AND.x(3,nn)<zmax )
THEN
542 IF(xrem(1,ii)>xmin.AND.
543 & xrem(1,ii)<xmax.AND.
544 & xrem(2,ii)>ymin.AND.
545 & xrem(2,ii)<
ymax.AND.
546 & xrem(3,ii)>zmin.AND.
547 & xrem(3,ii)<zmax )
THEN
555 DO l=k,
min(k-1+nvsiz,ncand_prov)
567 tz=
max(
min(gap_s(jj)+gap_m(ne),gapmax),gapmin)+marge
573 xmin=
min(xx1,xx2,xx3,xx4)-tz
579 ymin=
min(xx1,xx2,xx3,xx4)-tz
584 zmax=
max(xx1,xx2,xx3,xx4)+tz
585 zmin=
min(xx1,xx2,xx3,xx4)-tz
587 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4.AND.
588 & x(1,nn)>xmin.AND.x(1,nn)<xmax.AND.
589 & x(2,nn)>ymin.AND.x(2,nn)<
ymax.AND.
590 & x(3,nn)>zmin.AND.x(3,nn)<zmax )
THEN
597 tz=
max(
min(xrem(9,ii)+gap_m(ne),gapmax),gapmin)
603 xmax=
max(xx1,xx2,xx3,xx4)+tz
604 xmin=
min(xx1,xx2,xx3,xx4)-tz
610 ymin=
min(xx1,xx2,xx3,xx4)-tz
615 zmax=
max(xx1,xx2,xx3,xx4)+tz
616 zmin=
min(xx1,xx2,xx3,xx4)-tz
617 IF(xrem(1,ii)>xmin.AND.
618 & xrem(1,ii)<xmax.AND.
619 & xrem(2,ii)>ymin.AND.
621 & xrem(3,ii)>zmin.AND.
622 & xrem(3,ii)<zmax )
THEN
630 IF(j_stok>=nvsiz)
THEN
632 1 nvsiz ,irect ,x ,nsv ,ii_stok,
633 2 cand_n,cand_e,nsn4 ,noint ,marge ,
634 3 i_mem ,prov_n,prov_e ,cand_a,eshift ,
636 6 gap_s ,gap_m ,gapmin ,gapmax,nin )
638 j_stok = j_stok-nvsiz
639#include "vectorize.inc"
641 prov_n(j) = prov_n(j+nvsiz)
642 prov_e(j) = prov_e(j+nvsiz)
663 CALL i7dstk(nb_nc,nb_ec,add(1,i_add),bpn,pn,bpe,pe)
672 1 j_stok,irect ,x ,nsv ,ii_stok,
673 2 cand_n,cand_e,nsn4 ,noint ,marge ,
674 3 i_mem ,prov_n,prov_e ,cand_a,eshift ,
675 4 nsn ,oldnum,nsnrold,igap ,gap ,
676 6 gap_s ,gap_m ,gapmin ,gapmax,nin )
subroutine i10tri(add, nsn, renum, nsnr, nrtm, irect, x, xyzm, igap, gap, i_add, nsv, maxsiz, ii_stok, cand_n, cand_e, nsn4, noint, tzinf, maxbox, minbox, i_mem, nb_n_b, i_add_max, cand_a, eshift, nsnrold, stf, stfn, gap_s, gap_m, gapmin, gapmax, marge, nin, intheat, idt_therm, nodadt_therm)