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"
122 INTEGER I_ADD,MAXSIZ,I_MEM,ESHIFT,NSN,NSNROLD,
123 . NSN4,NB_N_B,NOINT,I_ADD_MAX,NSNR,NRTM,IGAP,
124 . ADD(2,*),(4,*),II_STOK,
125 . NSV(*),CAND_N(*),(*),CAND_A(*),RENUM(*)
126 INTEGER,
INTENT(IN) :: INTHEAT
127 INTEGER,
INTENT(IN) :: IDT_THERM
128 INTEGER,
INTENT(IN) :: NODADT_THERM
131 . x(3,*),xyzm(6,*),stf(*),stfn(*),gap_s(*),gap_m(*),
132 . tzinf,maxbox,minbox,gap,gapmin,gapmax,marge
136 INTEGER NB_NCN,NB_NCN1,NB_ECN,ADDNN,ADDNE,I,J,DIR,NB_NC,NB_EC,
137 . N1,N2,N3,N4,NN,NE,K,L,NCAND_PROV,J_STOK,II,JJ,NIN,
138 . prov_n(2*mvsiz),prov_e(2*mvsiz),oldnum(nsnr),
140 . bpe(maxsiz/3),pe(maxsiz),bpn(nsn+nsnr),pn(nsn+nsnr)
143 . dx,dy,dz,dsup,seuil,seuils,seuili, xx1, xx2, xx3, xx4,
144 . xmin,xmax,ymin,
ymax,zmin,zmax, tz, gapsmx, bgapsmx
173 IF(stfn(i)/=zero)
THEN
174 IF(x(1,j)>=xmin.AND.x(1,j)<=xmax.AND.
175 . x(2,j)>=ymin.AND.x(2,j)<=
ymax.AND.
176 . x(3,j)>=zmin.AND.x(3,j)<=zmax)
THEN
185 DO i = nsn+1, nsn+nsnr
193 CALL spmd_oldnumcd(renum,oldnum,nsnr,nsnrold,intheat,idt_therm,nodadt_therm)
215 ELSE IF(dz==dsup)
THEN
218 seuil =(xyzm(dir+3,i_add)+xyzm(dir,i_add))*0.5
229 IF(x(dir,nsv(j))<seuil)
THEN
231 nb_ncn1 = nb_ncn1 + 1
236 IF(xrem(dir,j-nsn)<seuil)
THEN
238 nb_ncn1 = nb_ncn1 + 1
248 IF(x(dir,nsv(j))>=seuil)
THEN
254 IF(xrem(dir,j-nsn)>=seuil)
THEN
266 IF(x(dir,nsv(j))<seuil)
THEN
268 nb_ncn1 = nb_ncn1 + 1
271 gapsmx =
max(gapsmx,gap_s(j))
274 IF(xrem(dir,j-nsn)<seuil)
THEN
276 nb_ncn1 = nb_ncn1 + 1
279 gapsmx =
max(gapsmx,xrem(9,j-nsn))
288 IF(x(dir,nsv(j))>=seuil)
THEN
295 IF(xrem(dir,j-nsn)>=seuil)
THEN
299 bgapsmx =
max(bgapsmx,xrem(9,j-nsn))
313 xx1=x(dir, irect(1,ne))
314 xx2=x(dir, irect(2,ne))
315 xx3=x(dir, irect(3,ne))
316 xx4=x(dir, irect(4,ne))
317 xmax=
max(xx1,xx2,xx3,xx4)+tzinf
324 ELSEIF(nb_ncn==0)
THEN
327 xx1=x(dir, irect(1,ne))
328 xx2=x(dir, irect(2,ne))
329 xx3=x(dir, irect(3,ne))
330 xx4=x(dir, irect(4,ne))
331 xmin=
min(xx1,xx2,xx3,xx4)-tzinf
341 xx1=x(dir, irect(1,ne))
342 xx2=x(dir, irect(2,ne))
343 xx3=x(dir, irect(3,ne))
344 xx4=x(dir, irect(4,ne))
345 xmin=
min(xx1,xx2,xx3,xx4)-tzinf
354 xx1=x(dir, irect(1,ne))
355 xx2=x(dir, irect(2,ne))
356 xx3=x(dir, irect(3,ne))
357 xx4=x(dir, irect(4,ne))
358 xmax=
max(xx1,xx2,xx3,xx4)+tzinf
373 xx1=x(dir, irect(1,ne))
374 xx2=x(dir, irect(2,ne))
375 xx3=x(dir, irect(3,ne))
376 xx4=x(dir, irect(4,ne))
377 xmax=
max(xx1,xx2,xx3,xx4)
378 + +
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax)+marge
385 ELSEIF(nb_ncn==0)
THEN
388 xx1=x(dir, irect(1,ne))
389 xx2=x(dir, irect(2,ne))
390 xx3=x(dir, irect(3,ne))
391 xx4=x(dir, irect(4,ne))
392 xmin=
min(xx1,xx2,xx3,xx4)
393 - -
min(
max(gapsmx+gap_m(ne),gapmin),gapmax)-marge
403 xx1=x(dir, irect(1,ne))
404 xx2=x(dir, irect(2,ne))
405 xx3=x(dir, irect(3,ne))
406 xx4=x(dir, irect(4,ne))
407 xmin=
min(xx1,xx2,xx3,xx4)
408 - -
min(
max(gapsmx+gap_m(ne),gapmin),gapmax)-marge
417 xx1=x(dir, irect(1,ne))
418 xx2=x(dir, irect(2,ne))
419 xx3=x(dir, irect(3,ne))
420 xx4=x(dir, irect(4,ne))
421 xmax=
max(xx1,xx2,xx3,xx4)
422 + +
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax)+marge
434 add(1,i_add+1) = addnn
435 add(2,i_add+1) = addne
442 xyzm(1,i_add+1) = xyzm(1,i_add)
443 xyzm(2,i_add+1) = xyzm(2,i_add)
444 xyzm(3,i_add+1) = xyzm(3,i_add)
445 xyzm(4,i_add+1) = xyzm(4,i_add)
446 xyzm(5,i_add+1) = xyzm(5,i_add)
447 xyzm(6,i_add+1) = xyzm(6,i_add)
448 xyzm(dir,i_add+1) = seuil
449 xyzm(dir+3,i_add) = seuil
455 IF(i_add+1>=i_add_max)
THEN
475 IF(add(2,i_add)+nb_ec>maxsiz)
THEN
483 IF(nb_ec/=0.AND.nb_nc/=0)
THEN
485 dx = xyzm(4,i_add) - xyzm(1,i_add)
486 dy = xyzm(5,i_add) - xyzm(2,i_add)
487 dz = xyzm(6,i_add) - xyzm(3,i_add)
494 IF(nb_ec+nb_nc<=128)
THEN
495 ncand_prov = nb_ec*nb_nc
499 IF(dsup<minbox.OR.nb_nc<=nb_n_b.OR.ncand_prov<=128)
THEN
500 ncand_prov = nb_ec*nb_nc
501 DO k=1,ncand_prov,nvsiz
517 xmax=
max(xx1,xx2,xx3,xx4)+tzinf
518 xmin=
min(xx1,xx2,xx3,xx4)-tzinf
523 ymax=
max(xx1,xx2,xx3,xx4)+tzinf
524 ymin=
min(xx1,xx2,xx3,xx4)-tzinf
529 zmax=
max(xx1,xx2,xx3,xx4)+tzinf
530 zmin=
min(xx1,xx2,xx3,xx4)-tzinf
535 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4.AND.
536 & x(1,nn)>xmin.AND.x(1,nn)<xmax.AND.
537 & x(2,nn)>ymin.AND.x(2,nn)<
ymax.AND.
538 & x(3,nn)>zmin.AND.x(3,nn)<zmax )
THEN
545 IF(xrem(1,ii)>xmin.AND.
546 & xrem(1,ii)<xmax.AND.
547 & xrem(2,ii)>ymin.AND.
548 & xrem(2,ii)<
ymax.AND.
549 & xrem(3,ii)>zmin.AND.
550 & xrem(3,ii)<zmax )
THEN
558 DO l=k,
min(k-1+nvsiz,ncand_prov)
570 tz=
max(
min(gap_s(jj)+gap_m(ne),gapmax),gapmin)+marge
575 xmax=
max(xx1,xx2,xx3,xx4)+tz
576 xmin=
min(xx1,xx2,xx3,xx4)-tz
582 ymin=
min(xx1,xx2,xx3,xx4)-tz
587 zmax=
max(xx1,xx2,xx3,xx4)+tz
588 zmin=
min(xx1,xx2,xx3,xx4)-tz
590 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4.AND.
591 & x(1,nn)>xmin.AND.x(1,nn)<xmax.AND.
592 & x(2,nn)>ymin.AND.x(2,nn)<
ymax.AND.
593 & x(3,nn)>zmin.AND.x(3,nn)<zmax )
THEN
600 tz=
max(
min(xrem(9,ii)+gap_m(ne),gapmax),gapmin)
606 xmax=
max(xx1,xx2,xx3,xx4)+tz
607 xmin=
min(xx1,xx2,xx3,xx4)-tz
613 ymin=
min(xx1,xx2,xx3,xx4)-tz
618 zmax=
max(xx1,xx2,xx3,xx4)+tz
619 zmin=
min(xx1,xx2,xx3,xx4)-tz
620 IF(xrem(1,ii)>xmin.AND.
621 & xrem(1,ii)<xmax.AND.
622 & xrem(2,ii)>ymin.AND.
623 & xrem(2,ii)<
ymax.AND.
624 & xrem(3,ii)>zmin.AND.
625 & xrem(3,ii)<zmax )
THEN
633 IF(j_stok>=nvsiz)
THEN
636 2 cand_n,cand_e,nsn4 ,noint ,marge ,
637 3 i_mem ,prov_n,prov_e ,cand_a,eshift ,
638 4 nsn ,oldnum,nsnrold,igap ,gap ,
639 6 gap_s ,gap_m ,gapmin ,gapmax,nin )
641 j_stok = j_stok-nvsiz
642#include "vectorize.inc"
644 prov_n(j) = prov_n(j+nvsiz)
645 prov_e(j) = prov_e(j+nvsiz)
666 CALL i7dstk(nb_nc,nb_ec,add(1,i_add),bpn,pn,bpe,pe)
675 1 j_stok,irect ,x ,nsv ,ii_stok,
676 2 cand_n,cand_e,nsn4 ,noint ,marge ,
677 3 i_mem ,prov_n,prov_e ,cand_a,eshift ,
678 4 nsn ,oldnum,nsnrold,igap ,gap ,
679 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)