35 1 ADD ,NSN ,RENUM ,NSNR ,ISZNSNR ,
36 2 IRECT ,X ,STF ,STFN ,XYZM ,
37 3 I_ADD ,NSV ,MAXSIZ ,II_STOK ,CAND_N ,
38 4 CAND_E,MULNSN ,NOINT ,TZINF ,MAXBOX ,
39 5 MINBOX,I_MEM ,NB_N_B ,I_ADD_MAX,ESHIFT ,
40 6 INACTI,IFQ ,CAND_A ,CAND_P ,IFPEN ,
41 7 NRTM ,NSNROLD,IGAP,GAP ,GAP_S ,
42 8 GAP_M ,GAPMIN ,GAPMAX ,MARGE ,CURV_MAX ,
43 9 NIN ,GAP_S_L,GAP_M_L,INTTH ,DRAD ,ITIED ,
44 A CAND_F ,KREMNOD ,REMNOD ,FLAGREMNODE,DGAPLOAD,
45 B INTHEAT,IDT_THERM,NODADT_THERM)
53#include "implicit_f.inc"
60 parameter(nvecsz = mvsiz)
123 INTEGER I_ADD,MAXSIZ,I_MEM,ESHIFT,NSN,ISZNSNR,NRTM,NSNROLD,
124 . MULNSN,NB_N_B,NOINT,I_ADD_MAX,INACTI,IFQ,NSNR,IGAP,NIN,
125 . ADD(2,*),IRECT(4,*),
126 . NSV(*),CAND_N(*),CAND_E(*),CAND_A(*),IFPEN(*),RENUM(*),
127 . INTTH,II_STOK,ITIED
128 INTEGER KREMNOD(*),REMNOD(*),FLAGREMNODE
129 INTEGER,
INTENT(IN) :: INTHEAT
130 INTEGER,
INTENT(IN) :: IDT_THERM
131 INTEGER,
INTENT(IN) :: NODADT_THERM
134 . x(3,*),xyzm(6,*),cand_p(*),stf(*),stfn(*),gap_s(*),gap_m(*),
135 . tzinf,maxbox,minbox,marge,gap,gapmin,gapmax,
136 . curv_max(*),gap_s_l(*),gap_m_l(*),cand_f(*)
137 my_real ,
INTENT(IN) :: drad,dgapload
141 INTEGER NB_NCN,NB_NCN1,NB_ECN,ADDNN,ADDNE,I,J,DIR,NB_NC,NB_EC,
142 . n1,n2,n3,n4,nn,ne,k,l,ncand_prov,j_stok,ii,jj,
143 . prov_n(2*mvsiz),prov_e(2*mvsiz),
146 . bpe(maxsiz/3),pe(maxsiz),bpn(nsn+nsnr),pn(nsn+nsnr),
147 . oldnum(isznsnr),iadd
151 . dx,dy,dz,dsup,trhreshold, xx1, xx2, xx3, xx4,
152 . xmin, xmax,ymin,
ymax,zmin, zmax, tz, gapsmx, bgapsmx,
157 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGREMNODE
164 IF(flagremnode == 2)
ALLOCATE(tagremnode(numnod+numfakenodigeo))
196 IF(stfn(i)/=zero)
THEN
198 IF(x(1,j)>=xmin.AND.x(1,j)<=xmax.AND.
199 . x(2,j)>=ymin.AND.x(2,j)<=
ymax.AND.
200 . x(3,j)>=zmin.AND.x(3,j)<=zmax)
THEN
210 DO i = nsn+1, nsn+nsnr
211 IF( xrem(1,i-nsn)<xmin) cycle
212 IF( xrem(1,i-nsn)>xmax) cycle
213 IF( xrem(2,i-nsn)<ymin) cycle
214 IF( xrem(2,i-nsn)>
ymax) cycle
215 IF( xrem(3,i-nsn)<zmin) cycle
216 IF( xrem(3,i-nsn)>zmax) cycle
224 + (inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0.OR.
226 CALL spmd_oldnumcd(renum,oldnum,isznsnr,nsnrold,intheat,idt_therm,nodadt_therm)
247 ELSE IF(dz==dsup)
THEN
250 smoins = xyzm(dir,i_add)
251 splus = xyzm(dir+3,i_add)
252 trhreshold =(smoins+splus)*half
265 IF(xx < trhreshold)
THEN
267 nb_ncn1 = nb_ncn1 + 1
270 IF(igap /=0) gapsmx =
max(gapsmx,gap_s(j))
271 smoins =
max(smoins,xx)
279 IF(xx < trhreshold)
THEN
281 nb_ncn1 = nb_ncn1 + 1
284 IF(igap/=0) gapsmx =
max(gapsmx,xrem(9,j-nsn))
285 smoins =
max(smoins,xx)
294 IF(xx >= trhreshold)
THEN
298 IF(igap/=0) bgapsmx =
max(bgapsmx,gap_s(j))
299 splus =
min(splus,xx)
307 IF(xx >= trhreshold)
THEN
311 IF(igap /= 0) bgapsmx =
max(bgapsmx,xrem(9,j-nsn))
312 splus =
min(splus,xx)
324 xx1=x(dir, irect(1,ne))
325 xx2=x(dir, irect(2,ne))
326 xx3=x(dir, irect(3,ne))
327 xx4=x(dir, irect(4,ne))
329 aaa = tzinf+curv_max(ne)
330 ELSEIF(igap == 3)
THEN
331 aaa =
max(drad,dgapload+
min(
max(bgapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin),gapmax))
332 + +marge+curv_max(ne)
334 aaa =
max(drad,dgapload+
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax))
335 + +marge+curv_max(ne)
337 xmax =
max(xx1,xx2,xx3,xx4) + aaa
338 IF(xmax >= splus)
THEN
344 ELSEIF(nb_ncn == 0)
THEN
345#include "vectorize.inc"
348 xx1=x(dir, irect(1,ne))
349 xx2=x(dir, irect(2,ne))
350 xx3=x(dir, irect(3,ne))
351 xx4=x(dir, irect(4,ne))
353 aaa = -tzinf-curv_max(ne)
354 ELSEIF(igap == 3)
THEN
355 aaa = -
max(drad,dgapload+
min(
max(gapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin),gapmax))
356 + -marge-curv_max(ne)
358 aaa = -
max(drad,dgapload+
min(
max(gapsmx+gap_m(ne),gapmin),gapmax))
359 - -marge-curv_max(ne)
361 xmin =
min(xx1,xx2,xx3,xx4) + aaa
363 IF(xmin < smoins)
THEN
372 xx1=x(dir, irect(1,ne))
373 xx2=x(dir, irect(2,ne))
374 xx3=x(dir, irect(3,ne))
375 xx4=x(dir, irect(4,ne))
377 aaa=-tzinf-curv_max(ne)
378 ELSEIF(igap == 3)
THEN
380 + -marge-curv_max(ne)
382 aaa= -
max(drad,dgapload+
min(
max(gapsmx+gap_m(ne),gapmin),gapmax))
383 - -marge-curv_max(ne)
385 xmin =
min(xx1,xx2,xx3,xx4) + aaa
386 IF(xmin < smoins)
THEN
395 xx1=x(dir, irect(1,ne))
396 xx2=x(dir, irect(2,ne))
397 xx3=x(dir, irect(3,ne))
398 xx4=x(dir, irect(4,ne))
400 aaa =tzinf+curv_max(ne)
401 ELSEIF( igap==3 )
THEN
402 aaa=
max(drad,dgapload+
min(
max(bgapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin),gapmax))
403 + +marge+curv_max(ne)
405 aaa =
max(drad,dgapload+
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax))
406 + +marge+curv_max(ne)
408 xmax =
max(xx1,xx2,xx3,xx4) + aaa
410 IF(xmax >= splus)
THEN
420 add(1,i_add+1) = addnn
421 add(2,i_add+1) = addne
428 xyzm(1,i_add+1) = xyzm(1,i_add)
429 xyzm(2,i_add+1) = xyzm(2,i_add)
430 xyzm(3,i_add+1) = xyzm(3,i_add)
431 xyzm(4,i_add+1) = xyzm(4,i_add)
432 xyzm(5,i_add+1) = xyzm(5,i_add)
433 xyzm(6,i_add+1) = xyzm(6,i_add)
434 xyzm(dir,i_add+1) = splus
435 xyzm(dir+3,i_add) = smoins
441 IF(i_add+1>=i_add_max)
THEN
458 IF(add(2,i_add)+nb_ec>maxsiz)
THEN
460 WRITE(6,*) __line__,__line__
468 IF(nb_ec/=0.AND.nb_nc/=0)
THEN
470 dx = xyzm(4,i_add) - xyzm(1,i_add)
471 dy = xyzm(5,i_add) - xyzm(2,i_add)
472 dz = xyzm(6,i_add) - xyzm(3,i_add)
482 IF(nb_ec+nb_nc<=nvecsz)
THEN
483 ncand_prov = nb_ec*nb_nc
485 ncand_prov = nvecsz+1
487 IF(dsup<minbox.OR.(nb_nc<=nb_n_b)
488 & .OR.(ncand_prov<=nvecsz))
THEN
489 ncand_prov = nb_ec*nb_nc
491 IF(flagremnode==2)
THEN
492 DO i=1,numnod+numfakenodigeo
497 DO k=1,ncand_prov,nvsiz
498 DO l=k,
min(k-1+nvsiz,ncand_prov)
507 IF(flagremnode==2)
THEN
508 DO m= kremnod(2*(ne-1)+1)+1, kremnod(2*(ne-1)+2)
509 tagremnode(remnod(m)) = 1
515 tz = tzinf+curv_max(ne)
516 ELSEIF( igap == 3 )
THEN
517 tz =
max(drad,dgapload+
max(
min(gap_s_l(jj)+gap_m_l(ne),gapmax),gapmin)
518 . +marge+curv_max(ne))
520 tz=
max(drad,dgapload+
max(
min(gap_s(jj)+gap_m(ne),gapmax),gapmin)
521 + +marge+curv_max(ne))
526 tz = tzinf+curv_max(ne)
527 ELSEIF( igap == 3 )
THEN
529 . ,gapmax),gapmin))+marge+curv_max(ne)
531 tz =
max(drad,dgapload+
max(
min(xrem(9,ii)+gap_m(ne),gapmax),gapmin))
532 + +marge+curv_max(ne)
539 xmax=
max(xx1,xx2,xx3,xx4)+tz
540 xmin=
min(xx1,xx2,xx3,xx4)-tz
546 ymin=
min(xx1,xx2,xx3,xx4)-tz
551 zmax=
max(xx1,xx2,xx3,xx4)+tz
552 zmin=
min(xx1,xx2,xx3,xx4)-tz
555 IF(flagremnode==2)
THEN
556 IF(tagremnode(nsv(jj)) == 1) cycle
559 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4.AND.
560 & x(1,nn)>xmin.AND.x(1,nn)<xmax.AND.
561 & x(2,nn)>ymin.AND.x(2,nn)<
ymax.AND.
562 & x(3,nn)>zmin.AND.x(3,nn)<zmax )
THEN
569 IF(flagremnode==2)
THEN
570 DO m= kremnod(2*(ne-1)+2) + 1, kremnod(2*(ne-1)+3)
571 IF(remnod(m) == -
irem(2,ii) )
THEN
576 IF(delnod /= 0) cycle
578 IF(xrem(1,ii)>xmin.AND.
579 & xrem(1,ii)<xmax.AND.
580 & xrem(2,ii)>ymin.AND.
581 & xrem(2,ii)<
ymax.AND.
582 & xrem(3,ii)>zmin.AND.
583 & xrem(3,ii)<zmax )
THEN
591 IF(j_stok>=nvsiz)
THEN
593 1 nvsiz,irect ,x ,nsv ,ii_stok,
594 2 cand_n,cand_e ,mulnsn,noint ,marge ,
595 3 i_mem ,prov_n ,prov_e,eshift,inacti ,
596 4 ifq ,cand_a ,cand_p,ifpen ,nsn ,
597 5 oldnum,nsnrold,igap ,gap ,gap_s ,
598 6 gap_m ,gapmin ,gapmax,curv_max,nin ,
599 7 gap_s_l,gap_m_l,intth,drad,itied ,
604 j_stok = j_stok-nvsiz
605#include "vectorize.inc"
607 prov_n(j) = prov_n(j+nvsiz)
608 prov_e(j) = prov_e(j+nvsiz)
630 CALL i7dstk(nb_nc,nb_ec,add(1,i_add),bpn,pn,bpe,pe)
638 IF(j_stok/=0)
CALL i7sto(
639 1 j_stok,irect ,x ,nsv
640 2 cand_n,cand_e ,mulnsn,noint ,marge ,
641 3 i_mem ,prov_n ,prov_e,eshift,inacti ,
642 4 ifq ,cand_a ,cand_p,ifpen ,nsn ,
643 5 oldnum,nsnrold,igap ,gap ,gap_s ,
644 6 gap_m ,gapmin ,gapmax,curv_max,nin ,
645 7 gap_s_l,gap_m_l,intth,drad,itied ,
648 IF(flagremnode==2)
THEN
649 DEALLOCATE(tagremnode)
subroutine i7tri(add, nsn, renum, nsnr, isznsnr, irect, x, stf, stfn, xyzm, i_add, nsv, maxsiz, ii_stok, cand_n, cand_e, mulnsn, noint, tzinf, maxbox, minbox, i_mem, nb_n_b, i_add_max, eshift, inacti, ifq, cand_a, cand_p, ifpen, nrtm, nsnrold, igap, gap, gap_s, gap_m, gapmin, gapmax, marge, curv_max, nin, gap_s_l, gap_m_l, intth, drad, itied, cand_f, kremnod, remnod, flagremnode, dgapload, intheat, idt_therm, nodadt_therm)