89
90
91
92
93 USE timer_mod
94 USE elbufdef_mod
96 USE intbufdef_mod
97 USE multi_fvm_mod
99 USE intbuf_fric_mod
105
106
107
108#include "implicit_f.inc"
109
110
111
112#include "mvsiz_p.inc"
113
114
115
116#include "com01_c.inc"
117#include "com04_c.inc"
118#include "com08_c.inc"
119#include "param_c.inc"
120#include "warn_c.inc"
121#include "task_c.inc"
122#include "parit_c.inc"
123#include "timeri_c.inc"
124#include "impl1_c.inc"
125#include "macro.inc"
126#include "comlock.inc"
127#include "tabsiz_c.inc"
128
129
130
131 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
132 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECTIVITY
133 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
134 INTEGER NELTST,ITYPTST,NIN,NEWFRONT,NSTRF(*),NRTMDIM, IAD17, ISENSINT(*),DIMFB,IGROUPS(NUMELS)
135 INTEGER IPARI(NPARI,NINTER), ICODT(*),ICONTACT(*),ITAB(*), ISKY(*), KINET(*),IPARG(NPARG,*),TAGNCONT(NLOADP_HYD_INTER,NUMNOD)
136 INTEGER NB_JLT,NB_JLT_NEW,NB_STOK_N,JTASK,NISKYFI, LINDMAX,ITASK
137 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),IND_IMP(*)
138 INTEGER IXS(*) ,IXS16(*) ,IXS20(*)
139 INTEGER IAD_ELEM(2,*),FR_ELEM(*), ISKYI_SMS(*), NODNX_SMS(*),NPC(*),KXIG3D(NIXIG3D,*),IXIG3D(*),IGEO(NPROPGI,*)
140 INTEGER, INTENT(IN) :: S_LOADPINTER
141 INTEGER, INTENT(IN) :: KLOADPINTER(NINTER+1),(S_LOADPINTER),(NLOADP_HYD)
142 INTEGER, INTENT(IN) :: INTEREFRIC
143 INTEGER, INTENT(IN) :: NODADT_THERM
144 my_real,
intent(in) :: theaccfact
145 my_real,
INTENT(IN) :: dgaploadint(s_loadpinter)
146 my_real eminx(*), xcell(3,sxcell)
147 my_real dt2t,x(3,*), a(3,*), fsav(*), v(3,*),ms(*),stifn(*),fskyi(lskyi,4),fcont(3,*),ms0(*),
148 . secfcum(7,numnod,nsect),viscn(*), fsavsub(*),
149 . fncont(3,*), ftcont(3,*), rcontact(*), acontact(*),
150 . pcontact(*),temp(*),fthe(*),ftheskyi(lskyi),pm(npropm,*),
151 . mskyi_sms(*), qfricint(*),tf(*),condn(*),condnskyi(lskyi),wige(*),knot(*)
152 my_real knotlocpc(*),knotlocel(*)
153 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
154 INTEGER, INTENT(in) :: S_XCELL_REMOTE
155 my_real,
DIMENSION(S_XCELL_REMOTE),
INTENT(in) :: xcell_remote
156 TYPE(INTBUF_STRUCT_) INTBUF_TAB
157 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
158 TYPE(H3D_DATABASE) :: H3D_DATA
159 TYPE(INTBUF_FRIC_STRUCT_), TARGET, DIMENSION(NINTERFRIC) :: INTBUF_FRIC_TAB
160 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
161
162
163
164 INTEGER I, J, I_STOK, JLT_NEW, JLT , NFT, IVIS2,
165 . IBC, ISECIN, IBAG, IADM,
166 . IGAP, INACTI, IFQ, MFROT, IGSTI, NISUB, ITIED,
167 . JLT_TIED, NB_LOC, I_STOK_LOC,DEBUT,
168 . ILAGM, LENR, LENT, MAXCC,INTTH,IFORM, H, IERROR,
169 . SYM_FLAG_TYPE19, INTFRIC ,NSETPRTS ,NPARTFRIC ,IORTHFRIC,
170 . NFORTH ,NFISOT
171 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
172 . (MVSIZ), CN_LOC(MVSIZ),CE_LOC(MVSIZ),
173 . CAND_N_N(MVSIZ),CAND_E_N(MVSIZ),KINI(MVSIZ),
174 . INDEX2(LINDMAX),
175 . ISDSIZ(NSPMD+1),IRCSIZ(NSPMD+1),ITAG(NUMNOD),
176 . IELECI(MVSIZ), NSMS(MVSIZ), IPARTFRICSI(MVSIZ),
177 . IPARTFRICMI(MVSIZ),INDEXISOT(MVSIZ),INDEXORTH(MVSIZ),
178 . IREP_FRICMI(MVSIZ)
179 my_real startt, fric, gap, stopt,visc,viscf,stiglo,gapmin, kmin, kmax, gapmax,rstif,fheats,fheatm,tint,dtmini
180
181 my_real nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
182 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
183 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
184 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
185 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
186 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz),
187 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
188 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
189 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
190 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
191 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
192 . gapv(mvsiz),vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
193 . tempi(mvsiz),phi(mvsiz),areasi(mvsiz),
194 . efrict(mvsiz),fni(mvsiz),condint(mvsiz),msi_append(2*mvsiz)
195 my_real rcurvi(mvsiz), anglmi(mvsiz), anglt, padm
196 INTEGER NRTMFT, NRTMLT, NMNFT, NMNLT, NRADM,IRSTH,IFRIC
197 my_real nnx1(mvsiz), nnx2(mvsiz), nnx3(mvsiz), nnx4(mvsiz),
198 . nny1(mvsiz), nny2(mvsiz), nny3(mvsiz), nny4(mvsiz),
199 . nnz1(mvsiz), nnz2(mvsiz), nnz3(mvsiz), nnz4(mvsiz),
200 . cmaj(mvsiz)
201 INTEGER ICURV,SFSAVPARIT,NINLOADP
202 my_real drad, drad2, frad,xthe,xfric,dgaploadp
203 my_real,
DIMENSION(:,:,:),
ALLOCATABLE :: fsavparit
204 my_real ks(mvsiz),k1(mvsiz),k2(mvsiz),k3(mvsiz),k4(mvsiz),
205 . cs(mvsiz),c1(mvsiz),c2(mvsiz),c3(mvsiz),c4(mvsiz),
206 . kt(mvsiz),c(mvsiz),cf(mvsiz),
207 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz),
208 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
209 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
210 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
211 . phi1(mvsiz),phi2(mvsiz),phi3(mvsiz),phi4(mvsiz)
212 my_real xfiltr_fric,fric_coefs(mvsiz,10),viscffric(mvsiz),fricc(mvsiz),
213 . fric_coefs2(mvsiz,10),viscffric2(mvsiz),fricc2(mvsiz),
214 . dir1(mvsiz,3),dir2(mvsiz,3),dir_fricmi(mvsiz,2)
215 INTEGER, DIMENSION(:) ,POINTER :: TABCOUPLEPARTS_FRIC
216 INTEGER, DIMENSION(:) ,POINTER :: TABPARTS_FRIC
217 INTEGER, DIMENSION(:) ,POINTER :: ADPARTS_FRIC
218 INTEGER, DIMENSION(:) ,POINTER :: IFRICORTH
219 my_real,
DIMENSION(:) ,
POINTER :: tabcoef_fric
220 INTEGER,TARGET, DIMENSION(1):: TABCOUPLEPARTS_FRIC_BID
221 INTEGER,TARGET, DIMENSION(1):: TABPARTS_FRIC_BID
222 INTEGER,TARGET, DIMENSION(1):: ADPARTS_FRIC_BID
223 INTEGER,TARGET, DIMENSION(1):: IFRICORTH_BID
224 my_real,
TARGET,
DIMENSION(1):: tabcoef_fric_bid
225 INTEGER :: NSN, NTY, NOINT
226 INTEGER :: NRTM
227 LOGICAL TYPE18
228 INTEGER :: IDIR
229
230
231
232 type18 = .false.
233 nrtm = ipari(4,nin)
234 nsn = ipari(5,nin)
235 nty = ipari(7,nin)
236 ibc = ipari(11,nin)
237 ivis2 = ipari(14,nin)
238 IF(ipari(33,nin) == 1) RETURN
239 noint = ipari(15,nin)
240 igap = ipari(21,nin)
241 inacti = ipari(22,nin)
242 isecin = ipari(28,nin)
243 mfrot = ipari(30,nin)
244 ifq = ipari(31,nin)
245 ibag = ipari(32,nin)
246 igsti = ipari(34,nin)
247 nisub = ipari(36,nin)
248 icurv = ipari(39,nin)
249 itied = ipari(85,nin)
250 sym_flag_type19 = ipari(71,nin)
251
252 intth = ipari(47,nin)
253 iform = ipari(48,nin)
254 irsth = ipari(42,nin)
255
256 iadm = ipari(44,nin)
257 nradm = ipari(49,nin)
258 padm = intbuf_tab%VARIABLES(24)
259 anglt = intbuf_tab%VARIABLES(25)
260 stiglo = -intbuf_tab%STFAC(1)
261 startt = intbuf_tab%VARIABLES(3)
262 stopt = intbuf_tab%VARIABLES(11)
263 IF(startt > tt) RETURN
264 IF(tt > stopt) RETURN
265 fric = intbuf_tab%VARIABLES(1)
266 gap = intbuf_tab%VARIABLES(2)
267 gapmin = intbuf_tab%VARIABLES(13)
268 visc = intbuf_tab%VARIABLES(14)
269 viscf= intbuf_tab%VARIABLES(15)
270 ifric = 0
271 IF(intth > 0) ifric =ipari(50,nin)
272 xfric = intbuf_tab%VARIABLES(34)
273 gapmax = intbuf_tab%VARIABLES(16)
274 kmin = intbuf_tab%VARIABLES(17)
275 kmax = intbuf_tab%VARIABLES(18)
276 rstif = intbuf_tab%VARIABLES(20)
277 fheats = intbuf_tab%VARIABLES(21)
278 tint = intbuf_tab%VARIABLES(22)
279 dtmini = intbuf_tab%VARIABLES(41)
280 fheatm = intbuf_tab%VARIABLES(23)
281 xthe = intbuf_tab%VARIABLES(33)
282 frad = zero
283 drad = zero
284 drad2 = zero
285 IF(nty == 7)THEN
286 frad = intbuf_tab%VARIABLES(31)
287 drad = intbuf_tab%VARIABLES(32)
288 drad2 = drad*drad
289 ENDIF
290
291
292 intfric=ipari(72,nin)
293 iorthfric = 0
294 nsetprts = 0
295 npartfric = 0
296 xfiltr_fric = zero
297
298 IF(intfric /= 0) THEN
299 tabcoupleparts_fric => intbuf_fric_tab(intfric)%TABCOUPLEPARTS_FRIC
300 tabcoef_fric => intbuf_fric_tab(intfric)%TABCOEF_FRIC
301 tabparts_fric => intbuf_fric_tab(intfric)%TABPARTS_FRIC
302 adparts_fric => intbuf_fric_tab(intfric)%ADPARTS_FRIC
303 xfiltr_fric = intbuf_fric_tab(intfric)%XFILTR_FRIC
304 nsetprts = intbuf_fric_tab(intfric)%NSETPRTS
305 npartfric = intbuf_fric_tab(intfric)%S_TABPARTS_FRIC
306 iorthfric = intbuf_fric_tab(intfric)%IORTHFRIC
307 ifricorth => intbuf_fric_tab(intfric)%IFRICORTH
308 ELSE
309 tabcoupleparts_fric => tabcoupleparts_fric_bid
310 tabparts_fric => tabparts_fric_bid
311 tabcoef_fric => tabcoef_fric_bid
312 adparts_fric => adparts_fric_bid
313 ifricorth => ifricorth_bid
314 IF (ifq/=0) xfiltr_fric = intbuf_tab%XFILTR(1)
315 ENDIF
316
317 ninloadp = ipari(95,nin)
318 dgaploadp = intbuf_tab%VARIABLES(46)
319
320 IF(nty == 7)THEN
321 IF(inacti == 7) type18 = .true.
322 IF(type18 .AND. ipari(34,nin) == -2) RETURN
323
324
325
326 IF(icurv == 3)THEN
328 IF(jtask == 1)THEN
329 ALLOCATE(intbuf_tab%NODNORM_NORMAL (3,numnod))
330 IF(iparit == 0)THEN
331 CALL i7norm(ipari(4,nin),intbuf_tab%IRECTM,numnod,x,intbuf_tab%NODNORM_NORMAL,ipari(6,nin),intbuf_tab%MSR
332 IF(nspmd > 1)THEN
333 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
334 CALL spmd_exch_n(intbuf_tab%NODNORM_NORMAL,iad_elem,fr_elem,lenr)
335 END IF
336 ELSE
337
338 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
339 IF(nspmd > 1)THEN
340
342 1 ipari(4,nin),intbuf_tab%IRECTM,numnod,iad_elem,fr_elem,
343 2 isdsiz ,ircsiz ,itag ,lenr ,lent ,
344 3 maxcc )
345 ELSE
346
348 1 ipari(4,nin),intbuf_tab%IRECTM,numnod,itag,lent,maxcc)
349 END IF
351 1 ipari(4,nin),intbuf_tab%IRECTM,numnod ,x ,intbuf_tab%NODNORM_NORMAL,
352 2 ipari(6,nin),intbuf_tab%MSR ,lent ,maxcc,isdsiz ,
353 3 ircsiz ,iad_elem ,fr_elem,itag )
354 END IF
355 END IF
357 ENDIF
358
359
360
361
362 IF(iadm /= 0)THEN
364 IF(jtask==1)THEN
365 ALLOCATE(intbuf_tab%MODRCURV(nrtmdim),intbuf_tab%MODANGLM(nrtmdim))
366 ALLOCATE(intbuf_tab%NODNORM_NORMAL (3,numnod))
367 IF(iparit == 0)THEN
369 . ipari(4,nin),intbuf_tab%IRECTM,numnod,x ,intbuf_tab%NODNORM_NORMAL,
370 . ipari(6,nin),intbuf_tab%MSR)
371 IF(nspmd > 1)THEN
372 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
373 CALL spmd_exch_n(intbuf_tab%NODNORM_NORMAL,iad_elem,fr_elem,lenr)
374 END IF
375 ELSE
376
377 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
378 IF(nspmd > 1)THEN
379
381 1 ipari(4,nin),intbuf_tab%IRECTM,numnod,iad_elem,fr_elem,
382 2 isdsiz ,ircsiz ,itag ,lenr ,lent ,
383 3 maxcc )
384 ELSE
385
387 1 ipari(4,nin),intbuf_tab%IRECTM,numnod,itag,lent,maxcc)
388 END IF
390 1 ipari(4,nin),intbuf_tab%IRECTM,numnod ,x ,intbuf_tab%NODNORM_NORMAL,
391 2 ipari(6,nin),intbuf_tab%MSR,lent ,maxcc,isdsiz ,
392 3 ircsiz ,iad_elem ,fr_elem,itag )
393 END IF
394 END IF
396 nmnft=1+(jtask-1)*ipari(6,nin)/nthread
397 nmnlt=jtask*ipari(6,nin)/nthread
398 CALL i7norme(nmnft,nmnlt,intbuf_tab%NODNORM_NORMAL,intbuf_tab%MSR)
400 nrtmft=1+(jtask-1)*ipari(4,nin)/nthread
401 nrtmlt=jtask*ipari(4,nin)/nthread
402 CALL i7rcurv(nrtmft, nrtmlt ,x ,intbuf_tab%NODNORM_NORMAL ,intbuf_tab%IRECTM ,
403 . intbuf_tab%MODRCURV , nradm ,intbuf_tab%MODANGLM ,anglt )
405 END IF
406
407
408 i_stok = intbuf_tab%I_STOK(1)
409 debut = 0
410 i_stok_loc = 0
411
412
413 IF(inacti /= 7 .OR. ibag == 0)THEN
414 nb_loc = i_stok / nthread
415 IF (jtask == nthread) THEN
416 i_stok_loc = i_stok-nb_loc*(nthread-1)
417 ELSE
418 i_stok_loc = nb_loc
419 ENDIF
420 debut = (jtask-1)*nb_loc
421 END IF
422 i_stok = 0
423
424 IF (impl_s == 1) THEN
425 num_imp = 0
426 visc =zero
427 viscf =zero
428 ENDIF
429
430
431
432 IF(itied == 0)THEN
433 IF (inacti == 5 .OR. inacti == 6 .OR. type18)THEN
434 DO i = debut+1, debut+i_stok_loc
435 IF(intbuf_tab%CAND_N(i)<0) THEN
436 i_stok = i_stok + 1
437 index2(i_stok) = i
438
439 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
440 ELSE
441
442 intbuf_tab%CAND_P(i) = zero
443 ENDIF
444 ENDDO
445 ELSE
446 DO i = debut+1, debut+i_stok_loc
447 IF(intbuf_tab%CAND_N(i)<0) THEN
448 i_stok = i_stok + 1
449 index2(i_stok) = i
450
451 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
452 ENDIF
453 ENDDO
454 ENDIF
455 ELSE
456 IF (inacti == 5 .OR. inacti == 6)THEN
457 DO i = debut+1, debut+i_stok_loc
458 IF(intbuf_tab%CAND_F(8*(i-1)+1)/=zero) THEN
459 i_stok = i_stok + 1
460 index2(i_stok) = i
461 intbuf_tab%CAND_N(i) = iabs(intbuf_tab%CAND_N(i))
462 ELSEIF(intbuf_tab%CAND_N(i)<0) THEN
463 i_stok = i_stok + 1
464 index2(i_stok) = i
465
466 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
467 ELSE
468
469 intbuf_tab%CAND_P(i) = zero
470 intbuf_tab%CAND_F(8*(i-1)+1:8*(i-1)+8) = zero
471 ENDIF
472 ENDDO
473 ELSE
474 DO i = debut+1, debut+i_stok_loc
475 IF(intbuf_tab%CAND_F(8*(i-1)+1)/=zero) THEN
476 i_stok = i_stok + 1
477 index2(i_stok) = i
478 intbuf_tab%CAND_N(i) = iabs(intbuf_tab%CAND_N(i))
479 ELSEIF(intbuf_tab%CAND_N(i)<0) THEN
480 i_stok = i_stok + 1
481 index2(i_stok) = i
482
483 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
484 ELSE
485 intbuf_tab%CAND_F(8*(i-1)+1:8*(i-1)+8) = zero
486 ENDIF
487 ENDDO
488 END IF
489 ENDIF
490
491
492 IF (debug(3) >= 1) THEN
493 nb_jlt = nb_jlt + i_stok_loc
494 nb_stok_n = nb_stok_n + i_stok
495 ENDIF
496
497 sfsavparit = 0
498 DO i=1,nisub+1
499 IF(isensint(i)/=0) THEN
500 sfsavparit = sfsavparit + 1
501 ENDIF
502 ENDDO
503 IF (sfsavparit /= 0) THEN
504 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
505 IF(ierror/=0) THEN
506 CALL ancmsg(msgid=19,anmode=aninfo,c1=
'(/INTER/TYPE7)')
508 ENDIF
509 DO j=1,i_stok
510 DO i=1,11
511 DO h=1,nisub+1
512 fsavparit(h,i,j) = zero
513 ENDDO
514 ENDDO
515 ENDDO
516 ELSE
517 ALLOCATE(fsavparit(0,0,0),stat=ierror)
518 IF(ierror/=0) THEN
519 CALL ancmsg(msgid=19,anmode=aninfo,c1=
'(/INTER/TYPE7)')
521 ENDIF
522 ENDIF
523
524 !--------------------------------------------------------
525
526
527
528
529 DO nft = 0 , i_stok - 1 , nvsiz
530 jlt =
min( nvsiz, i_stok - nft )
531
532 CALL i7cdcor3(jlt,index2(nft+1),intbuf_tab%CAND_E,intbuf_tab%CAND_N,cand_e_n,cand_n_n)
533
535 1 jlt ,x ,intbuf_tab%IRECTM,intbuf_tab%NSV,cand_e_n,
536 2 cand_n_n ,intbuf_tab%STFM,intbuf_tab%STFNS,x1 ,x2 ,
537 3 x3 ,x4 ,y1 ,y2 ,y3 ,
538 4 y4 ,z1 ,z2 ,z3 ,z4 ,
539 5 xi ,yi ,zi ,stif ,ix1 ,
540 6 ix2 ,ix3 ,ix4 ,nsvg ,igap ,
541 7 gap ,intbuf_tab%GAP_S,intbuf_tab%GAP_M,gapv ,
542 9 ms ,vxi ,vyi ,
543 a vzi ,msi ,nsn ,v ,kinet ,
544 b kini ,nty ,nin ,igsti ,kmin ,
545 c kmax ,gapmax ,gapmin ,iadm ,intbuf_tab%MODRCURV ,
546 d rcurvi ,intbuf_tab%MODANGLM ,anglmi ,intth ,temp ,
547 e tempi ,phi ,intbuf_tab%AREAS,intbuf_tab%IELEC,areasi ,
548 f ieleci ,nodnx_sms ,nsms ,intbuf_tab%GAP_SL,intbuf_tab%GAP_ML,
549 g intfric ,intbuf_tab%IPARTFRICS,ipartfricsi,intbuf_tab%IPARTFRICM,ipartfricmi,
550 h iorthfric,intbuf_tab%IREP_FRICM,intbuf_tab%DIR_FRICM,irep_fricmi,dir_fricmi )
551
552
553 jlt_new = 0
554 jlt_tied= 0
555
556 IF(type18)THEN
558 1 jlt ,cand_n_n ,cand_e_n , cn_loc ,ce_loc ,
559 2 x1 ,x2 ,x3 , x4 ,y1 ,
560 3 y2 ,y3 ,y4 , z1 ,z2 ,
561 4 z3 ,z4 ,xi , yi ,zi ,
562 5 nx1 ,nx2 ,nx3 , nx4 ,ny1 ,
563 6 ny2 ,ny3 ,ny4 , nz1 ,nz2 ,
564 7 nz3 ,nz4 ,lb1 , lb2 ,lb3 ,
565 8 lb4 ,lc1 ,lc2 , lc3 ,lc4 ,
566 9 p1 ,p2 ,p3 , p4 ,ix1 ,
567 a ix2 ,ix3 ,ix4 , nsvg ,stif ,
568 b jlt_new ,gapv ,intbuf_tab%CAND_P ,ale_connectivity%NE_CONNECT,
569 c index2(nft+1) ,vxi ,vyi ,itab ,xcell ,
570 d vzi ,msi ,kini ,
571 e igap ,multi_fvm ,s_xcell_remote ,xcell_remote)
572
573 IF( multi_fvm%IS_INT18_LAW151 ) THEN
574 msi_append(1:mvsiz) = zero
575 msi_append(mvsiz+1:2*mvsiz) = msi(1:mvsiz)
576 ELSE
577 msi_append(1:mvsiz) = msi(1:mvsiz)
578 msi_append(mvsiz+1:2*mvsiz) = zero
579 ENDIF
580
581 jlt = jlt_new
582 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
583 IF(jlt_new /= 0) THEN
584 ipari(29,nin) = 1
585 idir = ipari(34,nin)
586 IF (debug(3) >= 1)nb_jlt_new = nb_jlt_new + jlt_new
588 1 jlt ,a ,v ,ibc ,icodt ,
589 2 fsav
590 3 viscf ,noint ,intbuf_tab%STFNS ,itab ,cn_loc ,
591 4 stiglo ,stifn ,stif ,fskyi ,isky ,
592 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
593 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
594 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
595 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
596 9 p1 ,p2 ,p3 ,p4
597 b ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
598 c ivis2 ,neltst ,ityptst ,dt2t ,ixs ,
599 d gapv ,intbuf_tab%CAND_P ,index2(nft+1) ,niskyfi ,
600 e kinet ,newfront ,isecin ,nstrf ,secfcum ,
601 f x ,intbuf_tab%IRECTM ,ce_loc ,mfrot ,ifq ,
602 g intbuf_tab%FRIC_P ,intbuf_tab%FTSAVX ,intbuf_tab%FTSAVY ,intbuf_tab%FTSAVZ ,
603 h intbuf_tab%IFPEN , icontact ,igroups ,iparg ,
604 j viscn ,vxi ,vyi ,vzi ,msi_append ,
605 k kini ,nin ,nisub ,intbuf_tab%LISUB ,intbuf_tab%ADDSUBS,
606 l intbuf_tab%ADDSUBM,intbuf_tab%LISUBS ,intbuf_tab%LISUBM ,fsavsub ,intbuf_tab%CAND_N ,
607 m ipari(33,nin) ,ipari(39,nin) ,fncont ,ms0 ,
608 n jtask ,isensint ,fsavparit ,nft ,multi_fvm ,
609 o h3d_data ,elbuf_tab ,idir )
610 ENDIF
611
612 ELSE
614 1 jlt ,cand_n_n,cand_e_n,cn_loc ,ce_loc ,
615 2 x1 ,x2 ,x3 ,x4 ,y1 ,
616 3 y2 ,y3 ,y4 ,z1 ,z2 ,
617 4 z3 ,z4 ,xi ,yi ,zi ,
618 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
619 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
620 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
621 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
622 9 p1 ,p2 ,p3 ,p4 ,ix1 ,
623 a ix2 ,ix3 ,ix4 ,nsvg ,stif ,
624 b jlt_new ,gapv ,inacti ,intbuf_tab%CAND_P,
625 c index2(nft+1),vxi ,vyi ,
626 d vzi ,msi ,kini ,icurv ,intbuf_tab%IRECTM,
627 e nnx1 ,nnx2 ,nnx3 ,nnx4 ,nny1 ,
628 f nny2 ,nny3 ,nny4 ,nnz1 ,nnz2 ,
629 g nnz3 ,nnz4 ,intbuf_tab%NODNORM_NORMAL ,iadm,rcurvi ,
630 h anglmi ,intth ,tempi ,phi ,areasi ,
631 i ieleci ,nsms ,cmaj ,drad2 ,
632 j intfric ,ipartfricsi,
633 k ipartfricmi ,itied ,jlt_tied,intbuf_tab%CAND_F,iorthfric,
634 l irep_fricmi ,dir_fricmi,dgaploadp)
635
636 jlt = jlt_new
637 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
638 IF(jlt_new /= 0) THEN
639 ipari(29,nin) = 1
640 IF (debug(3)>=1) nb_jlt_new = nb_jlt_new + jlt_new
641
642
643
644
645 IF(itask==1)
CALL startime(timers,macro_timer_fric)
646 IF(iorthfric > 0) THEN
648 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
649 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
650 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
651 4 viscffric ,nty ,mfrot ,iorthfric , fric_coefs2,
652 5 fricc2 ,viscffric2 ,ifricorth ,nforth , nfisot ,
653 6 indexorth ,indexisot ,jlt_tied ,irep_fricmi , dir_fricmi,
654 7 ix3 ,ix4 ,x1 ,y1 , z1 ,
655 8 x2 ,y2 ,z2 ,x3 , y3 ,
656 9 z3 ,x4 ,y4 ,z4 ,ce_loc ,
657 a dir1 ,dir2 )
658 ELSE
659 nforth = 0
660 nfisot = 0
662 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
663 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
664 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
665 4 viscffric ,nty ,mfrot ,iorthfric , ifric ,
666 5 jlt_tied , tint ,tempi ,npc ,tf ,
667 6 temp , h1 ,h2 ,h3 ,h4 ,
668 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
669 ENDIF
670 IF(itask==1)
CALL stoptime(timers,macro_timer_fric)
671
673 1 jlt ,a ,v ,ibc ,icodt ,
674 2 fsav ,gap ,fric ,ms
675 3 viscf ,noint ,intbuf_tab%STFNS,itab ,cn_loc ,
676 4 stiglo ,stifn ,stif ,fskyi ,isky ,
677 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
678 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
679 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
680 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
681 9 p1 ,p2 ,p3 ,p4 ,fcont ,
682 a ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
683 b ivis2 ,neltst ,ityptst ,dt2t ,gapv ,
684 c inacti,intbuf_tab%CAND_P,index2(nft+1),kinet ,newfront ,
685 d isecin ,nstrf ,x ,intbuf_tab%IRECTM,ce_loc ,
686 e mfrot ,ifq ,intbuf_tab%FTSAVX ,intbuf_tab%FTSAVY,
687 f intbuf_tab%FTSAVZ,xfiltr_fric,intbuf_tab%IFPEN ,ibag ,
688 h icontact ,viscn ,vxi ,vyi ,vzi ,
689 i msi ,kini ,nin ,nisub ,intbuf_tab%LISUB,
690 j intbuf_tab%ADDSUBS,intbuf_tab%ADDSUBM,intbuf_tab%LISUBS ,
691 . intbuf_tab%LISUBM,fsavsub,
692 k intbuf_tab%CAND_N,ipari(33,nin),ipari(39,nin),intbuf_tab%NODNORM_NORMAL ,fncont,
693 l ftcont ,x1 ,x2 ,x3 ,x4 ,
694 m y1 , y2 ,y3 ,y4 ,z1 ,
695 n z2 ,z3 ,z4 ,xi ,yi ,
696 o zi ,iadm ,rcurvi ,rcontact ,acontact ,
697 p pcontact ,anglmi ,padm ,intth ,temp ,
698 q tempi ,iform ,npc ,tf ,cmaj ,
699 r dtmini ,drad ,fheats ,fheatm ,efrict ,
700 s qfricint(nin),fni ,ifric ,jtask ,h1 ,
701 u h2 ,h3 ,h4 ,ks ,kt ,
702 v k1 ,k2 ,k3 ,k4 ,c1 ,
703 w c2 ,c3 ,c4 ,cs ,c ,
704 x cf ,tint ,xfric ,fxi ,fyi ,
705 y fzi ,fx1 ,fy1 ,fz1 ,fx2 ,
706 z fy2 ,fz2 ,fx3 ,fy3 ,fz3 ,
707 1 fx4 ,fy4 ,fz4 ,isensint ,fsavparit ,
708 5 nft ,sym_flag_type19,h3d_data,fricc ,viscffric ,
709 6 fric_coefs ,itied ,jlt_tied ,intbuf_tab%CAND_F,iorthfric,
710 7 fric_coefs2 ,fricc2 ,viscffric2 ,nforth ,nfisot ,
711 8 indexorth ,indexisot ,dir1 ,dir2 ,tagncont ,
712 9 kloadpinter ,loadpinter ,loadp_hyd_inter,intbuf_tab%TYPSUB ,
713 . intbuf_tab%INFLG_SUBS,
714 a intbuf_tab%INFLG_SUBM,ninloadp,dgaploadint,s_loadpinter,dgaploadp,
715 b interefric )
716
717 IF( intth > 0 ) THEN
718 CALL i7therm(jlt ,iparg ,pm ,ixs ,iform ,x ,
719 1 xi ,yi ,zi ,x1 ,y1 ,z1 ,
720 2 x2 ,y2 ,z2 ,x3 ,y3 ,z3 ,
721 3 x4 ,y4 ,z4 ,ix1 ,ix2 ,ix3 ,
722 4 ix4 ,rstif ,tempi, intbuf_tab%IELEC ,
723 5 phi ,tint , areasi,ieleci ,frad,drad ,
724 6 gapv ,fni ,irsth,xthe ,npc ,tf ,
725 6 condint,phi1,phi2 ,phi3 ,phi4 ,fheats,
726 7 fheatm,efrict,temp ,h1 ,h2 ,h3 ,
727 8 h4 ,theaccfact)
728 ENDIF
729
731 1 jlt ,a ,noint ,itab ,stifn ,
732 2 stif ,fskyi ,isky ,fcont ,ix1 ,
733 3 ix2 ,ix3 ,ix4 ,nsvg ,neltst ,
734 4 ityptst ,dt2t ,niskyfi ,isecin ,nstrf ,
735 5 secfcum ,viscn ,nin ,fxi ,fyi ,
736 6 fzi ,fx1 ,fy1 ,fz1 ,fx2
737 7 fy2 ,fz2 ,fx3 ,fy3 ,fz3 ,
738 8 fx4 ,fy4 ,fz4 ,h1 ,h2 ,
739 9 h3 ,h4 ,ks ,kt ,k1 ,
740 a k2 ,k3 ,k4 ,cs ,cf ,
741 b c1 ,c2 ,c3 ,c4 ,c ,
742 c intth ,phi ,phi1 ,phi2 ,phi3 ,
743 d phi4 ,fthe ,ftheskyi ,mskyi_sms ,iskyi_sms ,
744 e nsms ,dtmini ,jtask ,
745 f condn ,condint ,condnskyi ,ixig3d ,kxig3d ,
746 j wige ,knot ,igeo ,intbuf_tab%NIGE ,
747 k intbuf_tab%RIGE ,x ,h3d_data ,knotlocpc ,
748 l knotlocel ,iform ,nodadt_therm)
749
750 ENDIF
751 ENDIF
752
753
754
755 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
756 IF(impl_s = =1) THEN
757 DO i = 1 ,jlt_new
758 ns_imp(i+num_imp)=cn_loc(i)
759 ne_imp(i+num_imp)=ce_loc(i)
760 ind_imp(i+num_imp)=index2(i+nft)
761 ENDDO
762 num_imp=num_imp+jlt_new
763 ENDIF
764 ENDDO
765
766 IF (sfsavparit /= 0)THEN
767 CALL sum_6_float_sens(fsavparit, nisub+1, 11, i_stok,1,i_stok, fbsav6, 12, 6, dimfb, isensint )
768 ENDIF
769 IF (ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
770
771 IF(icurv == 3 .OR. iadm /= 0)THEN
773 IF(jtask==1)DEALLOCATE(intbuf_tab%NODNORM_NORMAL)
774 END IF
775 IF(iadm/=0)THEN
777 IF(jtask==1)DEALLOCATE(intbuf_tab%MODRCURV,intbuf_tab%MODANGLM)
778 END IF
779 ELSEIF(nty==17)THEN
780 ilagm = ipari(33,nin)
781
782 IF(ilagm == 0)THEN
784 1 nin ,ipari ,intbuf_tab ,x ,v ,
785 2 a ,jtask-1,igrbric ,eminx(iad17),ms ,
786 3 ixs ,ixs16 ,ixs20 ,stifn ,fskyi ,isky ,
787 4 fsav ,fcont ,niskyfi ,h3d_data)
788 ENDIF
789 ENDIF
790
791 RETURN
subroutine frictionparts_model_ortho(intfric, jlt, ipartfricsi, ipartfricmi, adparts_fric, nset, tabcoupleparts_fric, npartfric, tabparts_fric, tabcoef_fric, fric, viscf, frot_p, fric_coefs, fricc, viscffric, nty, mfrot, iorthfric, fric_coefs2, fricc2, viscffric2, ifricorth, nforth, nfisot, indexorth, indexisot, jlt_tied, irep_fricmi, dir_fricmi, ix3, ix4, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, ce_loc, dir1, dir2)
subroutine frictionparts_model_isot(intfric, jlt, ipartfricsi, ipartfricmi, adparts_fric, nset, tabcoupleparts_fric, npartfric, tabparts_fric, tabcoef_fric, fric, viscf, frot_p, fric_coefs, fricc, viscffric, nty, mfrot, iorthfric, ifric, jlt_tied, tint, tempi, npc, tf, temp, h1, h2, h3, h4, ix1, ix2, ix3, ix4, iform)
subroutine i17main_pena(nin, ipari, intbuf_tab, x, v, a, itask, igrbric, eminx, ms, ixs, ixs16, ixs20, stifn, fskyi, isky, fsav, fcont, niskyfi, h3d_data)
subroutine i7ass33(jlt, a, noint, itab, stifn, stif, fskyi, isky, fcont, ix1, ix2, ix3, ix4, nsvg, neltst, ityptst, dt2t, niskyfi, isecin, nstrf, secfcum, viscn, nin, fxi, fyi, fzi, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, h1, h2, h3, h4, ks, kt, k1, k2, k3, k4, cs, cf, c1, c2, c3, c4, c, intth, phi, phi1, phi2, phi3, phi4, fthe, ftheskyi, mskyi_sms, iskyi_sms, nsms, dtmini, jtask, condn, condint, condnskyi, ixig3d, kxig3d, wige, knot, igeo, nige, rige, x, h3d_data, knotlocpc, knotlocel, iform, nodadt_therm)
subroutine i7cdcor3(jlt, index, cand_e, cand_n, cand_e_n, cand_n_n)
subroutine i7curvsz(nrtm, irect, numnod, itag, lent, maxcc)
subroutine i7normp(nrtm, irect, numnod, x, nod_normal, nmn, msr, lent, maxcc, isdsiz, ircsiz, iad_elem, fr_elem, itag)
subroutine i7norm(nrtm, irect, numnod, x, nod_normal, nmn, msr)
subroutine i7for3(jlt, a, v, ibcc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfn, itab, cn_loc, stiglo, stifn, stif, fskyi, isky, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, fcont, ix1, ix2, ix3, ix4, nsvg, ivis2, neltst, ityptst, dt2t, gapv, inacti, cand_p, index, kinet, newfront, isecin, nstrf, x, irect, ce_loc, mfrot, ifq, cand_fx, cand_fy, cand_fz, alpha0, ifpen, ibag, icontact, viscn, vxi, vyi, vzi, msi, kini, nin, nisub, lisub, addsubs, addsubm, lisubs, lisubm, fsavsub, cand_n, ilagm, icurv, nod_normal, fncont, ftcont, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, iadm, rcurvi, rcontact, acontact, pcontact, anglmi, padm, intth, temp, tempi, iform, npc, tf, cmaj, dtmini, drad, fheats, fheatm, efrict, qfric, fni, ifric, jtask, h1, h2, h3, h4, ks, kt, k1, k2, k3, k4, c1, c2, c3, c4, cs, c, cf, tint, xfric, fxi, fyi, fzi, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, isensint, fsavparit, nft, sym_flag_type19, h3d_data, fricc, viscffric, fric_coefs, itied, jlt_tied, cand_f, iorthfric, fric_coefs2, fricc2, viscffric2, nforth, nfisot, indexorth, indexisot, dir1, dir2, tagncont, kloadpinter, loadpinter, loadp_hyd_inter, typsub, inflg_subs, inflg_subm, ninloadp, dgaploadint, s_loadpinter, dgaploadp, interefric)
subroutine i7rcurv(nrtmft, nrtmlt, x, nod_normal, irect, rcurv, nradm, anglm, anglt)
subroutine i7normnp(nrtm, irect, numnod, x, nod_normal, nmn, msr, lent, maxcc, isdsiz, ircsiz, iad_elem, fr_elem, itag)
subroutine i7normn(nrtm, irect, numnod, x, nod_normal, nmn, msr)
subroutine i7norme(nmnft, nmnlt, nod_normal, msr)
subroutine i7therm(jlt, iparg, pm, ixs, iform, x, xi, yi, zi, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, ix1, ix2, ix3, ix4, rstif, tempi, ieles, phi, tint, areas, ieleci, frad, drad, gapv, fni, ifunctk, xthe, npc, tf, condint, phi1, phi2, phi3, phi4, fheats, fheatm, efrict, temp, h1, h2, h3, h4, theaccfact)
subroutine i18dst3(jlt, cand_n, cand_e, cn_loc, ce_loc, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, ix1, ix2, ix3, ix4, nsvg, stif, jlt_new, gapv, cand_p, ale_ne_connect, index, vxi, vyi, itab, xcell, vzi, msi, kini, igap, multi_fvm, s_xcell_remote, xcell_remote)
subroutine i18for3(jlt, a, v, ibcc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfn, itab, cn_loc, stfval, stifn, stif, fskyi, isky, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, fcont, ix1, ix2, ix3, ix4, nsvg, ivis2, neltst, ityptst, dt2t, ixs, gapv, cand_p, index, niskyfi, kinet, newfront, isecin, nstrf, secfcum, x, irect, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, ifpen, icontact, igroups, iparg, viscn, vxi, vyi, vzi, msi, kini, nin, nisub, lisub, addsubs, addsubm, lisubs, lisubm, fsavsub, cand_n, ilagm, icurv, fncont, ms0, jtask, isensint, fsavparit, nft, multi_fvm, h3d_data, elbuf_tab, idir)
subroutine sum_6_float_sens(f, a, b, c, jft, jlt, f6, d, e, g, isensint)
subroutine spmd_exch_n(xnorm, iad_elem, fr_elem, lenr)
subroutine spmd_i7curvsz(nrtm, irect, numnod, iad_elem, fr_elem, isdsiz, ircsiz, itag, lenr, lent, maxcc)
subroutine i7cor3(x, irect, nsv, cand_e, cand_n, stf, stfn, gapv, igap, gap, gap_s, gap_m, istf, gapmin, gapmax, gap_s_l, gap_m_l, drad, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, stif, dgapload, last)
subroutine i7dst3(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, last)
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)