207
208
209
212
213
214
215#include "implicit_f.inc"
216#include "comlock.inc"
217
218
219
220#include "units_c.inc"
221#include "warn_c.inc"
222#include "com01_c.inc"
223
224
225
226 INTEGER NMN,NSN, NOINT,IDT,INACTI,IFQ, NIN, NSNR, NSNROLD
227 INTEGER, INTENT(in) :: NRTM
228 INTEGER, INTENT(in) :: TOTAL_NB_NRTM
229 INTEGER IRECT(4,*),NSV(*),MWAG(*), RENUM(*),NUM_IMP, ITASK
230 INTEGER CAND_E(*),CAND_N(*),IFPEN(*),KREMNOD(*),REMNOD(*),ITAB(*)
231 INTEGER NCONTACT,ESHIFT,ILD,NB_N_B, IGAP, NCONT,INTTH,I_MEM,
232 * II_STOK, FLAGREMNODE, ITIED
233 INTEGER, INTENT(inout) :: REMOTE_S_NODE
234 INTEGER, INTENT(in) :: INTHEAT
235 INTEGER, INTENT(in) :: IDT_THERM
236 INTEGER, INTENT(in) :: NODADT_THERM
237 INTEGER, DIMENSION(NSNR), INTENT(inout) :: LIST_REMOTE_S_NODE
238
240 . gap,tzinf,maxbox,minbox,curv_max_max,
241 . gapmin, gapmax, bminma(12),curv_max(nrtm),bgapsmx
242 my_real ,
INTENT(IN) :: drad,dgapload
244 . x(3,*), cand_p(*), stfn(*),
245 . stf(*), gap_s(*), gap_m(*),
246 . gap_s_l(*), gap_m_l(*), cand_f(*)
247
248
249
250 INTEGER , J, IP0, IP1,
251 . LOC_PROC, N, ISZNSNR,
252 . NSNFIOLD(NSPMD)
253
255 . xyzm(6,2), marge, aaa
256
257
258
259
260
261
262
263 INTEGER NBX,NBY,NBZ
264 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281 ip0 = 1
282 ip1 = ip0 + nsn + nsnrold + 3
283
284
285
286
287
288 xyzm(1,1) = bminma(4)
289 xyzm(2,1) = bminma(5)
290 xyzm(3,1) = bminma(6)
291 xyzm(4,1) = bminma(1)
292 xyzm(5,1) = bminma(2)
293 xyzm(6,1) = bminma(3)
294
295 xyzm(1,2) = bminma(10)
296 xyzm(2,2) = bminma(11)
297 xyzm(3,2) = bminma(12)
298 xyzm(4,2) = bminma(7)
299 xyzm(5,2) = bminma(8)
300 xyzm(6,2) = bminma(9)
301 i_mem = 0
302
303 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.
304 . ifq>0.OR.num_imp>0.OR.itied/=0) THEN
305 isznsnr = nsnr
306 ELSE
307 isznsnr = 0
308 END IF
309
310
311
312 marge = tzinf-
max(gap+dgapload,drad)
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327 IF( nmn /= 0 ) THEN
328 aaa = sqrt(nmn /
329 . ((bminma(7)-bminma(10))*(bminma(8)-bminma(11))
330 . +(bminma(8)-bminma(11))*(bminma(9)-bminma(12))
331 . +(bminma(9)-bminma(12))*(bminma(7)-bminma(10))))
332 ELSE
333 aaa = 0
334 ENDIF
335
336 aaa = 0.75*aaa
337
338 nbx = nint(aaa*(bminma(7)-bminma(10)))
339 nby = nint(aaa*(bminma(8)-bminma(11)))
340 nbz = nint(aaa*(bminma(9)-bminma(12)))
341
345
346 nbx8=nbx
347 nby8=nby
348 nbz8=nbz
349 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
351
352 IF(res8 > lvoxel8) THEN
354 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
355 aaa = aaa**(third)
356 nbx = int((nbx+2)*aaa)-2
357 nby = int((nby+2)*aaa)-2
358 nbz = int((nbz+2)*aaa)-2
362 ENDIF
363
364 nbx8=nbx
365 nby8=nby
366 nbz8=nbz
367 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
368
369 IF(res8 > lvoxel8) THEN
370 nbx =
min(100,
max(nbx8,1))
371 nby =
min(100,
max(nby8,1))
372 nbz =
min(100,
max(nbz8,1))
373 ENDIF
374
375
376
377 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
379 ENDDO
382 1 nsn ,renum ,nsnr ,isznsnr ,i_mem ,
383 2 irect ,x ,stf ,stfn ,xyzm ,
384 3 nsv ,ii_stok ,cand_n ,eshift ,cand_e ,
385 4 ncontact,noint ,tzinf ,gap_s_l ,gap_m_l ,
386 5
voxel1 ,nbx ,nby ,nbz ,intth ,
387 6 inacti ,ifq ,mwag(ip0),cand_p ,ifpen ,
388 7 nrtm ,nsnrold ,igap ,gap ,gap_s ,
389 8 gap_m ,gapmin ,gapmax ,marge ,curv_max,
390 9 nin ,itask ,bgapsmx ,kremnod ,remnod ,
391 a itab ,flagremnode,drad ,itied ,cand_f ,
392 b dgapload,remote_s_node,list_remote_s_node,
393 c total_nb_nrtm,intheat,idt_therm,nodadt_therm)
394
395 234 CONTINUE
396
397
398
399
400
401 IF (i_mem ==2) RETURN
402 IF(i_mem==1)THEN
403 nb_n_b = nb_n_b + 1
404 IF ( nb_n_b > ncont) THEN
405 CALL ancmsg(msgid=85,anmode=aninfo,
406 . i1=noint)
408 ENDIF
409 ild = 1
410 ELSEIF(i_mem==2) THEN
411 IF(debug(1)>=1) THEN
412 iwarn = iwarn+1
413#include "lockon.inc"
414 WRITE(istdo,*)' **WARNING INTERFACE/MEMORY'
415 WRITE(iout,*)' **WARNING INTERFACE NB:',noint
416 WRITE(iout,*)' TOO MANY POSSIBLE IMPACTS'
417 WRITE(iout,*)' SIZE OF INFLUENCE ZONE IS'
418 WRITE(iout,*)' MULTIPLIED BY 0.75'
419#include "lockoff.inc"
420 ENDIF
421 RETURN
422 tzinf = three_over_4*tzinf
423
424
425
426 IF( tzinf<=
max(gap+dgapload,drad) )
THEN
427 CALL ancmsg(msgid=98,anmode=aninfo,
428 . i1=noint,c1='(I7BUCE)')
430 ENDIF
431 ild = 1
432 ELSEIF(i_mem==3)THEN
433 nb_n_b = nb_n_b + 1
434 IF ( nb_n_b > ncont) THEN
435 CALL ancmsg(msgid=100,anmode=aninfo,
436 . i1=noint)
438 ENDIF
439 ild = 1
440 ENDIF
441
442 RETURN
subroutine i7trivox(nsn, renum, nsnr, isznsnr, i_mem, irect, x, stf, stfn, xyzm, nsv, ii_stok, cand_n, eshift, cand_e, mulnsn, noint, tzinf, gap_s_l, gap_m_l, voxel, nbx, nby, nbz, intth, inacti, ifq, cand_a, cand_p, ifpen, nrtm, nsnrold, igap, gap, gap_s, gap_m, gapmin, gapmax, marge, curv_max, nin, itask, bgapsmx, kremnod, remnod, itab, flagremnode, drad, itied, cand_f, dgapload, remote_s_node, list_remote_s_node, total_nb_nrtm, intheat, idt_therm, nodadt_therm)
integer, dimension(lvoxel) voxel1
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)