66
67
68
69 USE timer_mod
73 USE intbufdef_mod
77 USE multi_fvm_mod
79 use check_sorting_criteria_mod , only : check_sorting_criteria
80 use element_mod , only : nixs
81
82
83
84#include "implicit_f.inc"
85#include "comlock.inc"
86
87
88
89#include "com01_c.inc"
90#include "com04_c.inc"
91#include "com08_c.inc"
92#include "param_c.inc"
93#include "task_c.inc"
94#include "parit_c.inc"
95#include "timeri_c.inc"
96#include "inter22.inc"
97
98 COMMON /i22mainc/bminma_lag,bminma_flu,result,nsnr,nsnrold,i_memg,
99 . curv_max_max
100 INTEGER RESULT,NSNR,NSNROLD,I_MEMG
102 . bminma_lag(6),
103 . bminma_flu(6),
104 . curv_max_max
105
106
107
108 TYPE(TIMER_) :: TIMERS
109 INTEGER NIN ,ITASK, RETRI, NRTM_T,ESHIFT,
110 . NUM_IMP ,IND_IMP(*),
111 . ITAB(*), KINET(*),
112 . IPARI(NPARI,NINTER), MWAG(*),
113 . ISENDTO(NINTER+1,*),IRCVFROM(NINTER+1,*),
114 . WEIGHT(*), IAD_ELEM(2,*) ,FR_ELEM(*),
115 . RENUM(NUMNOD), NSNFIOLD(NSPMD), NODNX_SMS(*),
116 . IXS(NIXS,*),NSHELL, COUNT_REMSLV(*)
117 INTEGER , INTENT(IN) :: NODADT_THERM
119 . x(3,*), v(3,*), ms(*),temp(*)
120 TYPE(INTBUF_STRUCT_) INTBUF_TAB
121 TYPE(H3D_DATABASE) :: H3D_DATA
122 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
123
124
125 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
126 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECTIVITY
127
128
129
130 INTEGER LOC_PROC, P,
131 . I, IP0, IP1, IP2, IP21, I_SK_OLD, I_STOK1,
132 . ADD1, NB_N_B, NOINT, INACTI, MULTIMP, IGAP, IFQ,
133 . IAD, J, NF, NL, I1, I2, REM_P(NSPMD-1)
134 INTEGER ::
135 . NBRIC_G,
136 . NBRIC_L,
137 . NSHEL_G,
138 . NSHEL_L,
139 . NSHEL_T,
140 . NSHELR_L
141
142 INTEGER
143 . ILD, NCONT, NCONTACT, INACTII, INACIMP, INTTH,
144 . I_MEM,CAND_N_OLD,IDUM1(1),
145 . ISU1, ISU2, NBF, NBL, IBID, COUNT_CAND, CT,INTFRIC
146 LOGICAL ::
147 . IS_CONTACT
149 . gap,maxbox,minbox,tzinf,
150 . xmaxl, ymaxl, zmaxl, xminl, yminl, zminl, gapmin, gapmax,
151 . c_maxl,bid,
152 . curv_max(nrtm_t),rdum1(1), stfe,
153 . bminma_and_r(6),
154 . bminma_and(6),
155 . vel(4), vel_max
156 INTEGER :: NRTM,NSN,NTY,NMN
157 logical :: need_computation
158
159
160
161
162 call check_sorting_criteria( need_computation,nin,npari,nspmd,
163 . itask,ipari(1,nin),tt,intbuf_tab )
164 if( .not.need_computation ) return
165
166
167 i_memg = 0
168 i_mem = 0
169 is_contact=.false.
170
171
172
173
174 retri = 1
175
176
177
178
179 nrtm =ipari(4,nin)
180 nsn =ipari(5,nin)
181 nmn =ipari(6,nin)
182 nty =ipari(7,nin)
183 noint =ipari(15,nin)
184 ncont =ipari(18,nin)
185 inacti =ipari(22,nin)
186 multimp=ipari(23,nin)
187 ncontact=multimp*ncont
188
189 i_sk_old=0
190
191 nsnrold = 0
192 gap =intbuf_tab%VARIABLES(2)
193 gapmin=intbuf_tab%VARIABLES(13)
194 gapmax=intbuf_tab%VARIABLES(16)
195 intbuf_tab%I_STOK(1)=0
196
197
198
199 nbric_g = ipari(32,nin)
200 isu1 = ipari(45,nin)
201 nbric_l = igrbric(isu1)%NENTITY
202
203
204 nshel_g = ipari(33,nin)
205 nshel_l = ipari(4,nin)
206
207
208 nshel_t = nrtm_t
209
210 nsnr = 0
211 nshelr_l = 0
212
213
215
216
217
218
219 IF(itask==0)THEN
221 ALLOCATE(xmins(nbric_l))
222 ALLOCATE(ymins(nbric_l))
223 ALLOCATE(zmins(nbric_l))
224 ALLOCATE(xmaxs(nbric_l))
225 ALLOCATE(ymaxs(nbric_l))
226 ALLOCATE(zmaxs(nbric_l))
228 ALLOCATE(xmine(nshel_l))
229 ALLOCATE(ymine(nshel_l))
230 ALLOCATE(zmine(nshel_l))
231 ALLOCATE(xmaxe(nshel_l))
232 ALLOCATE(ymaxe(nshel_l))
233 ALLOCATE(zmaxe(nshel_l))
234 bminma_lag(1) = -ep30
235 bminma_lag(2) = -ep30
236 bminma_lag(3) = -ep30
237 bminma_lag(4) = ep30
238 bminma_lag(5) = ep30
239 bminma_lag(6) = ep30
240 dx22_min = ep30
241 v22_max = zero
242 dt22_min = ep30
243 END IF
244
245
246 dx22min_l(itask) = ep30
247 v22max_l(itask) = zero
248
250
252 loc_proc=ispmd+1
253
254
255
256
257 maxbox = intbuf_tab%VARIABLES(9)
258 minbox = intbuf_tab%VARIABLES(12)
259 tzinf = intbuf_tab%VARIABLES(8)
260
261
262
263
264
266 1 x ,intbuf_tab%NSV ,intbuf_tab%MSR ,nsn ,nmn ,
267 2 itask ,intbuf_tab%XSAV ,xminl ,yminl ,zminl ,
268 3 xmaxl ,ymaxl ,zmaxl ,c_maxl ,curv_max ,
269 4 ipari(39,nin) ,intbuf_tab%IRECTM(1+4*eshift) ,nrtm_t )
270
271#include "lockon.inc"
272 bminma_lag(1) =
max(bminma_lag(1),xmaxl)
273 bminma_lag(2) =
max(bminma_lag(2),ymaxl)
274 bminma_lag(3) =
max(bminma_lag(3),zmaxl)
275 bminma_lag(4) =
min(bminma_lag(4),xminl)
276 bminma_lag(5) =
min(bminma_lag(5),yminl)
277 bminma_lag(6) =
min(bminma_lag(6),zminl)
278#include "lockoff.inc"
279 result = 0
280
282
283
284
285 inacti=ipari(22,nin)
286 IF(itask==0)THEN
287 IF(abs(bminma_lag(6)-bminma_lag(3))>2*ep30.OR.
288 + abs(bminma_lag(5)-bminma_lag(2))>2*ep30.OR.
289 + abs(bminma_lag(4)-bminma_lag(1))>2*ep30)THEN
290 CALL ancmsg(msgid=87,anmode=aninfo,
291 . i1=noint,c1='(I22BUCE)')
293 END IF
294
295
297 . "applying TZINF extension to lag domain", tzinf
298
299 bminma_lag(1)=bminma_lag(1)+tzinf
300 bminma_lag(2)=bminma_lag(2)+tzinf
301 bminma_lag(3)=bminma_lag(3)+tzinf
302 bminma_lag(4)=bminma_lag(4)-tzinf
303 bminma_lag(5)=bminma_lag(5)-tzinf
304 bminma_lag(6)=bminma_lag(6)-tzinf
305
307 CALL ancmsg(msgid=36,anmode=aninfo,
308 . c1='(I22MAINTRI)')
310 END IF
311 END IF
312
313
314
315
316
317
318 IF(nspmd > 1) THEN
319 IF(itask==0)THEN
320 ALLOCATE(bminma_lag_spmd(6,nspmd))
321 IF(imonm > 0)
CALL startime(timers,25)
323 . bminma_lag_spmd, bminma_lag, isendto ,ircvfrom , nin)
324 IF(imonm > 0)
CALL stoptime(timers,25)
325
326 if(itask==0.and.
ibug22_tri==1)print *,
"BMINMA=",
327 . bminma_lag(4:6),bminma_lag(1:3)
328 j=1
329
330
331
332
333
334
335 DO p=1,nspmd
336 IF(p==loc_proc)cycle
337 rem_p(j)=p
338 j=j+1
339 END DO
340 p=loc_proc
341 j=nspmd-1
342
343 bminma_lag_r(4) = minval(bminma_lag_spmd(4,rem_p(1:j)))
344 bminma_lag_r(5) = minval(bminma_lag_spmd(5,rem_p(1:j)))
345 bminma_lag_r(6) = minval(bminma_lag_spmd(6,rem_p(1:j)))
346 bminma_lag_r(1) = maxval(bminma_lag_spmd(1,rem_p(1:j)))
347 bminma_lag_r(2) = maxval(bminma_lag_spmd(2,rem_p(1:j)))
348 bminma_lag_r(3) = maxval(bminma_lag_spmd(3,rem_p(1:j)))
349
350 bminma_lag_g(4) =
min(bminma_lag_r(4),bminma_lag_spmd(4,p))
351 bminma_lag_g(5) =
min(bminma_lag_r(5),bminma_lag_spmd(5,p))
352 bminma_lag_g(6) =
min(bminma_lag_r(6),bminma_lag_spmd(6,p))
353 bminma_lag_g(1) =
max(bminma_lag_r(1),bminma_lag_spmd(1,p))
354 bminma_lag_g(2) =
max(bminma_lag_r(2),bminma_lag_spmd(2,p))
355 bminma_lag_g(3) =
max(bminma_lag_r(3),bminma_lag_spmd(3,p))
356
358 print *, ""
359 print *, "TZINF=", tzinf
360 print *, ""
361 print *, "---------------------------------------------------"
362 print *, "CURRENT DOMAIN =", loc_proc
363 print *, "--------BOUNDS FOR CURRENT LAG DOMAIN--------------"
364 print *, " BMINMAL=", bminma_lag(4:6),bminma_lag(1:3)
365 print *, "--------BOUNDS FOR ALL LAG DOMAINS-----------------"
366 DO i=1, nspmd
367 print *, "DOMAIN =", ispmd+1
368 print *, " BMINMAL=",
369 . bminma_lag_spmd(4:6,i),bminma_lag_spmd(1:3,i)
370 END DO
371 print *, "--------BOUNDS FOR AL REMOTE LAG DOMAINS-----------"
372 print *, " BMINMAL=", bminma_lag_r(4:6),bminma_lag_r(1:3)
373 print *, "--------BOUNDS FOR LAG GLOBAL DOMAINS--------------"
374 print *, " BMINMAL=", bminma_lag_g(4:6),bminma_lag_g(1:3)
375 print *, "---------------------------------------------------"
376 !print *, ""
377 end if
378 !---------------debug--------------!
379 END IF
380 ELSE
381 IF(ITASK==0) BMINMA_LAG_G = BMINMA_LAG
382 END IF
383
384
385
386
387 !initialization of the fluid domain bounds
388 BMINMA_FLU(1) = -EP30
389 BMINMA_FLU(2) = -EP30
390 BMINMA_FLU(3) = -EP30
391 BMINMA_FLU(4) = EP30
392 BMINMA_FLU(5) = EP30
393 BMINMA_FLU(6) = EP30
394
395
396 !IBUFSSG(IAD)[1:NBRIC_L] is multi-threaded
397 !computing MIN/MAX for 3D fluid elems
398 CALL I22SOLID_GETMINMAX (
399 1 X, IXS, IGRBRIC(ISU1)%ENTITY, NBRIC_L,
400 2 ITAB, ITASK, NIN )
401
402 CALL MY_BARRIER
403
404 !calculation of the fluid domain bounds
405#include "lockon.inc"
406 BMINMA_FLU(1) = MAX(BMINMA_FLU(1),MAXVAL(XMAXS))
407 BMINMA_FLU(2) = MAX(BMINMA_FLU(2),MAXVAL(YMAXS))
408 BMINMA_FLU(3) = MAX(BMINMA_FLU(3),MAXVAL(ZMAXS))
409 BMINMA_FLU(4) = MIN(BMINMA_FLU(4),MINVAL(XMINS))
410 BMINMA_FLU(5) = MIN(BMINMA_FLU(5),MINVAL(YMINS))
411 BMINMA_FLU(6) = MIN(BMINMA_FLU(6),MINVAL(ZMINS))
412#include "lockoff.inc"
413
414 CALL MY_BARRIER ! waiting for fluid local domain bounds definition (multi-threading)
415
416 IF(ITASK==0) THEN
417 BMINMA_FLU(1) = BMINMA_FLU(1)+TZINF
418 BMINMA_FLU(2) = BMINMA_FLU(2)+TZINF
419 BMINMA_FLU(3) = BMINMA_FLU(3)+TZINF
420 BMINMA_FLU(4) = BMINMA_FLU(4)-TZINF
421 BMINMA_FLU(5) = BMINMA_FLU(5)-TZINF
422 BMINMA_FLU(6) = BMINMA_FLU(6)-TZINF
423 !---------------debug--------------!
424.and. if(itask==0ibug22_tri==1)then
425 print *, "--------local fluid domain-------------"
426 print *, " bminmal_flu=", BMINMA_FLU(4:6),BMINMA_FLU(1:3)
427 print *, "---------------------------------------------------"
428 print *, ""
429 end if
430 !---------------debug--------------!
431 END IF
432
433
434
435
436
437 !computing MIN/MAX for 2D elems
438 CALL I22SHELL_GETMINMAX(
439 1 X, INTBUF_TAB%IRECTM(1+4*ESHIFT), NRTM_T, INTBUF_TAB%STFM(1+ESHIFT), ITASK,
440 2 ITAB, ESHIFT, BMINMA_FLU, TZINF )
441
442 CALL MY_BARRIER !XMINE,XMAXE,... must be defined by all threads before going on.
443
444
445
446
447
448
449
450 IF(NSPMD > 1) THEN
451
452 IF(ITASK==0) CRVOXEL(0:LRVOXEL,0:LRVOXEL,LOC_PROC)=0
453 CALL MY_BARRIER ! waiting for crvoxel init.
454.AND. IF (IMONM > 0 ITASK == 0) CALL STARTIME(TIMERS,26)
455
456 CALL SPMD_TRI22VOX0(
457 1 X, BMINMA_FLU , NBRIC_L, IXS, IGRBRIC(ISU1)%ENTITY,
458 2 ITASK, ITAB , XMINS , YMINS, ZMINS ,
459 3 XMAXS, YMAXS , ZMAXS ,BMINMA_LAG_R, IS_CONTACT,
460 4 BMINMA_AND_R )
461
462 CALL MY_BARRIER ! all thread has to mark local domain Voxel before reading it above.
463
464.AND. IF (IMONM > 0 ITASK == 0) CALL STOPTIME(TIMERS,26)
465 IF(ITASK==0)THEN
466 IF (IMONM > 0 ) CALL STARTIME(TIMERS,25)
467 !Contact = True if intersection not zero between local fluid field / distant lag
468 IF(IS_CONTACT) CALL SPMD_TRI22VOX(
469 1 INTBUF_TAB%IRECTM ,NSHEL_L ,X ,V ,BMINMA_AND_R, !send the shells of the domain
470 2 INTBUF_TAB%STFM ,NIN ,ISENDTO ,IRCVFROM ,IAD_ELEM ,
471 3 FR_ELEM ,NSNR ,ITAB ,ITASK )
472
473 IF (IMONM > 0) CALL STOPTIME(TIMERS,25)
474
475 NIRECT_L = NSHEL_L + NSNR !We had an upper one of nshel_l+nshelr_l, we know maintain the exact size because nshelr_l = nsnr (nb candidate remote)
476
477 ELSE
478 !check if there is contact with the intersection of the domains
479
480 END IF
481
482 call MY_BARRIER! wait for the allocation and filling of XREM to fill IRECT_L
483 NSHELR_L = NSNR
484 !NSHELR_T = NSNR
485
486 END IF
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503! Filling with local data
504 DO I=0,NSHEL_T-1
505 IP1=I+1
506 J = ESHIFT + IP1 !numero global (local+remote)
507 STFE = INTBUF_TAB%STFM(1+ESHIFT+I) ! stiffness in the shell group of the thread
508 IRECT_L(23 , J) = STFE ! Stiffness
509 !IF(STFE==ZERO) CYCLE
510 I1 = 1+4*ESHIFT+4*I
511 I2 = I1+3
512 IRECT_L(1:4 , J) = ITAB(INTBUF_TAB%IRECTM(I1:I2)) ! User Nodes
513 IRECT_L(5:8 , J) = X(1,INTBUF_TAB%IRECTM(I1:I2)) ! X-coordinates
514 IRECT_L(9:12 , J) = X(2,INTBUF_TAB%IRECTM(I1:I2)) ! Y-coordinates
515 IRECT_L(13:16, J) = X(3,INTBUF_TAB%IRECTM(I1:I2)) ! Z-coordinates
516 IRECT_L(17:19, J) = (/XMINE(J),YMINE(J),ZMINE(J)/) ! Minimum X,Y,Z
517 IRECT_L(20:22, J) = (/XMAXE(J),YMAXE(J),ZMAXE(J)/) ! Maximum X,Y,Z
518 IRECT_L(24, J) = SUM(V(1,INTBUF_TAB%IRECTM(I1:I2)))/FOUR ! X-Velocity (mean)
519 IRECT_L(25, J) = SUM(V(2,INTBUF_TAB%IRECTM(I1:I2)))/FOUR ! Y-Velocity (mean)
520 IRECT_L(26, J) = SUM(V(3,INTBUF_TAB%IRECTM(I1:I2)))/FOUR ! Z-Velocity (mean)
521
522 !cinematic time step
523 vel(1) = dot_product(V(1:3,INTBUF_TAB%IRECTM(I1+0)),V(1:3,INTBUF_TAB%IRECTM(I1+0)))
524 vel(2) = dot_product(V(1:3,INTBUF_TAB%IRECTM(I1+1)),V(1:3,INTBUF_TAB%IRECTM(I1+1)))
525 vel(3) = dot_product(V(1:3,INTBUF_TAB%IRECTM(I1+2)),V(1:3,INTBUF_TAB%IRECTM(I1+2)))
526 vel(4) = dot_product(V(1:3,INTBUF_TAB%IRECTM(I1+3)),V(1:3,INTBUF_TAB%IRECTM(I1+3)))
527 vel(1) = SQRT(vel(1))
528 vel(2) = SQRT(vel(2))
529 vel(3) = SQRT(vel(3))
530 vel(4) = SQRT(vel(4))
531 v22max_l(ITASK) = MAX(v22max_l(ITASK), MAXVAL(vel) )
532
533 END DO
534
535! Filling with remote faces data
536 NF = 1+ITASK*NSHELR_L/NTHREAD
537 NL = (ITASK+1)*NSHELR_L/NTHREAD
538 DO I=NF,NL !1,NSNR
539 J = NSHEL_L+I
540 IRECT_L(1:4 , J) = XREM( 1:4,I) ! User Nodes
541 IRECT_L(5:8 , J) = XREM( 5:8,I) ! X-coordinates
542 IRECT_L(9:12 , J) = XREM( 9:12,I) ! Y-coordinates
543 IRECT_L(13:16 , J) = XREM(13:16,I) ! Z-coordinates
544 IRECT_L(17:19 , J) = XREM(17:19,I) ! Minimum X,Y,Z
545 IRECT_L(20:22 , J) = XREM(20:22,I) ! Maximum X,Y,Z
546 IRECT_L(23 , J) = XREM( 23,I) ! Stiffness (necessarily not zero)
547 IRECT_L(24:26 , J) = XREM(24:26,I) ! XYZ-Velocity (mean)
548
549 !missing SPMD cinematic time step
550 END DO
551!
552
553
554
555
556 CALL MY_BARRIER
557#include "lockon.inc"
558 v22_max = MAX(v22_max,v22max_l(ITASK))
559#include "lockoff.inc"
560
561
562
563
564
565 CAND_N_OLD = INTBUF_TAB%I_STOK(1)
566 40 CONTINUE !verifier
567
568 ILD = 0
569 NB_N_B = 1
570
571
572
573
574
575
576 BMINMA_AND(1) = MIN(BMINMA_FLU(1),BMINMA_LAG_G(1))
577 BMINMA_AND(2) = MIN(BMINMA_FLU(2),BMINMA_LAG_G(2))
578 BMINMA_AND(3) = MIN(BMINMA_FLU(3),BMINMA_LAG_G(3))
579 BMINMA_AND(4) = MAX(BMINMA_FLU(4),BMINMA_LAG_G(4))
580 BMINMA_AND(5) = MAX(BMINMA_FLU(5),BMINMA_LAG_G(5))
581 BMINMA_AND(6) = MAX(BMINMA_FLU(6),BMINMA_LAG_G(6))
582
583
584
585
586
587
588 50 CALL MY_BARRIER
589
590 IF (BMINMA_AND(1)-BMINMA_AND(4)<0)GOTO 999
591 IF (BMINMA_AND(2)-BMINMA_AND(5)<0)GOTO 999
592 IF (BMINMA_AND(3)-BMINMA_AND(6)<0)GOTO 999
593
594 ISKIP22 = 0
595
596
597
598
599
600 IF (IMONM > 0) CALL STARTIME(TIMERS,30)
601 CALL I22BUCE(
602 1 X ,INTBUF_TAB%IRECTM(1+4*ESHIFT) ,INTBUF_TAB%NSV ,INACTI ,ISKIP22 ,
603 2 NMN ,NSHEL_T ,NSN ,INTBUF_TAB%CAND_E ,INTBUF_TAB%CAND_N ,
604 3 GAP ,NOINT ,INTBUF_TAB%I_STOK(1) ,NCONTACT ,BMINMA_AND ,
605 4 TZINF ,MAXBOX ,MINBOX ,MWAG ,CURV_MAX ,
606 6 NB_N_B ,ESHIFT ,ILD ,IFQ ,IBID ,
607 8 INTBUF_TAB%STFNS ,NIN ,INTBUF_TAB%STFM(1+ESHIFT) ,IPARI(21,NIN) ,
608 A NSHELR_L ,NCONT ,RENUM ,NSNROLD ,
609 B GAPMIN ,GAPMAX ,CURV_MAX_MAX ,NUM_IMP ,
610 C INTTH ,ITASK ,INTBUF_TAB%VARIABLES(7) ,I_MEM ,
611 D IXS ,IGRBRIC(ISU1)%ENTITY ,NBRIC_L ,ITAB ,NSHEL_L ,
612 E ALE_CONNECTIVITY ,IPARI(1,NIN) )
613
614
615 IF (I_MEM == 2)THEN
616#include "lockon.inc"
617 I_MEMG = I_MEM
618#include "lockoff.inc"
619 ENDIF
620
621 CALL MY_BARRIER
622
623 IF(I_MEMG /=0)THEN
624!$OMP SINGLE
625 MULTIMP = IPARI(23,NIN) + 4
626 CALL UPGRADE_MULTIMP(NIN,MULTIMP,INTBUF_TAB)
627!$OMP END SINGLE
628 I_MEM = 0
629 I_MEMG = 0
630 INTBUF_TAB%i_STOK(1) = CAND_N_OLD
631 MULTIMP = IPARI(23,NIN)
632 NCONTACT = MULTIMP*NCONT
633
634 GOTO 40
635 ENDIF
636
637 IF (IMONM > 0) CALL STOPTIME(TIMERS,30)
638
639 COUNT_CAND = INTBUF_TAB%I_STOK(1)
640 CT = INTBUF_TAB%I_STOK(1)
641#include "lockon.inc"
642 INTBUF_TAB%VARIABLES(9) = MIN(MAXBOX,INTBUF_TAB%VARIABLES(9))
643 INTBUF_TAB%VARIABLES(12) = MIN(MINBOX,INTBUF_TAB%VARIABLES(12))
644 INTBUF_TAB%VARIABLES(8) = MIN(TZINF,INTBUF_TAB%VARIABLES(8))
645 INTBUF_TAB%VARIABLES(5) = INTBUF_TAB%VARIABLES(8)-GAP
646 RESULT = RESULT + ILD
647 LSKYI_COUNT = LSKYI_COUNT+COUNT_CAND*5
648 COUNT_REMSLV(NIN) = COUNT_REMSLV(NIN)+CT
649#include "lockoff.inc"
650
651
652
653
654
655 CALL MY_BARRIER
656 IF (RESULT/=0) THEN
657 CALL MY_BARRIER
658 IF (ITASK==0) THEN
659
660 INTBUF_TAB%I_STOK(1) = I_SK_OLD
661 RESULT = 0
662 ENDIF
663 CALL MY_BARRIER
664 ILD = 0
665 MAXBOX = INTBUF_TAB%VARIABLES(9)
666 MINBOX = INTBUF_TAB%VARIABLES(12)
667 TZINF = INTBUF_TAB%VARIABLES(8)
668 GOTO 50
669 ENDIF
670
671 IF(NSPMD>1)THEN
672
673!$OMP SINGLE
674 IF (IMONM > 0) CALL STARTIME(TIMERS,26)
675 INTBUF_TAB%VARIABLES(5) = -INTBUF_TAB%VARIABLES(5)
676
677 INTFRIC = 0
678 CALL SPMD_TRI7GAT(
679 1 RESULT ,NSN ,INTBUF_TAB%CAND_N,INTBUF_TAB%I_STOK(1),NIN,
680 2 IPARI(21,NIN),NSNR,MULTIMP ,NTY,IPARI(47,NIN),
681 3 IDUM1 ,NSNFIOLD, IPARI, H3D_DATA,INTFRIC,
682 4 MULTI_FVM,NODADT_THERM)
683 IPARI(24,NIN) = NSNR
684
685 IF (NUM_IMP>0)
686 . CALL IMP_RNUMCD(INTBUF_TAB%CAND_N,NIN,NSN,NUM_IMP,IND_IMP )
687
688 IF (IMONM > 0) CALL STOPTIME(TIMERS,26)
689!$OMP END SINGLE
690 END IF
691
692
693
694
695
696 999 CONTINUE !JUMP IF DOMAINE INTERSECTION VIDE (PAS DE CANDIDATS)
697
698
699 IF(ITASK==0)THEN
700 !DEALLOCATE(IRECT_L)
701 DEALLOCATE(XMINS)
702 DEALLOCATE(YMINS)
703 DEALLOCATE(ZMINS)
704 DEALLOCATE(XMAXS)
705 DEALLOCATE(YMAXS)
706 DEALLOCATE(ZMAXS)
707 DEALLOCATE(NSNR_G)
708 DEALLOCATE(XMINE)
709 DEALLOCATE(YMINE)
710 DEALLOCATE(ZMINE)
711 DEALLOCATE(XMAXE)
712 DEALLOCATE(YMAXE)
713 DEALLOCATE(ZMAXE)
714 IF(ALLOCATED(BMINMA_LAG_SPMD))DEALLOCATE(BMINMA_LAG_SPMD)
715 END IF
716
717 RETURN
subroutine i22xsave(x, nsv, msr, nsn, nmn, itask, xsav, xmin, ymin, zmin, xmax, ymax, zmax, c_max, curv_max, icurv, irect, nrtm_t)
integer, dimension(:), allocatable nsnr_g
subroutine spmd_lagbounds_exch_i22(bminmal_spmd, bminmal, isendto, ircvfrom, nin)
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)
subroutine startime(event, itask)
subroutine stoptime(event, itask)