63
64
65
66
67
68
69
70
71
72
73#include "implicit_f.inc"
74
75
76
77#include "mvsiz_p.inc"
78#include "param_c.inc"
79
80
81
82#include "com04_c.inc"
83#include "vect07_c.inc"
84
85
86
87 INTEGER NB_NC,NB_EC,I_ADD,MAXSIZ,J_STOK,I_MEM,ILEV
88 INTEGER I_BID, I_AMAX,NB_N_B, NOINT, NSN, IGNORE,NINT
89 INTEGER ADD(2,0:*),IRECT(4,*),BPE(*),PE(*),BPN(*),PN(*)
90 INTEGER NSV(*),IRTL(*),KNOD2ELS(*), KNOD2ELC(*),
91 . KNOD2ELTG(*), NOD2ELS(*), NOD2ELC(*), NOD2ELTG(*),
92 . IXC(*),IXTG(*),IPARTC(*),IXS(*),
93 . IXS10(*), (*), IXS20(*),IPARTTG(*),IGEO(*),
94 . IWORKSH(*)
95
97 . x(3,*),xyzm(6,*),st(*),dmin(*),tzinf,
98 . maxbox,minbox, xmax,
ymax, zmax,thk(*),thk_part(*),geo(*),
99 . pm(*),dsearch,pm_stack(*)
100 INTEGER ID
101 CHARACTER(LEN=NCHARTITLE) :: TITR
102 INTEGER, DIMENSION(MVSIZ), INTENT(INOUT) :: ,PROV_E,NSVG
103 INTEGER, DIMENSION(MVSIZ), INTENT(INOUT) :: IX1,IX2,IX3,IX4
104 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: n11,n12,n13
105 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x1,x2,x3,x4
106 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: y1,y2,y3,y4
107 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: z1,z2,z3,z4
108 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: xi,yi,zi
109 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: x0,y0,z0
110 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx1,ny1,nz1
111 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx2,ny2,nz2
112 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx3,ny3,nz3
113 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: nx4,ny4,nz4
114 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: p1,p2,p3,p4
115 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lb1,lb2,lb3,lb4
116 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: lc1,lc2,lc3,lc4,stif
117 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) :: s,t
118
119
120
121 INTEGER NB_NCN,NB_ECN,ADDNN,ADDNE,IPOS,I,IP,J
122 INTEGER INF,SUP,DIR,N1,N2,N3,N4,NN,NE,MEMX,IFLAG
124 . bid,dx,dy,dz,dsup,seuil,xmx,xmn,gapv(mvsiz)
125
126 DATA memx/0/
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188 IF(nb_ec==0.OR.nb_nc==0) THEN
189
190
191
192 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
193 RETURN
194 ENDIF
195
196
197
198 dx = xyzm(4,i_add) - xyzm(1,i_add)
199 dy = xyzm(5,i_add) - xyzm(2,i_add)
200 dz = xyzm(6,i_add) - xyzm(3,i_add)
202
203 IF(add(2,1)+nb_ec>=maxsiz) THEN
204
205 IF ( nb_n_b == numnod) THEN
207 . msgtype=msgerror,
208 . anmode=aninfo,
210 . c1=titr)
211 ENDIF
212 i_mem = 1
213 RETURN
214 ENDIF
215 IF(dsup<minbox.OR.
216 . nb_nc<=nb_n_b.AND.dsup<maxbox.OR.
217 . nb_nc<=nb_n_b.AND.nb_ec==1) THEN
218
219
220
221
222 DO 20 i=1,nb_ec
223 ne = bpe(i)
224 n1=irect(1,ne)
225 n2=irect(2,ne)
226 n3=irect(3,ne)
227 n4=irect(4,ne)
228 DO 20 j=1,nb_nc
229 nn=nsv(bpn(j))
230 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4) THEN
231 j_stok = j_stok + 1
232 prov_n(j_stok) = bpn(j)
233 prov_e(j_stok) = ne
234 IF(j_stok==nvsiz) THEN
235 lft = 1
236 llt = nvsiz
237 nft = 0
238 j_stok = 0
239 iflag = 0
240 CALL i2cor3(x ,irect ,nsv ,prov_e ,prov_n,
241 1 bid ,bid ,gapv ,0 ,tzinf,
242 2 bid ,bid ,0 ,nint ,ixc ,
243 4 ixtg ,thk_part,ipartc,geo , noint,
244 5 ixs ,ixs10 ,pm ,thk ,knod2els,
245 6 knod2elc,knod2eltg,nod2els,nod2elc,nod2eltg,
246 7 ignore,ixs16 ,ixs20 ,iparttg,igeo,dsearch ,
247 8 pm_stack , iworksh ,ix1 ,ix2 ,
248 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
249 6 x3 ,x4 ,y1 ,y2 ,y3 ,
250 7 y4 ,z1 ,z2 ,z3 ,z4 ,
251 8 xi ,yi ,zi ,stif ,iflag )
252 IF (ilev == 27) THEN
253
254 CALL i2dst3_27(gapv,prov_e ,prov_n,tzinf,irtl,st,dmin,
255 . ignore,thk ,knod2els,knod2elc,knod2eltg,
256 . nod2els,nod2elc,nod2eltg,x,irect,
257 . nint,ixc ,ixtg,thk_part,ipartc,geo,
258 . noint,ixs,ixs10,pm,ix3,
259 1 ix4,x1 ,x2 ,x3 ,x4 ,
260 1 y1 ,y2 ,y3 ,y4 ,z1 ,
261 2 z2 ,z3 ,z4 ,xi ,yi ,
262 3 zi ,x0 ,y0 ,z0 ,nx1,
263 4 ny1,nz1,nx2,ny2,nz2,
264 5 nx3,ny3,nz3,nx4,ny4,
265 6 nz4,p1 ,p2 ,p3 ,p4 ,
266 7 lb1,lb2,lb3,lb4,lc1,
267 8 lc2,lc3,lc4,s ,t )
268 ELSE
269 CALL i2dst3(gapv,prov_e ,prov_n,tzinf,irtl,st,dmin,
270 . ignore,thk ,knod2els,knod2elc,knod2eltg,
271 . nod2els,nod2elc,nod2eltg,x,irect,
272 . nint,ixc ,ixtg,thk_part,ipartc,geo,
273 . noint,ixs,ixs10,pm,ix3,
274 1 ix4,x1 ,x2 ,x3 ,x4 ,
275 1 y1 ,y2 ,y3 ,y4 ,z1 ,
276 2 z2 ,z3 ,z4 ,xi ,yi ,
277 3 zi ,x0 ,y0 ,z0 ,nx1,
278 4 ny1,nz1,nx2,ny2,nz2,
279 5 nx3,ny3,nz3,nx4,ny4,
280 6 nz4,p1 ,p2 ,p3 ,p4 ,
281 7 lb1,lb2,lb3,lb4,lc1,
282 8 lc2,lc3,lc4,s ,t )
283 ENDIF
284 ENDIF
285
286
287 ENDIF
288 20 CONTINUE
289
290
291 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
292 RETURN
293 ENDIF
294
295
296
297
298
299
300
301
302
303
304
305
306 dir = 1
307 IF(dy==dsup) THEN
308 dir = 2
309 ELSE IF(dz==dsup) THEN
310 dir = 3
311 ENDIF
312 seuil =(xyzm(dir+3,i_add)+xyzm(dir,i_add))/2
313
314
315
316 nb_ncn= 0
317 addnn= add(1,1)
318 inf = 0
319 sup = 0
320 DO 70 i=1,nb_nc
321 IF(x(dir,nsv(bpn(i)))<seuil) THEN
322
323 addnn = addnn + 1
324 pn(addnn) = bpn(i)
325 inf = 1
326 ELSE
327 nb_ncn = nb_ncn + 1
328 bpn(nb_ncn) = bpn(i)
329
330 sup = 1
331 ENDIF
332 70 CONTINUE
333
334
335
336
337
338
339
340
341 nb_ecn= 0
342 addne= add(2,1)
343 DO i=1,nb_ec
344 xmx =
max(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
345 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
346 . + tzinf
347 xmn =
min(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
348 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
349 . - tzinf
350 IF(xmn<seuil.AND.inf==1) THEN
351
352 addne = addne + 1
353 pe(addne) = bpe(i)
354 ENDIF
355 IF(xmx>=seuil.AND.sup==1) THEN
356
357 nb_ecn = nb_ecn + 1
358 bpe(nb_ecn) = bpe(i)
359 ENDIF
360 ENDDO
361
362
363
364 add(1,2) = addnn
365 add(2,2) = addne
366
367
368
369
370
371
372 xyzm(1,i_add+1) = xyzm(1,i_add)
373 xyzm(2,i_add+1) = xyzm(2,i_add)
374 xyzm(3,i_add+1) = xyzm(3,i_add)
375 xyzm(4,i_add+1) = xyzm(4,i_add)
376 xyzm(5,i_add+1) = xyzm(5,i_add)
377 xyzm(6,i_add+1) = xyzm(6,i_add)
378 xyzm(dir,i_add+1) = seuil
379 xyzm(dir+3,i_add) = seuil
380
381 nb_nc = nb_ncn
382 nb_ec = nb_ecn
383
384 i_add = i_add + 1
385 IF(i_add>=1000) THEN
386
387 IF ( nb_n_b == numnod) THEN
389 . msgtype=msgerror,
390 . anmode=aninfo,
392 . c1=titr)
393 ENDIF
394 i_mem = 1
395 RETURN
396 ENDIF
397
398
399 RETURN
subroutine i2cor3(x, irect, nsv, cand_e, cand_n, stf, stfn, gapv, igap, gap, gap_s, gap_m, istf, nint, ixc, ixtg, thk_part, ipartc, geo, noint, ixs, ixs10, pm, thk, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, ignore, ixs16, ixs20, iparttg, igeo, dsearch, pm_stack, iworksh, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, stif, iflag)
subroutine i2dst3(gapv, cand_e, cand_n, tzinf, irtl, st, dmin, ignore, thk, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, x, irect, nint, ixc, ixtg, thk_part, ipartc, geo, noint, ixs, ixs10, pm, 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, s, t)
subroutine i2dst3_27(gapv, cand_e, cand_n, tzinf, irtl, st, dmin, ignore, thk, knod2els, knod2elc, knod2eltg, nod2els, nod2elc, nod2eltg, x, irect, nint, ixc, ixtg, thk_part, ipartc, geo, noint, ixs, ixs10, pm, 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, s, t)
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
integer, parameter nchartitle
subroutine i7dstk(i_add, nb_nc, nb_ec, add, bpn, pn, bpe, pe)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)