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)
125 INTEGER I_ADD,MAXSIZ,I_MEM,ESHIFT,NSN,ISZNSNR,NRTM,NSNROLD,
126 . MULNSN,NB_N_B,NOINT,I_ADD_MAX,INACTI,IFQ,NSNR,IGAP,NIN,
127 . ADD(2,*),IRECT(4,*),
128 . NSV(*),CAND_N(*),(*),CAND_A(*),IFPEN(*),RENUM(*),
129 . INTTH,II_STOK,ITIED
130 INTEGER KREMNOD(*),REMNOD(*),FLAGREMNODE
131 INTEGER,
INTENT(IN) :: INTHEAT
132 INTEGER,
INTENT(IN) :: IDT_THERM
133 INTEGER,
INTENT(IN) :: NODADT_THERM
136 . x(3,*),xyzm(6,*),cand_p(*),stf(*),stfn(*),gap_s(*),gap_m(*),
137 . tzinf,maxbox,minbox,marge,gap,gapmin,gapmax,
138 . curv_max(*),gap_s_l(*),gap_m_l(*),cand_f(*)
139 my_real ,
INTENT(IN) :: drad,dgapload
143 INTEGER NB_NCN,NB_NCN1,NB_ECN,ADDNN,ADDNE,I,J,DIR,NB_NC,NB_EC,
144 . n1,n2,n3,n4,nn,ne,k,l,ncand_prov,j_stok,ii,jj,
145 . prov_n(2*mvsiz),prov_e(2*mvsiz),
146 . tn1(nvecsz),tn2(nvecsz),tn3(nvecsz),tn4(nvecsz),
148 . bpe(maxsiz/3),pe(maxsiz),bpn(nsn+nsnr),pn(nsn+nsnr),
149 . oldnum(isznsnr),iadd
153 . dx,dy,dz,dsup,trhreshold, xx1, xx2, xx3, xx4,
154 . xmin, xmax,ymin,
ymax,zmin, zmax, tz, gapsmx, bgapsmx, gapl,
155 . txx1(3,nvecsz), txx2(3,nvecsz), txx3(3,nvecsz), txx4(3,nvecsz),
156 . txmax(nvecsz),txmin(nvecsz),tymax(nvecsz),
157 . tymin(nvecsz),tzmax(nvecsz),tzmin(nvecsz),smoins,splus,xx
159 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TAGREMNODE
166 IF(flagremnode == 2)
ALLOCATE(tagremnode(numnod+numfakenodigeo))
198 IF(stfn(i)/=zero)
THEN
200 IF(x(1,j)>=xmin.AND.x(1,j)<=xmax.AND.
201 . x(2,j)>=ymin.AND.x(2,j)<=
ymax.AND.
202 . x(3,j)>=zmin.AND.x(3,j)<=zmax)
THEN
212 DO i = nsn+1, nsn+nsnr
213 IF( xrem(1,i-nsn)<xmin) cycle
214 IF( xrem(1,i-nsn)>xmax) cycle
215 IF( xrem(2,i-nsn)<ymin) cycle
216 IF( xrem(2,i-nsn)>
ymax) cycle
217 IF( xrem(3,i-nsn)<zmin) cycle
218 IF( xrem(3,i-nsn)>zmax) cycle
226 + (inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0.OR.
228 CALL spmd_oldnumcd(renum,oldnum,isznsnr,nsnrold,intheat,idt_therm,nodadt_therm)
249 ELSE IF(dz==dsup)
THEN
252 smoins = xyzm(dir,i_add)
253 splus = xyzm(dir+3,i_add)
254 trhreshold =(smoins+splus)*half
267 IF(xx < trhreshold)
THEN
269 nb_ncn1 = nb_ncn1 + 1
272 IF(igap /=0) gapsmx =
max(gapsmx,gap_s(j))
273 smoins =
max(smoins,xx)
281 IF(xx < trhreshold)
THEN
283 nb_ncn1 = nb_ncn1 + 1
286 IF(igap/=0) gapsmx =
max(gapsmx,xrem(9,j-nsn))
287 smoins =
max(smoins,xx)
296 IF(xx >= trhreshold)
THEN
300 IF(igap/=0) bgapsmx =
max(bgapsmx,gap_s(j))
301 splus =
min(splus,xx)
309 IF(xx >= trhreshold)
THEN
313 IF(igap /= 0) bgapsmx =
max(bgapsmx,xrem(9,j-nsn))
314 splus =
min(splus,xx)
326 xx1=x(dir, irect(1,ne))
327 xx2=x(dir, irect(2,ne))
328 xx3=x(dir, irect(3,ne))
329 xx4=x(dir, irect(4,ne))
331 aaa = tzinf+curv_max(ne)
332 ELSEIF(igap == 3)
THEN
333 aaa =
max(drad,dgapload+
min(
max(bgapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin),gapmax))
334 + +marge+curv_max(ne)
336 aaa =
max(drad,dgapload+
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax))
337 + +marge+curv_max(ne)
339 xmax =
max(xx1,xx2,xx3,xx4) + aaa
340 IF(xmax >= splus)
THEN
346 ELSEIF(nb_ncn == 0)
THEN
347#include "vectorize.inc"
350 xx1=x(dir, irect(1,ne))
351 xx2=x(dir, irect(2,ne))
352 xx3=x(dir, irect(3,ne))
353 xx4=x(dir, irect(4,ne))
355 aaa = -tzinf-curv_max(ne)
356 ELSEIF(igap == 3)
THEN
357 aaa = -
max(drad,dgapload+
min(
max(gapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin
358 + -marge-curv_max(ne)
360 aaa = -
max(drad,dgapload+
min(
max(gapsmx+gap_m(ne),gapmin),gapmax))
361 - -marge-curv_max(ne)
363 xmin =
min(xx1,xx2,xx3,xx4) + aaa
365 IF(xmin < smoins)
THEN
374 xx1=x(dir, irect(1,ne))
375 xx2=x(dir, irect(2,ne))
376 xx3=x(dir, irect(3,ne))
377 xx4=x(dir, irect(4,ne))
379 aaa=-tzinf-curv_max(ne)
380 ELSEIF(igap == 3)
THEN
381 aaa= -
max(drad,dgapload+
min(
max(gapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin),gapmax))
382 + -marge-curv_max(ne)
384 aaa= -
max(drad,dgapload+
min(
max(gapsmx+gap_m(ne),gapmin),gapmax))
387 xmin =
min(xx1,xx2,xx3,xx4) + aaa
388 IF(xmin < smoins)
THEN
397 xx1=x(dir, irect(1,ne))
398 xx2=x(dir, irect(2,ne))
399 xx3=x(dir, irect(3,ne))
400 xx4=x(dir, irect(4,ne))
402 aaa =tzinf+curv_max(ne)
403 ELSEIF( igap==3 )
THEN
404 aaa=
max(drad,dgapload+
min(
max(bgapsmx+
max(gap_m(ne),gap_m_l(ne)),gapmin),gapmax))
405 + +marge+curv_max(ne)
407 aaa =
max(drad,dgapload+
min(
max(bgapsmx+gap_m(ne),gapmin),gapmax))
408 + +marge+curv_max(ne)
410 xmax =
max(xx1,xx2,xx3,xx4) + aaa
412 IF(xmax >= splus)
THEN
422 add(1,i_add+1) = addnn
423 add(2,i_add+1) = addne
430 xyzm(1,i_add+1) = xyzm(1,i_add)
431 xyzm(2,i_add+1) = xyzm(2,i_add)
432 xyzm(3,i_add+1) = xyzm(3,i_add)
433 xyzm(4,i_add+1) = xyzm(4,i_add)
434 xyzm(5,i_add+1) = xyzm(5,i_add)
435 xyzm(6,i_add+1) = xyzm(6,i_add)
436 xyzm(dir,i_add+1) = splus
437 xyzm(dir+3,i_add) = smoins
443 IF(i_add+1>=i_add_max)
THEN
461 IF(add(2,i_add)+nb_ec>maxsiz)
THEN
463 WRITE(6,*) __line__,__line__
471 IF(nb_ec/=0.AND.nb_nc/=0)
THEN
473 dx = xyzm(4,i_add) - xyzm(1,i_add)
474 dy = xyzm(5,i_add) - xyzm(2,i_add)
475 dz = xyzm(6,i_add) - xyzm(3,i_add)
485 IF(nb_ec+nb_nc<=nvecsz)
THEN
486 ncand_prov = nb_ec*nb_nc
488 ncand_prov = nvecsz+1
490 IF(dsup<minbox.OR.(nb_nc<=nb_n_b)
491 & .OR.(ncand_prov<=nvecsz))
THEN
492 ncand_prov = nb_ec*nb_nc
494 IF(flagremnode==2)
THEN
495 DO i=1,numnod+numfakenodigeo
500 DO k=1,ncand_prov,nvsiz
501 DO l=k,
min(k-1+nvsiz,ncand_prov)
510 IF(flagremnode==2)
THEN
511 DO m= kremnod(2*(ne-1)+1)+1, kremnod(2*(ne-1)+2)
512 tagremnode(remnod(m)) = 1
518 tz = tzinf+curv_max(ne)
519 ELSEIF( igap == 3 )
THEN
520 tz =
max(drad,dgapload+
max(
min(gap_s_l(jj)+gap_m_l(ne),gapmax),gapmin)
521 . +marge+curv_max(ne))
523 tz=
max(drad,dgapload+
max(
min(gap_s(jj)+gap_m(ne),gapmax
524 + +marge+curv_max(ne))
529 tz = tzinf+curv_max(ne)
530 ELSEIF( igap == 3 )
THEN
531 tz =
max(drad,dgapload+
max(
min(xrem(iadd,ii)+gap_m_l(ne)
532 . ,gapmax),gapmin))+marge+curv_max(ne)
534 tz =
max(drad,dgapload+
max(
min(xrem(9,ii)+gap_m(ne),gapmax),gapmin))
535 + +marge+curv_max(ne)
542 xmax=
max(xx1,xx2,xx3,xx4)+tz
543 xmin=
min(xx1,xx2,xx3,xx4)-tz
549 ymin=
min(xx1,xx2,xx3,xx4)-tz
554 zmax=
max(xx1,xx2,xx3,xx4)+tz
555 zmin=
min(xx1,xx2,xx3,xx4)-tz
558 IF(flagremnode==2)
THEN
559 IF(tagremnode(nsv(jj)) == 1) cycle
562 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4.AND.
563 & x(1,nn)>xmin.AND.x(1,nn)<xmax.AND.
564 & x(2,nn)>ymin.AND.x(2,nn)<
ymax.AND.
565 & x(3,nn)>zmin.AND.x(3,nn)<zmax )
THEN
572 IF(flagremnode==2)
THEN
574 IF(remnod(m) == -
irem(2,ii) )
THEN
579 IF(delnod /= 0) cycle
581 IF(xrem(1,ii)>xmin.AND.
582 & xrem(1,ii)<xmax.AND.
583 & xrem(2,ii)>ymin.AND.
585 & xrem(3,ii)>zmin.AND.
586 & xrem(3,ii)<zmax )
THEN
594 IF(j_stok>=nvsiz)
THEN
596 1 nvsiz,irect ,x ,nsv ,ii_stok,
597 2 cand_n,cand_e ,mulnsn,noint ,marge ,
598 3 i_mem ,prov_n ,prov_e,eshift,inacti ,
599 4 ifq ,cand_a ,cand_p,ifpen ,nsn ,
600 5 oldnum,nsnrold,igap ,gap ,gap_s ,
601 6 gap_m ,gapmin ,gapmax,curv_max,nin ,
602 7 gap_s_l,gap_m_l,intth,drad,itied ,
607 j_stok = j_stok-nvsiz
608#include "vectorize.inc"
610 prov_n(j) = prov_n(j+nvsiz)
611 prov_e(j) = prov_e(j+nvsiz)
633 CALL i7dstk(nb_nc,nb_ec,add(1,i_add),bpn,pn,bpe,pe)
641 IF(j_stok/=0)
CALL i7sto(
642 1 j_stok,irect ,x ,nsv ,ii_stok,
643 2 cand_n,cand_e ,mulnsn,noint ,marge ,
644 3 i_mem ,prov_n ,prov_e,eshift,inacti ,
645 4 ifq ,cand_a ,cand_p,ifpen ,nsn ,
646 5 oldnum,nsnrold,igap ,gap ,gap_s ,
647 6 gap_m ,gapmin ,gapmax,curv_max,nin ,
648 7 gap_s_l,gap_m_l,intth,drad,itied ,
651 IF(flagremnode==2)
THEN
652 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)