66
67
68
69 USE timer_mod
72 USE intbufdef_mod
74 USE multi_fvm_mod
76 use check_sorting_criteria_mod , only : check_sorting_criteria
77 use glob_therm_mod
78
79
80
81#include "implicit_f.inc"
82#include "comlock.inc"
83#include "spmd.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 "units_c.inc"
92#include "task_c.inc"
93#include "timeri_c.inc"
94
95 COMMON /i7mainc/bminma,curv_max_max,result,nsnr,nsnrold,i_memg,nmn_g
96 INTEGER RESULT,NSNR,NSNROLD,I_MEMG,NMN_G
98 . bminma(12),curv_max_max
99
100
101
102 TYPE(TIMER_) :: TIMERS
103 INTEGER NIN ,ITASK, RETRI, NRTM_T,ESHIFT,
104 . NUM_IMP ,IND_IMP(*),
105 . ITAB(*), KINET(*),
106 . IPARI(NPARI,NINTER), MWAG(*),
107 . ISENDTO(NINTER+1,*),IRCVFROM(NINTER+1,*),
108 . WEIGHT(*), IAD_ELEM(2,*) ,FR_ELEM(*),
109 . RENUM(*), NSNFIOLD(NSPMD), NODNX_SMS(*), IXS(NIXS, *)
110
112 . x(*), v(*), ms(*),temp(*)
113
114 TYPE(INTBUF_STRUCT_) INTBUF_TAB
115 TYPE(H3D_DATABASE) :: H3D_DATA
116 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
117 TYPE(GLOB_THERM_), INTENT(IN) :: GLOB_THERM
118
119
120
121 INTEGER
122 . LOC_PROC,
123 . I, IP0, IP1, IP2, IP21, I_SK_OLD, I_STOK1,
124 . ADD1, NB_N_B, NOINT, INACTI, MULTIMP, IGAP, IFQ, ITIED
125 INTEGER
126 . ILD, NCONT, NCONTACT, INACTII, INACIMP, INTTH,
127 . I_MEM,CAND_N_OLD,IDUM1(1),NMN_L,
129 . gap,maxbox,minbox,tzinf,dgaploadp,
130 . xmaxl, ymaxl, zmaxl, xminl, yminl, zminl, gapmin, gapmax,
131 . c_maxl,drad,mx,my,mz,dx,dy,dz,sx,sy,sz,sx2,sy2,sz2,
132 . curv_max(nrtm_t),rdum1(1)
133 REAL T1
134 LOGICAL TYPE18
135 INTEGER :: NRTM,NSN,NMN,NTY
136 logical :: need_computation
137
138
139
140 call check_sorting_criteria( need_computation,nin,npari,nspmd,
141 . itask,ipari(1,nin),tt,intbuf_tab )
142 if( .not.need_computation ) return
143
144 i_mem = 0
145 i_memg = 0
146 nmn_g = 0
147 nmn_l = 0
148
149
150 nrtm =ipari(4,nin)
151 nsn =ipari(5,nin)
152 nmn =ipari(6,nin)
153 nty =ipari(7,nin)
154 ivis2 =ipari(14,nin)
155 noint =ipari(15,nin)
156 ncont =ipari(18,nin)
157 inacti =ipari(22,nin)
158 multimp =ipari(23,nin)
159 ifq =ipari(31,nin)
160 intth =ipari(47,nin)
161 itied =ipari(85,nin)
162
163 loc_proc=ispmd+1
164 ncontact=multimp*ncont
165
166 type18=.false.
167 IF(nty==7 .AND. inacti==7)type18=.true.
168
169 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0.OR.
170 . num_imp>0.OR.itied/=0)THEN
171 nsnrold = ipari(24,nin)
172 ELSE
173 nsnrold = 0
174 ENDIF
175
176 gap =intbuf_tab%VARIABLES(gap_index)
177 gapmin=intbuf_tab%VARIABLES(gapmin_index)
178 gapmax=intbuf_tab%VARIABLES(gapmax_index)
179 drad = zero
180 IF(ipari(7,nin)==7) drad =intbuf_tab%VARIABLES(drad_index)
181 dgaploadp= intbuf_tab%VARIABLES(bgapemx_index)
182
183
184
185
186
187 retri = 1
188
189
190
191 maxbox = intbuf_tab%VARIABLES(maxbox_index)
192 minbox = intbuf_tab%VARIABLES(minbox_index)
193 tzinf = intbuf_tab%VARIABLES(tzinf_index)
194 bminma(1)=-ep30
195 bminma(2)=-ep30
196 bminma(3)=-ep30
197 bminma(4)=ep30
198 bminma(5)=ep30
199 bminma(6)=ep30
200 bminma(7)=zero
201 bminma(8)=zero
202 bminma(9)=zero
203 bminma(10)=zero
204 bminma(11)=zero
205 bminma(12)=zero
206 curv_max_max = zero
207
208
209
210
211
212
213
214
216
217 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.ifq>0.OR.
218 . num_imp>0.OR.itied/=0)THEN
219 IF(itask==0)THEN
220 inactii=inacti
221 IF (num_imp>0.AND.
222 . (inacti/=5.AND.inacti/=6.AND.ifq<=0)) THEN
223 inacimp = 0
224 ELSE
225 inacimp = 1
226 ENDIF
227 ip0 = 1
228 ip1 = ip0 + nsn + nsnrold + 3
229
230 i_sk_old = intbuf_tab%I_STOK(1)
232 1 nsn+nsnrold ,i_sk_old ,intbuf_tab%CAND_N,intbuf_tab%CAND_E,
233 2 intbuf_tab%CAND_P,intbuf_tab%FTSAVX,intbuf_tab%FTSAVY,intbuf_tab%FTSAVZ,
234 3 mwag(ip0) ,intbuf_tab%IFPEN ,inacti ,ifq ,
235 4 num_imp ,ind_imp ,intbuf_tab%STFNS ,nin ,
236 5 nsn ,itied,intbuf_tab%CAND_F )
237
238 IF(i_sk_old==0)inacti=-abs(inacti)
239 intbuf_tab%I_STOK(1)=i_sk_old
240 IF(inactii/=7.AND.inacimp>0)THEN
241 IF (nspmd>1) THEN
243 . ircvfrom,inactii)
244 ELSE
245 ipari(22,nin) = inacti
246 ENDIF
247 ENDIF
248 ENDIF
249 ELSE
250 i_sk_old=0
251 intbuf_tab%I_STOK(1)=0
252 ENDIF
253
254
255
256
257 IF(type18)THEN
259 1 x ,intbuf_tab%NSV ,intbuf_tab%MSR,nsn ,nmn ,
260 2 itask ,intbuf_tab%XSAV,xminl ,yminl ,zminl ,
261 3 xmaxl ,ymaxl ,zmaxl ,c_maxl,curv_max,
262 4 ipari(39,nin),intbuf_tab%IRECTM(1+4*eshift) ,nrtm_t,sx,sy,
263 5 sz ,sx2 ,sy2 ,sz2 ,nmn_l )
264 ELSE
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,sx,sy,
270 5 sz ,sx2 ,sy2 ,sz2 ,nmn_l )
271 ENDIF
272#include "lockon.inc"
273 bminma(1) =
max(bminma(1),xmaxl)
274 bminma(2) =
max(bminma(2),ymaxl)
275 bminma(3) =
max(bminma(3),zmaxl)
276 bminma(4) =
min(bminma(4),xminl)
277 bminma(5) =
min(bminma(5),yminl)
278 bminma(6) =
min(bminma(6),zminl)
279 curv_max_max =
max(curv_max_max,c_maxl)
280 bminma(7) = bminma(7)+sx
281 bminma(8) = bminma(8)+sy
282 bminma(9) = bminma(9)+sz
283 bminma(10)= bminma(10)+sx2
284 bminma(11)= bminma(11)+sy2
285 bminma(12)= bminma(12)+sz2
286 nmn_g = nmn_g + nmn_l
287#include "lockoff.inc"
288
289 result = 0
290
292
293 inacti=ipari(22,nin)
294 IF(itask==0)THEN
295 IF(abs(bminma(6)-bminma(3))>2*ep30.OR.
296 + abs(bminma(5)-bminma(2))>2*ep30.OR.
297 + abs(bminma(4)-bminma(1))>2*ep30)THEN
298 CALL ancmsg(msgid=87,anmode=aninfo,
299 . i1=noint,c1='(I7BUCE)')
301 END IF
302
303 bminma(1)=bminma(1)+tzinf+curv_max_max
304 bminma(2)=bminma(2)+tzinf+curv_max_max
305 bminma(3)=bminma(3)+tzinf+curv_max_max
306 bminma(4)=bminma(4)-tzinf-curv_max_max
307 bminma(5)=bminma(5)-tzinf-curv_max_max
308 bminma(6)=bminma(6)-tzinf-curv_max_max
309
310
311
312 mx=bminma(7)/
max(nmn_g,1)
313 my=bminma(8)/
max(nmn_g,1)
314 mz=bminma(9)/
max(nmn_g,1)
315
316
317
318
319 dx=sqrt(
max(bminma(10)/
max(nmn_g,1)-mx**2,zero))
320 dy=sqrt(
max(bminma(11)/
max(nmn_g,1)-my**2,zero))
321 dz=sqrt(
max(bminma(12)/
max(nmn_g,1)-mz**2,zero))
322
323
324
325 bminma(7) =
min(mx+2*dx,bminma(1))
326 bminma(8) =
min(my+2*dy,bminma(2))
327 bminma(9) =
min(mz+2*dz,bminma(3))
328 bminma(10) =
max(mx-2*dx,bminma(4))
329 bminma(11) =
max(my-2*dy,bminma(5))
330 bminma(12) =
max(mz-2*dz,bminma(6))
331
332 IF(abs(bminma(10)-bminma(7))<em10)THEN
333 bminma(10)=bminma(4)
334 bminma(7)=bminma(1)
335 END IF
336 IF(abs(bminma(11)-bminma(8))<em10)THEN
337 bminma(11)=bminma(5)
338 bminma(8)=bminma(2)
339 END IF
340 IF(abs(bminma(12)-bminma(9))<em10)THEN
341 bminma(12)=bminma(6)
342 bminma(9)=bminma(3)
343 END IF
344
346 CALL ancmsg(msgid=36,anmode=aninfo,
347 . c1='(I7MAINTRI)')
349 END IF
350
351 nsnr = 0
352
353 END IF
354
355
356 IF(nspmd > 1) THEN
357
359
361
362 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,26)
364 1 x ,bminma ,ipari(21,nin),nrtm_t,intbuf_tab%STFM(1+eshift),
365 2 tzinf ,curv_max,gapmin ,gapmax,intbuf_tab%GAP_M(1+eshift),
366 3 intbuf_tab%IRECTM(1+4*eshift),gap ,intbuf_tab%VARIABLES(bgapsmx_index),drad,
367 4 dgaploadp )
368
370 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,26)
371
372 IF(itask==0)THEN
373
374
375
376 IF (multi_fvm%IS_USED .AND. nty == 7 .AND. inacti == 7) THEN
377
378 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,25)
380 1 intbuf_tab%NSV,nsn ,x ,v ,ms ,
381 2 bminma ,weight ,intbuf_tab%STFNS,nin ,isendto,
382 3 ircvfrom ,iad_elem,fr_elem ,nsnr ,ipari(21,nin),
383 4 intbuf_tab%GAP_S,itab ,kinet ,ifq ,inacti ,
384 5 nsnfiold,ipari(47,nin),intbuf_tab%IELEC,intbuf_tab%AREAS,temp ,
385 6 num_imp ,nodnx_sms,intbuf_tab%GAP_SL,nty ,idum1 ,
386 7 rdum1 ,rdum1,rdum1,rdum1,idum1 ,idum1 ,idum1, ixs, multi_fvm,
387 8 ipari(72,nin),intbuf_tab%IPARTFRICS)
388 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,25)
389
390
391 ELSE
392 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,25)
393
395 1 intbuf_tab%NSV,nsn ,x ,v ,ms ,
396 2 bminma ,weight ,intbuf_tab%STFNS,nin ,isendto,
397 3 ircvfrom ,iad_elem,fr_elem ,nsnr ,ipari(21,nin),
398 4 intbuf_tab%GAP_S,itab ,kinet ,ifq ,inacti ,
399 5 nsnfiold,ipari(47,nin),intbuf_tab%IELEC,intbuf_tab%AREAS,temp ,
400 6 num_imp ,nodnx_sms,intbuf_tab%GAP_SL,nty ,idum1 ,
401 7 rdum1 ,rdum1,rdum1,rdum1,idum1 ,idum1 ,idum1 ,
402 8 ipari(72,nin),intbuf_tab%IPARTFRICS ,itied, ivis2, intbuf_tab%IF_ADH)
403 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,25)
404
405
406 ENDIF
407
408
409
410 IF(inacti==5.OR.inacti==6.OR.inacti==7.OR.
411 + ifq>0.OR.num_imp>0.OR.itied/=0)THEN
413 1 intbuf_tab%CAND_N,renum ,intbuf_tab%I_STOK(1), nin,nsn,
414 2 nsnfiold ,nsnrold)
415 END IF
416 END IF
417 END IF
418
419 cand_n_old = intbuf_tab%I_STOK(1)
420 40 CONTINUE
421
422 ild = 0
423 nb_n_b = 1
424
425
426
427
428
429
430
431
432
433
434
435
436
438 IF(itask==0) THEN
442 ENDIF
444
445 IF(ipari(63,nin) ==2 ) intbuf_tab%METRIC%ALGO = algo_voxel
446
447
448#ifdef MPI
449 IF(itask == 0) intbuf_tab%METRIC%TIC =
mpi_wtime()
450#else
451 IF(itask == 0) THEN
452 CALL cpu_time(t1)
453 intbuf_tab%METRIC%TIC = nint(100.0 * t1)
454 ENDIF
455#endif
456 IF (imonm > 0 .AND. itask == 0)
CALL startime(timers,30)
457
458 IF(intbuf_tab%METRIC%ALGO == algo_voxel .OR. intbuf_tab%METRIC%ALGO == try_algo_voxel) THEN
460 1 x ,intbuf_tab%IRECTM(1+4*eshift),intbuf_tab%NSV ,inacti ,intbuf_tab%CAND_P,
461 2 nmn_g ,nrtm_t ,nsn ,intbuf_tab%CAND_E,intbuf_tab%CAND_N,
462 3 gap ,noint ,intbuf_tab%I_STOK(1) ,ncontact ,bminma ,
463 4 tzinf ,maxbox ,minbox ,mwag ,curv_max ,
464 6 nb_n_b ,eshift ,ild ,ifq ,intbuf_tab%IFPEN,
465 8 intbuf_tab%STFNS,nin ,intbuf_tab%STFM(1+eshift),ipari(21,nin),intbuf_tab%GAP_S,
466 a nsnr ,ncont ,renum ,nsnrold ,intbuf_tab%GAP_M(1+eshift),
467 b gapmin ,gapmax ,curv_max_max ,num_imp ,intbuf_tab%GAP_SL,
468 c intbuf_tab%GAP_ML(1+eshift),intth ,itask , intbuf_tab%VARIABLES(bgapsmx_index),i_mem ,
469 d intbuf_tab%KREMNODE(1+2*eshift),intbuf_tab%REMNODE,itab , ipari(63,nin),drad ,
471 f nrtm ,glob_therm%INTHEAT,glob_therm%IDT_THERM,glob_therm%NODADT_THERM)
472 ELSE
474 1 x ,intbuf_tab%IRECTM(1+4*eshift),intbuf_tab%NSV ,inacti ,intbuf_tab%CAND_P
475 2 nmn_g ,nrtm_t ,nsn ,intbuf_tab%CAND_E,intbuf_tab%CAND_N,
476 3 gap ,noint ,intbuf_tab%I_STOK(1) ,ncontact ,bminma ,
477 4 tzinf ,maxbox ,minbox ,mwag ,curv_max
478 6 nb_n_b ,eshift ,ild ,ifq ,intbuf_tab%IFPEN,
479 8 intbuf_tab%STFNS,nin ,intbuf_tab%STFM(1+eshift),ipari(21,nin),intbuf_tab%GAP_S,
480 a nsnr ,ncont ,renum ,nsnrold ,intbuf_tab%GAP_M(1+eshift
481 b gapmin ,gapmax ,curv_max_max ,num_imp ,intbuf_tab%GAP_SL,
482 c intbuf_tab%GAP_ML(1+eshift),intth ,itask , intbuf_tab%VARIABLES(bgapsmx_index),i_mem ,
483 d intbuf_tab%KREMNODE(1+2*eshift),intbuf_tab%REMNODE,itab
484 e itied ,intbuf_tab%CAND_F,dgaploadp,glob_therm%INTHEAT, glob_therm%IDT_THERM, glob_therm%NODADT_THERM)
485
486 ENDIF
487
488 IF (i_mem >= 1 )THEN
489#include "lockon.inc"
490 i_memg = i_mem
491#include "lockoff.inc"
492 ENDIF
493
494
496
497#ifdef MPI
498 IF(itask == 0 ) intbuf_tab%METRIC%TOC =
mpi_wtime()
499#else
500 IF(itask == 0) THEN
501 CALL cpu_time(t1)
502 intbuf_tab%METRIC%TOC = nint(100.0 * t1)
503 ENDIF
504#endif
505
506
507 IF(i_memg /=0)THEN
508 IF(i_memg == 3 .OR. i_memg == 1) intbuf_tab%METRIC%ALGO = algo_voxel
509
510
511
512
513 multimp = ipari(23,nin) + 4
515
516 i_mem = 0
517 i_memg = 0
518 intbuf_tab%I_STOK(1) = cand_n_old
519 multimp=ipari(23,nin)
520 ncontact=multimp*ncont
521 GOTO 40
522 ENDIF
523
524
525 IF (imonm > 0 .AND. itask == 0)
CALL stoptime(timers,30)
526 IF( itask == 0) THEN
527 IF( intbuf_tab%METRIC%ALGO == try_algo_voxel) THEN
528 intbuf_tab%METRIC%ALGO = try_algo_bucket
529 intbuf_tab%METRIC%TOLD = intbuf_tab%METRIC%TOC - intbuf_tab%METRIC%TIC
530 ELSEIF ( intbuf_tab%METRIC%ALGO == try_algo_bucket) THEN
531 IF( 1.2d0 * (intbuf_tab%METRIC%TOC-intbuf_tab%METRIC%TIC) < intbuf_tab%METRIC%TOLD) THEN
532 intbuf_tab%METRIC%ALGO = algo_bucket
533 WRITE(iout,*) "INFO: DOMAIN",ispmd,
534 . "USES SORT2 FOR CONTACT INTERFACE",noint
535 ELSE
536 intbuf_tab%METRIC%ALGO = algo_voxel
537
538
539 ENDIF
540 ENDIF
541 ENDIF
542
543#include "lockon.inc"
544 intbuf_tab%VARIABLES(maxbox_index) =
min(maxbox,intbuf_tab%VARIABLES(maxbox_index))
545 intbuf_tab%VARIABLES(minbox_index) =
min(minbox,intbuf_tab%VARIABLES(minbox_index))
546 intbuf_tab%VARIABLES(tzinf_index) =
min(tzinf,intbuf_tab%VARIABLES(tzinf_index))
547 intbuf_tab%VARIABLES(distance_index) = intbuf_tab%VARIABLES(tzinf_index)-gap
548 result = result + ild
549#include "lockoff.inc"
550
551
553 IF (result/=0) THEN
555 IF (itask==0) THEN
556
557 intbuf_tab%I_STOK(1) = i_sk_old
558 result = 0
559 ENDIF
561 ild = 0
562 maxbox = intbuf_tab%VARIABLES(maxbox_index)
563 minbox = intbuf_tab%VARIABLES(minbox_index)
564 tzinf = intbuf_tab%VARIABLES(tzinf_index)
565 GOTO 50
566 ENDIF
567
568 IF(nspmd>1)THEN
569
570
571 IF (imonm > 0)
CALL startime(timers,26)
572 intbuf_tab%VARIABLES
573
575 1 result ,nsn ,intbuf_tab%CAND_N,intbuf_tab%I_STOK(1),nin,
576 2 ipari(21,nin),nsnr ,multimp ,nty ,ipari(47,nin),
577 3 idum1 ,nsnfiold, ipari , h3d_data ,ipari(72,nin),
578 4 multi_fvm,glob_therm%NODADT_THERM)
579 ipari(24,nin) = nsnr
580
581 IF (num_imp>0)
582 .
CALL imp_rnumcd(intbuf_tab%CAND_N,nin,nsn,num_imp,ind_imp )
583
584 IF (imonm > 0)
CALL stoptime(timers,26)
585
586 END IF
587
588 IF(itask==0) THEN
590 ENDIF
592
593 RETURN
subroutine i18xsave(x, nsv, msr, nsn, nmn, itask, xsav, xmin, ymin, zmin, xmax, ymax, zmax, c_max, curv_max, icurv, irect, nrtm_t, sx, sy, sz, sx2, sy2, sz2, nmn_l)
subroutine i7buce(x, irect, nsv, inacti, cand_p, nmn, nrtm, nsn, cand_e, cand_n, gap, noint, ii_stok, ncontact, bminma, tzinf, maxbox, minbox, mwag, curv_max, nb_n_b, eshift, ild, ifq, ifpen, stfn, nin, stf, igap, gap_s, nsnr, ncont, renum, nsnrold, gap_m, gapmin, gapmax, curv_max_max, num_imp, gap_s_l, gap_m_l, intth, itask, bgapsmx, i_mem, kremnod, remnod, itab, flagremnode, drad, itied, cand_f, dgapload, intheat, idt_therm, nodadt_therm)
subroutine i7buce_vox(x, irect, nsv, inacti, cand_p, nmn, nrtm, nsn, cand_e, cand_n, gap, noint, ii_stok, ncontact, bminma, tzinf, maxbox, minbox, mwag, curv_max, nb_n_b, eshift, ild, ifq, ifpen, stfn, nin, stf, igap, gap_s, nsnr, ncont, renum, nsnrold, gap_m, gapmin, gapmax, curv_max_max, num_imp, gap_s_l, gap_m_l, intth, itask, bgapsmx, i_mem, kremnod, remnod, itab, flagremnode, drad, itied, cand_f, dgapload, remote_s_node, list_remote_s_node, total_nb_nrtm, intheat, idt_therm, nodadt_therm)
subroutine i7trc(nsn, i_stok, cand_n, cand_e, cand_p, cand_fx, cand_fy, cand_fz, cand_a, ifpen, inacti, ifq, num_imp, ind_imp, stfns, nin, nsnl, itied, cand_f)
subroutine i7xsave(x, nsv, msr, nsn, nmn, itask, xsav, xmin, ymin, zmin, xmax, ymax, zmax, c_max, curv_max, icurv, irect, nrtm_t, sx, sy, sz, sx2, sy2, sz2, nmn_l)
subroutine imp_rnumcd(cand_n, nin, nsn, num_imp, index)
double precision function mpi_wtime()
integer, dimension(:), allocatable list_remote_s_node
integer, dimension(0:lrvoxel, 0:lrvoxel) crvoxel
subroutine spmd_get_inacti7(inacti, ipari22, nin, isendto, ircvfrom, inactii)
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_tri18_151vox(nsv, nsn, x, v, ms, bminmal, weight, stifn, nin, isendto, ircvfrom, iad_elem, fr_elem, nsnr, igap, gap_s, itab, kinet, ifq, inacti, nsnfiold, intth, ielec, areas, temp, num_imp, nodnx_sms, gap_s_l, ityp, irtlm, i24_time_s, i24_frfi, i24_pene_old, i24_stif_old, nbinflg, ilev, i24_icont_i, ixs, multi_fvm, intfric, ipartfrics)
subroutine spmd_tri7vox0(x, bminmal, igap, nrtm, stf, tzinf, curv_max, gapmin, gapmax, gap_m, irect, gap, bgapsmx, drad, dgapload)
subroutine spmd_tri7vox_optimized(nsv, nsn, x, v, ms, bminmal, weight, stifn, nin, isendto, ircvfrom, iad_elem, fr_elem, nsnr, igap, gap_s, itab, kinet, ifq, inacti, nsnfiold, intth, ielec, areas, temp, num_imp, nodnx_sms, gap_s_l, ityp, irtlm, i24_time_s, i24_frfi, i24_pene_old, i24_stif_old, nbinflg, ilev, i24_icont_i, intfric, ipartfrics, itied, ivis2, if_adh)
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)