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