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)
69 use element_mod ,
only :nixs
73#include "implicit_f.inc"
83#include "vect07_c.inc"
87 INTEGER NB_NC,NB_EC,I_ADD,MAXSIZ,I_STOK,J_STOK,I_MEM,ISTF
88 INTEGER I_BID, I_AMAX,NB_N_B, NOINT, NSN,MULTIMP, IGAP
89 INTEGER ADD(2,0:*),IRECT(4,*),BPE(*),PE(*),BPN(*),PN(*)
90 INTEGER NSV(*),CAND_N(*),CAND_E(*), ITAB(*),NBINFLG(*),MBINFLG(*),
91 * ilev,mvoisn(4,*),ipartns(*),ipen0,inacti,nrtm
92 INTEGER IXS(NIXS,*), IXS10(6,*), (8,*), IXS20(12,*),IRTSE(*),IS2SE(*)
95 . x(3,*),xyzm(6,*),tzinf,stf(*),stfn(*),
96 . maxbox,minbox, xmax,
ymax, zmax,
97 . gap, gap_s(*), gap_m(*),
98 . gapmin, gapmax, marge, gapsmx, bgapsmx,
99 . gap_s_l(*),gap_m_l(*),marge_sh
100 my_real ,
INTENT(IN) :: dgapload
101 INTEGER ID,MSEGTYP(*)
102 LOGICAL,
INTENT(in) ::
103 INTEGER,
INTENT(in) :: S_KREMNODE
104 INTEGER,
INTENT(in) :: S_REMNODE
105 INTEGER,
DIMENSION(S_KREMNODE),
INTENT(in) :: KREMNODE
106 INTEGER,
DIMENSION(S_REMNODE),
INTENT(in) ::
107 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) :: TAG_REMOVED_NODE
108 CHARACTER(LEN=NCHARTITLE) :: TITR
109 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) ::PROV_N,PROV_E
110 INTEGER,
DIMENSION(MVSIZ),
INTENT(INOUT) :: IX1,IX2,IX3,IX4,NSVG
111 ,
DIMENSION(MVSIZ),
INTENT(INOUT) :: X1,X2,X3,X4
112 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: y1,y2,y3,y4
113 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
114 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xi,yi,zi
115 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0,stif
116 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n11,n21,n31,pene
117 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx1,ny1,nz1
118 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
119 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
120 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
121 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
122 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3,lb4
123 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4
127 INTEGER NB_NCN,NB_ECN,ADDNN,ADDNE,I,J
128 INTEGER INF,SUP,DIR,N1,N2,N3,,NN,NE
129 INTEGER SKIP,NS,NS1,NS2,NSE
130 INTEGER :: FIRST,LAST
134 . dx,dy,dz,dsup,seuil,xmx,xmn,
135 . gapv(mvsiz),marge_e
200 IF(nb_ec==0.OR.nb_nc==0)
THEN
204 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
210 dx = xyzm(4,i_add) - xyzm(1,i_add)
211 dy = xyzm(5,i_add) - xyzm(2,i_add)
212 dz = xyzm(6,i_add) - xyzm(3,i_add)
215 IF(add(2,1)+nb_ec>=maxsiz)
THEN
217 IF ( nb_n_b == numnod)
THEN
230 . nb_nc<=nb_n_b.AND.dsup<maxbox.OR.
231 . nb_nc<=nb_n_b.AND.nb_ec==1)
THEN
240 IF(flag_removed_node)
THEN
241 first = kremnode(ne)+1
242 last = kremnode(ne+1)
244 IF(remnode(ijk)<=numnod) tag_removed_node(remnode(ijk)) = 1
252 IF (msegtyp(ne)==0.OR.msegtyp(ne)>nrtm)
THEN
266 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4)
THEN
273 IF(ns1 == n1 .OR. ns2 == n1) skip=1
274 IF(ns1 == n2 .OR. ns2 == n2) skip=1
275 IF(ns1 == n3 .OR. ns2 == n3) skip=1
276 IF(ns1 == n4 .OR. ns2 == n4) skip=1
279 IF(flag_removed_node)
THEN
280 first = kremnode(ne)+1
281 last = kremnode(ne+1)
283 IF(remnode(ijk)==nn) skip = 1
290 IF(flag_removed_node)
THEN
291 IF(tag_removed_node(nn)==1) skip = 1
298 prov_n(j_stok) = bpn(j)
300 IF(j_stok==nvsiz)
THEN
305 CALL i7cor3(x ,irect,nsv ,prov_e ,prov_n,
306 . stf ,stfn ,gapv ,igap ,gap ,
307 . gap_s,gap_m,istf ,gapmin ,gapmax,
308 . gap_s_l,gap_m_l ,zero ,ix1 ,ix2 ,
309 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
310 6 x3 ,x4 ,y1 ,y2 ,y3 ,
311 7 y4 ,z1 ,z2 ,z3 ,z4 ,
312 8 xi ,yi ,zi ,stif ,dgapload,
314 CALL i7dst3(ix3,ix4,x1 ,x2 ,x3 ,
315 1 x4 ,y1 ,y2 ,y3 ,y4 ,
316 2 z1 ,z2 ,z3 ,z4 ,xi ,
317 3 yi ,zi ,x0 ,y0 ,z0 ,
318 4 nx1,ny1,nz1,nx2,ny2,
319 5 nz2,nx3,ny3,nz3,nx4,
320 6 ny4,nz4,p1 ,p2 ,p3 ,
321 7 p4 ,lb1,lb2,lb3,lb4,
322 8 lc1,lc2,lc3,lc4,llt)
324 CALL i7pen3(marge_e,gapv,n11,n21,n31,
325 1 pene ,nx1 ,ny1,nz1,nx2,
326 2 ny2 ,nz2 ,nx3,ny3,nz3,
327 3 nx4 ,ny4 ,nz4,p1 ,p2 ,
330 IF (ilev==2)
CALL i24s1s2(prov_n,prov_e,nbinflg,mbinflg,pene)
331 IF(i_stok+nvsiz<multimp*nsn)
THEN
332 CALL i7cmp3(i_stok,cand_e ,cand_n,1,pene,
336 CALL i7cmp3(i_bid,cand_e,cand_n,0,pene,
338 IF(i_stok+i_bid<multimp*nsn)
THEN
339 CALL i7cmp3(i_stok,cand_e,cand_n,1,pene,
357 IF(flag_removed_node)
THEN
358 first = kremnode(ne)+1
359 last = kremnode(ne+1)
361 IF(remnode(ijk)<=numnod) tag_removed_node(remnode(ijk)) = 0
368 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
386 ELSE IF(dz==dsup)
THEN
389 seuil =(xyzm(dir+3,i_add)+xyzm(dir,i_add))/2
399 IF(x(dir,nsv(bpn(i)))<seuil)
THEN
415 IF(x(dir,nsv(bpn(i)))<seuil)
THEN
419 gapsmx =
max(gapsmx,gap_s(bpn(i)))
425 bgapsmx =
max(bgapsmx,gap_s(bpn(i)))
476 xmx =
max(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
477 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
479 xmn =
min(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
480 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
482 IF(xmn<seuil.AND.inf==1)
THEN
487 IF(xmx>=seuil.AND.sup==1)
THEN
496 IF (msegtyp(ne)==0.OR.msegtyp(ne)>nrtm)
THEN
501 xmn =
min(x(dir,irect(1,ne)),x(dir,irect(2,ne)),
502 . x(dir,irect(3,ne)),x(dir,irect(4,ne)))
503 . -
max(
min(gapsmx+gap_m(ne),gapmax),gapmin)+dgapload-marge_e
504 IF(xmn<seuil.AND.inf==1
THEN
509 xmx =
max(x(dir,irect(1,ne)),x(dir,irect(2,ne)),
510 . x(dir,irect(3,ne)),x(dir,irect(4,ne)))
512 IF(xmx>=seuil.AND.sup==1)
THEN
530 xyzm(1,i_add+1) = xyzm(1,i_add)
531 xyzm(2,i_add+1) = xyzm(2,i_add)
532 xyzm(3,i_add+1) = xyzm(3,i_add)
533 xyzm(4,i_add+1) = xyzm(4,i_add)
534 xyzm(5,i_add+1) = xyzm(5,i_add)
535 xyzm(6,i_add+1) = xyzm(6,i_add)
536 xyzm(dir,i_add+1) = seuil
537 xyzm(dir+3,i_add) = seuil
545 IF ( nb_n_b == numnod)
THEN
subroutine i24buc1(x, irect, nsv, bumult, nseg, nmn, nrtm, mwa, nsn, cand_e, cand_n, gap, xyzm, noint, i_stok, dist, tzinf, maxbox, minbox, msr, stf, stfn, multimp, istf, iddlevel, itab, gap_s, gap_m, igap, gapmin, gapmax, inacti, gap_s_l, gap_m_l, i_mem, marge, id, titr, nbinflg, mbinflg, ilev, msegtyp, gap_n, mvoisn, ixs, ixs10, ixs16, ixs20, ipartns, ipen0, penmax, irtse, is2se, is2pt, xfic, nrtse, nsne, prov_n, prov_e, nsvg, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, stif, pene, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, n11, n21, n31, dgapload, s_kremnode, s_remnode, kremnode, remnode, flag_removed_node)
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)