40 1 BPE ,PE ,BPN ,PN ,ADD ,
41 2 IRECT ,X ,NB_NC ,NB_EC ,XYZM ,
42 3 I_ADD ,NSV ,I_AMAX,XMAX ,YMAX ,
43 4 ZMAX ,MAXSIZ,I_STOK,I_MEM ,NB_N_B,
44 5 CAND_N ,CAND_E,NSN ,NOINT ,TZINF ,
45 6 MAXBOX ,MINBOX,STF ,STFN ,J_STOK,
46 7 MULTIMP,ISTF ,ITAB ,GAP ,GAP_S ,
47 8 GAP_M ,IGAP ,GAPMIN,GAPMAX,MARGE ,
48 9 GAP_S_L,GAP_M_L,ID ,TITR ,ILEV ,
49 A NBINFLG,MBINFLG ,MVOISN ,IXS ,
50 B IXS10 ,IXS16 ,IXS20 , IPARTNS,IPEN0,
51 C INACTI ,MSEGTYP,MARGE_SH,NRTM,IRTSE,IS2SE,
52 D IX1,IX2,IX3,IX4,NSVG,
57 I NY1,NZ1,NX2,NY2,NZ2,
58 J NX3,NY3,NZ3,NX4,NY4,
60 L LB1,LB2,LB3,LB4,LC1,
61 M LC2,LC3,LC4,PENE,PROV_N,
62 N PROV_E,N11,N21,N31,DGAPLOAD,
63 O S_KREMNODE,S_REMNODE,KREMNODE,REMNODE,
64 P TAG_REMOVED_NODE,FLAG_REMOVED_NODE)
72#include "implicit_f.inc"
82#include "vect07_c.inc"
86 INTEGER NB_NC,NB_EC,I_ADD,MAXSIZ,I_STOK,J_STOK,I_MEM,ISTF
87 INTEGER I_BID, I_AMAX,NB_N_B, NOINT, NSN,MULTIMP, IGAP
88 INTEGER ADD(2,0:*),IRECT(4,*),BPE(*),PE(*),BPN(*),PN(*)
89 INTEGER NSV(*),CAND_N(*),CAND_E(*), ITAB(*),NBINFLG(*),MBINFLG(*),
90 * ILEV,MVOISN(4,*),IPARTNS(*),IPEN0,,NRTM
91 INTEGER IXS(NIXS,*), IXS10(6,*), IXS16(8,*), IXS20(12,*),IRTSE(*),IS2SE(*)
94 . x(3,*),xyzm(6,*),tzinf,dbuc,stf(*),stfn(*),
95 . maxbox,minbox, xmax,
ymax, zmax,
96 . gap, gap_s(*), gap_m(*),
97 . gapmin, gapmax, marge, gapsmx, bgapsmx,
98 . gap_s_l(*),gap_m_l(*),marge_sh
99 my_real ,
INTENT(IN) :: dgapload
100 INTEGER ID,MSEGTYP(*)
101 LOGICAL,
INTENT(in) :: FLAG_REMOVED_NODE
102 INTEGER,
INTENT(in) :: S_KREMNODE
103 INTEGER,
INTENT(in) :: S_REMNODE
104 INTEGER,
DIMENSION(S_KREMNODE),
INTENT(in) ::
105 INTEGER,
DIMENSION(S_REMNODE),
INTENT(in) :: REMNODE
106 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) :: TAG_REMOVED_NODE
107 CHARACTER(LEN=NCHARTITLE) :: TITR
108 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) ::PROV_N,PROV_E
109 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) :: IX1,IX2,IX3,IX4,NSVG
110 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,X4
111 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: y1,y2,y3,y4
112 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
113 my_real
DIMENSION(MVSIZ)INTENT(INOUT)
114 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0,stif
115 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n11,n21,n31,pene
116 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx1,ny1,nz1
117 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
118 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
119 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
120 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
121 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3,lb4
122 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4
126 INTEGER NB_NCN,NB_ECN,ADDNN,ADDNE,IPOS,I,IP,J
127 INTEGER INF,SUP,DIR,N1,N2,N3,N4,NN,NE,INS
128 INTEGER SKIP,NS,NS1,NS2,NSE
129 INTEGER :: FIRST,LAST
133 . bid,dx,dy,dz,dsup,seuil,xmx,xmn,gapsmax,
134 . gapv(mvsiz),marge_e
202 IF(nb_ec==0.OR.nb_nc==0)
THEN
206 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
212 dx = xyzm(4,i_add) - xyzm(1,i_add)
213 dy = xyzm(5,i_add) - xyzm(2,i_add)
214 dz = xyzm(6,i_add) - xyzm(3,i_add)
217 IF(add(2,1)+nb_ec>=maxsiz)
THEN
219 IF ( nb_n_b == numnod)
THEN
232 . nb_nc<=nb_n_b.AND.dsup<maxbox.OR.
233 . nb_nc<=nb_n_b.AND.nb_ec==1)
THEN
242 IF(flag_removed_node)
THEN
243 first = kremnode(ne)+1
244 last = kremnode(ne+1)
246 IF(remnode(ijk)<=numnod) tag_removed_node(remnode(ijk)) = 1
254 IF (msegtyp(ne)==0.OR.msegtyp(ne)>nrtm)
THEN
268 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4)
THEN
275 IF(ns1 == n1 .OR. ns2
276 IF(ns1 == n2 .OR. ns2 == n2) skip=1
277 IF(ns1 == n3 .OR. ns2 == n3) skip=1
278 IF(ns1 == n4 .OR. ns2 == n4) skip=1
281 IF(flag_removed_node)
THEN
282 first = kremnode(ne)+1
283 last = kremnode(ne+1)
285 IF(remnode(ijk)==nn) skip = 1
292 IF(flag_removed_node)
THEN
293 IF(tag_removed_node(nn)==1) skip = 1
300 prov_n(j_stok) = bpn(j)
302 IF(j_stok==nvsiz)
THEN
307 CALL i7cor3(x ,irect,nsv ,prov_e ,prov_n,
308 . stf ,stfn ,gapv ,igap ,gap ,
309 . gap_s,gap_m,istf ,gapmin ,gapmax,
310 . gap_s_l,gap_m_l ,zero ,ix1 ,ix2 ,
311 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
312 6 x3 ,x4 ,y1 ,y2 ,y3 ,
313 7 y4 ,z1 ,z2 ,z3 ,z4 ,
314 8 xi ,yi ,zi ,stif ,dgapload,
316 CALL i7dst3(ix3,ix4,x1 ,x2 ,x3 ,
317 1 x4 ,y1 ,y2 ,y3 ,y4 ,
318 2 z1 ,z2 ,z3 ,z4 ,xi ,
319 3 yi ,zi ,x0 ,y0 ,z0 ,
320 4 nx1,ny1,nz1,nx2,ny2,
321 5 nz2,nx3,ny3,nz3,nx4,
322 6 ny4,nz4,p1 ,p2 ,p3 ,
323 7 p4 ,lb1,lb2,lb3,lb4,
324 8 lc1,lc2,lc3,lc4,llt)
326 CALL i7pen3(marge_e,gapv,n11,n21,n31,
327 1 pene ,nx1 ,ny1,nz1,nx2,
328 2 ny2 ,nz2 ,nx3,ny3,nz3,
329 3 nx4 ,ny4 ,nz4,p1 ,p2 ,
332 IF (ilev==2)
CALL i24s1s2(prov_n,prov_e,nbinflg,mbinflg,pene)
333 IF(i_stok+nvsiz<multimp*nsn)
THEN
334 CALL i7cmp3(i_stok,cand_e ,cand_n,1,pene,
338 CALL i7cmp3(i_bid,cand_e,cand_n,0,pene,
340 IF(i_stok+i_bid<multimp*nsn)
THEN
341 CALL i7cmp3(i_stok,cand_e,cand_n,1,pene,
359 IF(flag_removed_node)
THEN
360 first = kremnode(ne)+1
361 last = kremnode(ne+1)
363 IF(remnode(ijk)<=numnod) tag_removed_node(remnode(ijk)) = 0
370 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
388 ELSE IF(dz==dsup)
THEN
391 seuil =(xyzm(dir+3,i_add)+xyzm(dir,i_add))/2
401 IF(x(dir,nsv(bpn(i)))<seuil)
THEN
417 IF(x(dir,nsv(bpn(i)))<seuil)
THEN
421 gapsmx =
max(gapsmx,gap_s(bpn(i)))
427 bgapsmx =
max(bgapsmx,gap_s(bpn(i)))
478 xmx =
max(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
479 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
481 xmn =
min(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
482 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
484 IF(xmn<seuil.AND.inf==1)
THEN
489 IF(xmx>=seuil.AND.sup==1)
THEN
498 IF (msegtyp(ne)==0.OR.msegtyp(ne)>nrtm)
THEN
503 xmn =
min(x(dir,irect(1,ne)),x(dir,irect(2,ne)),
504 . x(dir,irect(3,ne)),x(dir,irect(4,ne)))
505 . -
max(
min(gapsmx+gap_m(ne),gapmax),gapmin)+dgapload-marge_e
506 IF(xmn<seuil.AND.inf==1)
THEN
511 xmx =
max(x(dir,irect(1,ne)),x(dir,irect(2,ne)),
512 . x(dir,irect(3,ne)),x(dir,irect(4,ne)))
513 . +
max(
min(bgapsmx+gap_m(ne),gapmax),gapmin)+dgapload+marge_e
514 IF(xmx>=seuil.AND.sup==1)
THEN
532 xyzm(1,i_add+1) = xyzm(1,i_add)
533 xyzm(2,i_add+1) = xyzm(2,i_add)
534 xyzm(3,i_add+1) = xyzm(3,i_add)
535 xyzm(4,i_add+1) = xyzm(4,i_add)
536 xyzm(5,i_add+1) = xyzm(5,i_add)
537 xyzm(6,i_add+1) = xyzm(6,i_add)
538 xyzm(dir,i_add+1) = seuil
547 IF ( nb_n_b == numnod)
THEN
subroutine i24tri(bpe, pe, bpn, pn, add, irect, x, nb_nc, nb_ec, xyzm, i_add, nsv, i_amax, xmax, ymax, zmax, maxsiz, i_stok, i_mem, nb_n_b, cand_n, cand_e, nsn, noint, tzinf, maxbox, minbox, stf, stfn, j_stok, multimp, istf, itab, gap, gap_s, gap_m, igap, gapmin, gapmax, marge, gap_s_l, gap_m_l, id, titr, ilev, nbinflg, mbinflg, mvoisn, ixs, ixs10, ixs16, ixs20, ipartns, ipen0, inacti, msegtyp, marge_sh, nrtm, irtse, is2se, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, stif, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, pene, prov_n, prov_e, n11, n21, n31, dgapload, s_kremnode, s_remnode, kremnode, remnode, tag_removed_node, flag_removed_node)
subroutine i7dst3(ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, last)