64 1 IPARI ,INTBUF_TAB ,X ,A ,
65 2 ICODT ,FSAV ,V ,MS ,DT2T ,
66 3 NELTST ,ITYPTST ,ITAB ,STIFN ,FSKYI ,
67 4 ISKY ,FCONT ,NIN ,LINDMAX ,KINET ,
69 6 NISKYFI,NEWFRONT,NSTRF ,SECFCUM ,ICONTACT,
71 9 NS_IMP ,NE_IMP ,IND_IMP ,FSAVSUB ,NRTMDIM,
73 B EMINX ,IXS ,IXS16 ,IXS20 ,FNCONT ,
74 C FTCONT ,IAD_ELEM,FR_ELEM ,RCONTACT ,ACONTACT,
75 D PCONTACT,TEMP ,FTHE ,FTHESKYI,
76 E PM ,IPARG ,IAD17 ,MSKYI_SMS ,ISKYI_SMS,
77 F NODNX_SMS,MS0 ,INOD_PXFEM,MS_PLY ,WAGAP ,
78 G FBSAV6 ,ISENSINT,NODADT_THERM,THEACCFACT,
79 H DIMFB ,H3D_DATA,INTBUF_FRIC_TAB ,NISKYFIE,
80 I APINCH ,STIFPINCH,NPC ,TF ,CONDN ,
81 J CONDNSKYI ,QFRICINT,TAGNCONT,KLOADPINTER,LOADPINTER,
82 K LOADP_HYD_INTER,DGAPLOADINT,S_LOADPINTER,INTEREFRIC,
100#include "implicit_f.inc"
101#include "comlock.inc"
105#include "mvsiz_p.inc"
110#include "com01_c.inc"
111#include "com04_c.inc"
112#include "com08_c.inc"
113#include "param_c.inc"
116#include "parit_c.inc"
117#include "timeri_c.inc"
122 type(output_),
intent(inout) :: output
123 TYPE(TIMER_) :: TIMERS
124 INTEGER NELTST,ITYPTST,NIN,NEWFRONT,
126 . NRTMDIM, IAD17, IPARSENS
127 INTEGER IPARI(NPARI,NINTER), ICODT(*),ICONTACT(*),
128 . ITAB(*), ISKY(*), KINET(*),
129 . IPARG(NPARG,*),INOD_PXFEM(*),TAGNCONT(NLOADP_HYD_INTER,NUMNOD)
130 INTEGER NB_IMPCT,JTASK,
131 . NISKYFI, LINDMAX, NISKYFIE
132 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),IND_IMP(*)
133 INTEGER IXS(*) ,IXS16(*) ,IXS20(*)
134 INTEGER IAD_ELEM(2,*),FR_ELEM(*), NPC(*),
135 . ISKYI_SMS(*), NODNX_SMS(*), ISENSINT(*),DIMFB
136 INTEGER ,
INTENT(IN) :: S_LOADPINTER
137 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
138 . LOADP_HYD_INTER(NLOADP_HYD)
139 INTEGER ,
INTENT(IN) :: NODADT_THERM
140 INTEGER ,
INTENT(IN) :: INTEREFRIC
141 my_real ,
INTENT(IN) :: THEACCFACT
142 my_real ,
INTENT(IN) :: dgaploadint(s_loadpinter)
147 . x(*), a(3,*), fsav(*), v(3,*),fsavbag(*),
148 . ms(*),stifn(*),fskyi(lskyi,4),fcont(3,*),ms0(*),
149 . secfcum(7,numnod,nsect),viscn(*), fsavsub(*),
150 . fncont(3,*), ftcont(3,*), rcontact(*), acontact
152 . temp(*),fthe(*),ftheskyi(lskyi),pm(npropm,*),
153 . mskyi_sms(*),ms_ply(*),wagap(*),
154 . apinch(3,*),stifpinch(*),qfricint(*),tf(*),condn(*),
156 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
157 TYPE(intbuf_struct_) INTBUF_TAB
158 TYPE(H3D_DATABASE) :: H3D_DATA
159 TYPE(intbuf_fric_struct_),
TARGET,
DIMENSION(NINTERFRIC) :: INTBUF_FRIC_TAB
160 TYPE (interfaces_) ,
INTENT(IN):: interfaces
164 INTEGER JD(50),KD(50), JFI, KFI, IEDGE, ISHARP, NEDGE,
165 . I, J, L, H, I_STOK, JLT_NEW, JLT , NFT, IVIS2,
166 . ibc, noint, nseg, isecin, ibag, iadm,
167 . igap, inacti, ifq, mfrot, igsti, nisub, igap0,
168 . nb_loc, i_stok_loc,debut,
169 . ilagm, lenr, intth,iform,intply,
170 . nadmsr, i_stok_glo, mglob, mg, n, nsnr, nn, ierror,
171 . ie, i1, i2, iorthfric ,nforth ,nfisot ,jj,fcond,ikthe,ifric,
174 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
175 . NSVG(MVSIZ), CN_LOC(MVSIZ),CE_LOC(MVSIZ),
176 . cand_n_n(mvsiz),cand_e_n
178 . isdsiz(nspmd+1),ircsiz(nspmd+1),
179 . ielesi(mvsiz), nsms(mvsiz), subtria(mvsiz),
180 . nsnft, nsnlt, nsnrft, nsnrlt, intfric,nsetprts ,npartfric,
181 . ipartfricsi(mvsiz), ipartfricmi(mvsiz), ifadhi(mvsiz),
182 . mvoisn(mvsiz,4),ibound(4,mvsiz),indexisot(mvsiz),indexorth(mvsiz),
183 . irep_fricmi(mvsiz),ipartfric_es(4*mvsiz),ipartfric_em(4*mvsiz),
185 INTEGER :: EDGE_ID(2,4*MVSIZ)
187 . NE1(MVSIZ), NE2(), ME1(MVSIZ), ME2(MVSIZ),
188 . CS_LOC(MVSIZ), CM_LOC(MVSIZ),
189 . NS1(4*MVSIZ), NS2(4*MVSIZ), M1(4*MVSIZ), (4*MVSIZ), INDX1(4*MVSIZ), INDX2(4*MVSIZ),
190 . NSMSE(4*MVSIZ), CS_LOC4(4*MVSIZ), CM_LOC4(4*MVSIZ),
192 . IAM(MVSIZ),JAM(MVSIZ),IBM(MVSIZ),JBM(MVSIZ),
193 . ias(mvsiz),jas(mvsiz),ibs(mvsiz),jbs(mvsiz)
195 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: INDEX2
198 . STARTT, FRIC, GAP, STOPT, PMAX_GAP,
199 . VISC,VISCF,STIGLO,GAPMIN,
200 . KMIN, KMAX, GAPMAX,KTHE,TINT,RHOH,EPS,
201 . VISCFLUID, SIGMAXADH, VISCADHFACT,
202 . FHEATS,FHEATM,XTHE,FRAD,DRAD,DCOND
209 . xx(mvsiz,5), yy(mvsiz,5), zz(mvsiz,5),
210 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
211 . nnx(mvsiz,5), nny(mvsiz,5), nnz(mvsiz,5),
212 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
213 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
214 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
215 . vxi(mvsiz), vyi(mvsiz), vzi(mvsiz),
216 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
217 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
219 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
220 . tempi(mvsiz),phi(mvsiz),areasi(mvsiz),
221 . lb(mvsiz), lc(mvsiz),
222 . gap_nm(4,mvsiz), gaps(mvsiz), gapmxl(mvsiz),
223 . gapv(mvsiz), base_adh(mvsiz),
224 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
225 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
226 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
227 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz), fni(mvsiz),
228 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
229 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
231 . phi1(mvsiz), phi2(mvsiz),phi3(mvsiz),phi4(mvsiz) ,
232 . condint(mvsiz) ,efrict(mvsiz)
234 . gapve(4*mvsiz), stife(4*mvsiz), nx(4*mvsiz), ny(4*mvsiz), nz(4*mvsiz),
235 . hs1(4*mvsiz), hs2(4*mvsiz), hm1(4*mvsiz), hm2(4*mvsiz),
236 . xxs1(4*mvsiz), xxs2(4*mvsiz), xys1(4*mvsiz), xys2(4*mvsiz),
237 . xzs1(4*mvsiz), xzs2(4*mvsiz), xxm1(4*mvsiz), xxm2(4*mvsiz),
238 . xym1(4*mvsiz), xym2(4*mvsiz), xzm1(4*mvsiz), xzm2(4*mvsiz),
239 . vxs1(4*mvsiz), vxs2(4*mvsiz), vys1(4*mvsiz), vys2(4*mvsiz),
240 . vzs1(4*mvsiz), vzs2(4*mvsiz), vxm1(4*mvsiz), vxm2(4*mvsiz),
241 . vym1(4*mvsiz), vym2(4*mvsiz), vzm1(4*mvsiz), vzm2(4*mvsiz),
242 . ms1(4*mvsiz), ms2(4*mvsiz), mm1(4*mvsiz), mm2(4*mvsiz),
243 . ex(4*mvsiz), ey(4*mvsiz), ez(4*mvsiz), fx(mvsiz), fy(mvsiz),
244 . fz(mvsiz) , dist(mvsiz),
245 . normaln1(3,mvsiz) ,normaln2(3,mvsiz
248 . ,
DIMENSION(:,:,:),
ALLOCATABLE :: fsavparit
250 . rcurvi(mvsiz), anglmi(mvsiz), anglt, padm,penmin,marge
251 INTEGER NRTMFT, NRTMLT, NMNFT, NMNLT, NRADM, IS, IM, ISTIF_MSDT,IKNON(MVSIZ)
252 INTEGER ICURV,ILEV,NREBOU,NPT ,NRTSE,IEDG4,SFSAVPARIT,NCY_PFIT,NINLOADP
254 . xfiltr_fric,fric_coefs(mvsiz,10),viscffric(mvsiz),fricc(mvsiz),
255 . fric_coefs2(mvsiz,10),viscffric2(mvsiz),fricc2(mvsiz),
256 . dir1(mvsiz,3),dir2(mvsiz,3),dir_fricmi(mvsiz,2),fricc_e(4*mvsiz),
257 . viscffric_e(4*mvsiz),tncy,t_pfit,finc,dgaploadpmax,dtstif
259 INTEGER,
DIMENSION(:) ,
POINTER :: TABCOUPLEPARTS_FRIC
260 INTEGER,
DIMENSION(:) ,
POINTER :: TABPARTS_FRIC
261 INTEGER,
DIMENSION(:) ,
POINTER :: ADPARTS_FRIC
262 INTEGER,
DIMENSION(:) ,
POINTER :: IFRICORTH
263 my_real,
DIMENSION(:) ,
POINTER :: TABCOEF_FRIC
265 INTEGER,
TARGET,
DIMENSION(1):: TABCOUPLEPARTS_FRIC_BID
266 INTEGER,
TARGET,
DIMENSION(1):: TABPARTS_FRIC_BID
267 INTEGER,
TARGET,
DIMENSION(1):: ADPARTS_FRIC_BID
268 INTEGER,
TARGET,
DIMENSION(1):: IFRICORTH_BID
269 my_real,
TARGET,
DIMENSION(1):: tabcoef_fric_bid
271 INTEGER :: NEDGE_REM,NRTM,NSN,NTY
272 LOGICAL :: SET_IPARI40_TO_ZERO
281 IF(ipari(33,nin)==1)
RETURN
297 nedge_rem = ipari(69,nin)
302 padm =intbuf_tab%VARIABLES(24)
303 anglt=intbuf_tab%VARIABLES(25)
304 marge=intbuf_tab%VARIABLES(25)
306 intth = ipari(47,nin)
307 ikthe = ipari(92,nin)
308 iform = ipari(48,nin)
309 intply = ipari(66,nin)
311 stiglo=-intbuf_tab%STFAC(1)
312 startt=intbuf_tab%VARIABLES(3)
313 stopt =intbuf_tab%VARIABLES(11)
317 fric =intbuf_tab%VARIABLES(1)
318 gap =intbuf_tab%VARIABLES(2)
319 gapmin=intbuf_tab%VARIABLES(13)
320 visc =intbuf_tab%VARIABLES(14)
322 t_pfit = intbuf_tab%VARIABLES(15)
325 gapmax=intbuf_tab%VARIABLES(16)
326 kmin =intbuf_tab%VARIABLES(17)
327 kmax =intbuf_tab%VARIABLES(18)
329 kthe = intbuf_tab%VARIABLES(20)
330 fheats = intbuf_tab%VARIABLES(21)
331 tint = intbuf_tab%VARIABLES(22)
332 fheatm = intbuf_tab%VARIABLES(41)
333 xthe =intbuf_tab%VARIABLES(33)
334 frad = intbuf_tab%VARIABLES(31)
335 drad = intbuf_tab%VARIABLES(32)
336 fcond = ipari(93,nin)
337 dcond = intbuf_tab%VARIABLES(34)
339 IF(intth > 0) ifric =ipari(50,nin)
341 penmin = intbuf_tab%VARIABLES(38)
342 eps = intbuf_tab%VARIABLES(39)
344 viscfluid = intbuf_tab%VARIABLES(42)
345 sigmaxadh = intbuf_tab%VARIABLES(43)
346 viscadhfact = intbuf_tab%VARIABLES(44)
350 istif_msdt =ipari(97,nin)
351 dtstif = intbuf_tab%VARIABLES(48)
354 nrtse = ipari(52,nin)
356 intcarea = ipari(99,nin)
358 ALLOCATE(index2(lindmax))
360 intfric=ipari(72,nin)
365 IF(intfric /= 0)
THEN
366 tabcoupleparts_fric => intbuf_fric_tab(intfric)%TABCOUPLEPARTS_FRIC
367 tabcoef_fric => intbuf_fric_tab(intfric)%TABCOEF_FRIC
368 tabparts_fric => intbuf_fric_tab(intfric)%TABPARTS_FRIC
369 adparts_fric => intbuf_fric_tab(intfric)%ADPARTS_FRIC
370 xfiltr_fric = intbuf_fric_tab(intfric)%XFILTR_FRIC
371 nsetprts = intbuf_fric_tab(intfric)%NSETPRTS
372 npartfric = intbuf_fric_tab(intfric)%S_TABPARTS_FRIC
373 iorthfric = intbuf_fric_tab(intfric)%IORTHFRIC
374 ifricorth => intbuf_fric_tab(intfric)%IFRICORTH
378 tabcoupleparts_fric => tabcoupleparts_fric_bid
379 tabparts_fric => tabparts_fric_bid
380 tabcoef_fric => tabcoef_fric_bid
381 adparts_fric => adparts_fric_bid
382 ifricorth => ifricorth_bid
383 IF (ifq/=0) xfiltr_fric = intbuf_tab%XFILTR(1)
387 ninloadp = ipari(95,nin)
388 dgaploadpmax = intbuf_tab%VARIABLES(46)
395 set_ipari40_to_zero = .false.
396 IF (startt>zero.AND.t_pfit==zero)
THEN
398 intbuf_tab%VARIABLES(15) = t_pfit
400 IF (t_pfit > zero)
THEN
401 IF (tt <= (startt+t_pfit) )
THEN
402 tncy = (tt+em05-startt)/t_pfit
404 set_ipari40_to_zero = .true.
407 ncy_pfit = ipari(40,nin)
408 IF (ncy_pfit >0 .AND. ncycle> ncy_pfit)
THEN
409 set_ipari40_to_zero = .true.
410 ELSEIF (ncy_pfit>0)
THEN
411 finc = one/ipari(40,nin)
412 tncy = (ncycle+1)*finc
418 nsnft= 1+(jtask-1)*nsn/ nthread
419 nsnlt= jtask*nsn/nthread
421 nsnrft= 1+(jtask-1)*nsnr/ nthread
422 nsnrlt= jtask*nsnr/nthread
427 IF(intbuf_tab%IRTLM(4*(n-1)+1) > 0 .AND. (intbuf_tab%TIME_S(2*(n-1)+1) == ep20 .OR.
428 . (intbuf_tab%IRTLM(4*(n-1)+2) < 0.AND.mod(-intbuf_tab%IRTLM(4*(n-1)+2),5)==0)) )
THEN
430 intbuf_tab%IRTLM(4*(n-1)+1)=0
431 intbuf_tab%IRTLM(4*(n-1)+2)=0
432 intbuf_tab%IRTLM(4*(n-1)+3)=0
433 intbuf_tab%IRTLM(4*(n-1)+4)=0
435 intbuf_tab%SECND_FR(6*(n-1)+1:6*n) = zero
436 intbuf_tab%STIF_OLD(2*(n-1)+1:2*n)= zero
437 intbuf_tab%PENE_OLD(5*(n-1)+1:5*n)= zero
464 IF(intbuf_tab%IRTLM(4*(n-1)+1) > 0 .AND. (intbuf_tab%TIME_S(2*(n-1)+1) == ep20 .OR.
465 . (intbuf_tab%IRTLM(4*(n-1)+2) < 0.AND.mod(-intbuf_tab%IRTLM(4*(n-1)+2),5)==0)) )
THEN
468 intbuf_tab%IRTLM(4*(n-1)+1)=0
469 intbuf_tab%IRTLM(4*(n-1)+2)=0
470 intbuf_tab%IRTLM(4*(n-1)+3)=0
471 intbuf_tab%IRTLM(4*(n-1)+4)=0
473 intbuf_tab%SECND_FR(6*(n-1)+1:6*n) = zero
474 intbuf_tab%STIF_OLD(2*(n-1)+1:2*n)= zero
475 intbuf_tab%PENE_OLD(5*(n-1)+1:5*n)= zero
477 intbuf_tab%IF_ADH(n) = 0
504 IF (inacti/=-1 .OR. set_ipari40_to_zero)
THEN
513 i_stok_glo = intbuf_tab%I_STOK(2)
515 nb_loc = i_stok_glo / nthread
516 IF (jtask==nthread)
THEN
517 i_stok_loc = i_stok_glo-nb_loc*(nthread-1)
521 debut = (jtask-1)*nb_loc
524 DO i = debut+1, debut+i_stok_loc
525 IF(intbuf_tab%CAND_OPT_N(i)>0)
THEN
533 1 i_stok ,index2 ,intbuf_tab%CAND_OPT_N,intbuf_tab%CAND_OPT_E,nin ,
534 2 nsn ,nsnr ,inacti ,intbuf_tab%MSEGLO ,intbuf_tab%IRTLM ,
535 3 intbuf_tab%PENM ,intbuf_tab%PENE_OLD ,jtask ,itab,
536 4 intbuf_tab%NSV ,intbuf_tab%SECND_FR
537 . intbuf_tab%STIF_OLD)
545 i_stok_glo = intbuf_tab%I_STOK(2)
547 nb_loc = i_stok_glo / nthread
548 IF (jtask==nthread)
THEN
549 i_stok_loc = i_stok_glo-nb_loc*(nthread-1)
553 debut = (jtask-1)*nb_loc
559 DO i = jtask, i_stok_glo, nthread
560 IF(intbuf_tab%CAND_OPT_N(i)>0)
THEN
568 IF(isensint(i)/=0)
THEN
569 sfsavparit = sfsavparit + 1
572 IF (sfsavparit /= 0)
THEN
573 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
575 CALL ancmsg(msgid=19,anmode=aninfo,
576 . c1=
'(/INTER/TYPE25)')
579 fsavparit(1:nisub+1,1:11,1:i_stok) = zero
581 ALLOCATE(fsavparit(0,0,0),stat=ierror)
583 CALL ancmsg(msgid=19,anmode=aninfo,
584 . c1=
'(/INTER/TYPE25)')
591 DO nft = 0 , i_stok - 1 , nvsiz
592 jlt =
min( nvsiz, i_stok - nft )
595 1 jlt,index2(nft+1),intbuf_tab%CAND_OPT_E,intbuf_tab%CAND_OPT_N,
596 2 cand_e_n,cand_n_n )
600 1 jlt ,x ,intbuf_tab%IRECTM,intbuf_tab%NSV ,cand_e_n ,
601 2 cand_n_n ,intbuf_tab%STFM ,intbuf_tab%STFNS,stif ,
602 . intbuf_tab%EDGE_BISECTOR,
603 3 igsti ,kmin ,kmax ,ms ,msi ,
604 3 xi ,yi ,zi ,vxi ,vyi ,
605 4 vzi ,ix1 ,ix2 ,ix3 ,ix4 ,
606 5 nsvg ,nsn ,v ,kinet ,kini ,
607 6 nin ,intbuf_tab%ADMSR ,intbuf_tab%IRTLM,subtria ,
608 7 xx ,yy ,zz ,intbuf_tab%LBOUND,ibound ,
610 9 vx1 ,vx2 ,vx3 ,vx4 ,
611 a vy1 ,vy2 ,vy3 ,vy4 ,
612 b vz1 ,vz2 ,vz3 ,vz4 ,
613 c nodnx_sms ,nsms ,index2(nft+1),intbuf_tab%PENM,intbuf_tab%LBM,
614 d intbuf_tab%LCM,pene ,lb , lc ,
615 e intbuf_tab%GAP_NM ,gap_nm ,intbuf_tab%GAP_S,gaps,igap ,
616 f intbuf_tab%GAP_SL,intbuf_tab%GAP_ML,gapmxl,intfric,intbuf_tab%IPARTFRICS,
617 g ipartfricsi,intbuf_tab%IPARTFRICM,ipartfricmi,intbuf_tab%AREAS,areasi,
618 h ivis2 ,intbuf_tab%MVOISIN,mvoisn,iorthfric,intbuf_tab%IREP_FRICM,
619 i intbuf_tab%DIR_FRICM ,irep_fricmi ,dir_fricmi ,x1 ,y1 ,
620 j z1 ,x2 ,y2 ,z2 ,x3 ,
621 k y3 ,z3 ,x4 ,y4 ,z4 ,
622 l intth ,temp ,tempi ,intbuf_tab%IELES ,ielesi ,
623 m intbuf_tab%IELEM,ielemi,istif_msdt,dtstif ,intbuf_tab%STIFMSDT_S,
624 n intbuf_tab%STIFMSDT_M,nrtm ,interfaces%PARAMETERS)
627 1 jlt ,intbuf_tab%STFM ,intbuf_tab%STFNS,stif
628 2 cand_e_n ,cand_n_n,nin ,igsti ,kmin ,
629 3 kmax ,inacti ,ipari(40,nin),tncy ,iknon )
634 1 jlt ,cand_n_n ,cand_e_n ,cn_loc ,ce_loc ,
635 2 intbuf_tab%IRTLM,xx ,yy ,zz ,gap_nm ,
636 3 xi ,yi ,zi ,gaps ,gapmxl ,
637 4 isharp ,nnx ,nny ,nnz ,
638 5 n1 ,n2 ,n3 ,h1 ,h2 ,
639 5 h3 ,h4 ,nin ,nsn ,ix1 ,
640 6 ix2 ,ix3 ,ix4 ,nsvg ,stif ,
641 7 inacti ,kini ,itab ,lb ,lc ,
642 8 penmin ,eps ,pene ,intbuf_tab%PENE_OLD,subtria,
643 9 gapv ,ivis2 ,intbuf_tab%IF_ADH,ifadhi ,base_adh ,
644 a mvoisn ,ibound ,intbuf_tab%VTX_BISECTOR ,dist, tt)
651 IF(pene(i)==zero)
THEN
654 intbuf_tab%STIF_OLD(2*(n-1)+1)=
max(intbuf_tab%STIF_OLD(2*(n-1)+1),stif(i))
659 jlt_new = jlt_new + 1
664 IF(intth==0.AND.jlt_new == 0.AND.(ninloadp == 0.OR.dgaploadpmax==zero))cycle
667 IF (debug(3)>=1) nb_impct = nb_impct + jlt_new
668 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
673 IF(jtask==1)
CALL startime(timers,macro_timer_fric)
675 IF(iorthfric > 0)
THEN
677 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
678 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
679 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
680 4 viscffric ,nty ,mfrot ,iorthfric , fric_coefs2,
681 5 fricc2 ,viscffric2 ,ifricorth ,nforth , nfisot ,
682 6 indexorth ,indexisot ,jj ,irep_fricmi ,dir_fricmi ,
683 7 ix3 ,ix4 ,x1 ,y1 , z1 ,
684 8 x2 ,y2 ,z2 ,x3 , y3 ,
685 9 z3 ,x4 ,y4 ,z4 ,ce_loc ,
691 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
692 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
693 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
694 4 viscffric ,nty ,mfrot ,iorthfric ,ifric ,
695 5 jj , tint ,tempi ,npc ,tf ,
696 6 temp , h1 ,h2 ,h3 ,h4 ,
697 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
699 IF(jtask==1)
CALL stoptime(timers,macro_timer_fric)
702 1 jlt ,a ,v ,ibc ,icodt ,
704 3 viscf ,noint ,intbuf_tab%STFNS,itab ,cn_loc ,
705 4 stiglo ,stifn ,stif ,inacti ,index2(nft+1),
706 5 n1 ,n2 ,n3 ,h1 ,h2 ,
707 6 h3 ,h4 ,fcont ,pene ,nrtm ,
708 7 ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
709 8 ivis2 ,neltst ,ityptst ,dt2t ,
710 a kinet ,newfront ,isecin ,nstrf ,secfcum ,
711 b x ,intbuf_tab%IRECTM,ce_loc ,mfrot ,ifq ,
712 b intbuf_tab%SECND_FR,xfiltr_fric,ibag ,icontact
713 e viscn ,vxi ,vyi ,vzi ,msi ,
714 f kini ,nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBS,
715 g intbuf_tab%ADDSUBM,intbuf_tab%LISUBS,intbuf_tab%LISUBM,
716 . intbuf_tab%INFLG_SUBS,intbuf_tab%INFLG_SUBM,
717 h fsavsub ,ipari(33,nin),ipari(39,nin),fncont ,ftcont ,
719 j xi ,yi ,zi ,anglmi ,padm ,
720 k iadm ,rcurvi ,rcontact ,acontact ,pcontact ,
721 n mskyi_sms ,iskyi_sms ,nsms ,cand_n_n ,intbuf_tab%PENE_OLD,
722 o intbuf_tab%STIF_OLD,intbuf_tab%MBINFLG,ilev ,igsti ,kmin ,
723 p intply ,nm1 ,nm2 ,nm3 ,
724 q intbuf_tab%MSEGTYP24,jtask ,isensint ,
725 t fsavparit(1,1,nft+1),h3d_data,fricc ,viscffric ,fric_coefs, gapv,
726 u viscfluid , sigmaxadh , viscadhfact, ifadhi , areasi , base_adh ,
727 v iorthfric ,fric_coefs2 ,fricc2 ,viscffric2,nforth ,nfisot ,
728 w indexorth , indexisot ,dir1 ,dir2 ,apinch ,stifpinch,
729 c fni ,fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
730 d fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
731 e fy4 ,fz4 ,fxi ,fyi ,fzi ,
732 c intth ,drad ,fheats ,fheatm ,qfricint(nin),
733 d efrict ,tagncont ,kloadpinter ,loadpinter ,loadp_hyd_inter,
734 e intbuf_tab%TYPSUB,ipari(40,nin),ninloadp,dgaploadint,s_loadpinter,
735 f dist ,dgaploadpmax,interefric ,intcarea ,interfaces%PARAMETERS)
737 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
743 2 ielemi ,gapv ,ikthe ,xthe ,fni
744 3 npc ,tf ,frad ,drad ,efrict ,
745 4 fheats ,fheatm ,condint,iform ,temp ,
746 5 h1 ,h2 ,h3 ,h4 ,fcond ,
747 6 dcond ,tint ,xi ,yi ,zi ,
748 7 x1 ,y1 ,z1 ,x2 ,y2 ,
749 8 z2 ,x3 ,y3 ,z3 ,x4 ,
750 9 y4 ,z4 ,ix1 ,ix2 ,ix3 ,
751 a ix4 ,phi ,phi1 ,phi2 ,phi3 ,
752 b phi4 ,pm ,nsvg ,itab ,theaccfact)
758 1 jlt ,nsvg ,itab ,ce_loc ,
759 2 jtask ,nin ,noint ,intply ,a ,
760 3 stif ,stifn ,niskyfi ,fskyi ,isky ,
761 4 n1 ,n2 ,n3 ,h1 ,h2 ,
762 5 h3 ,h4 ,ix1 ,ix2 ,ix3 ,
763 6 ix4 ,intth ,fthe ,ftheskyi ,
764 7 phi ,phi1 ,phi2 ,phi3 ,phi4 ,
765 8 fni , intbuf_tab%MSEGTYP24 ,apinch ,
767 9 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
768 a fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
769 b fy4 ,fz4 ,fxi ,fyi ,fzi ,
770 f iform ,condint ,condn ,condnskyi ,nodadt_therm)
774 IF (sfsavparit /= 0)
THEN
776 . fbsav6, 12, 6, dimfb, isensint )
778 DEALLOCATE (fsavparit)
783 IF(intbuf_tab%IRTLM(4*(n-1)+1) < 0)
784 . intbuf_tab%IRTLM(4*(n-1)+1) = -intbuf_tab%IRTLM(4*(n-1)+1)
793 IF(nedge==0)
GOTO 500
798 i_stok = intbuf_tab%I_STOK_E(1)
801 nb_loc = i_stok / nthread
802 IF (jtask==nthread)
THEN
803 i_stok_loc = i_stok-nb_loc*(nthread-1)
807 debut = (jtask-1)*nb_loc
811 DO i = debut+1, debut+i_stok_loc
816 eidm = intbuf_tab%ledge(nledge*(intbuf_tab%candm_e2e(i)-1) + 8)
817 eids = abs(intbuf_tab%cands_e2e(i))
818 if(eids > nedge)
then
819 eids =
ledge_fie(nin)%P(e_global_id,eids-nedge)
821 eids = intbuf_tab%ledge(nledge*(eids-1)+8)
823 if(eidm == d_em)
then
824 IF(intbuf_tab%CANDS_E2E(i) < 0)
THEN
825 write(6,
"(A,I10,A,2I10,Z20)") __file__,i,
"E2E conserve",eidm,eids, intbuf_tab%CAND_P(i)
827 write(6,
"(A,I10,A,2I10,Z20)") __file__,i,
"E2E exclude",eidm,eids, intbuf_tab%CAND_P(i)
834 IF(intbuf_tab%CANDS_E2E(i) < 0)
THEN
838 intbuf_tab%CANDS_E2E(i) = -intbuf_tab%CANDS_E2E(i)
840 intbuf_tab%CAND_P(i) = zero
846 IF(isensint(i)/=0)
THEN
847 sfsavparit = sfsavparit + 1
850 IF (sfsavparit /= 0)
THEN
851 ALLOCATE(fsavparit(nisub+1,11,i_stok))
855 fsavparit(h,i,j) = zero
860 ALLOCATE(fsavparit(0,0,0))
863 DO nft = 0 , i_stok - 1 , nvsiz
864 jlt =
min( nvsiz, i_stok - nft )
867 1 jlt,index2(nft+1),intbuf_tab%CANDM_E2E,intbuf_tab%CANDS_E2E,cm_loc,
870 1 jlt ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,x ,v ,
871 2 cs_loc ,cm_loc ,intbuf_tab%STFE ,ms ,ex ,
872 3 ey ,ez ,fx ,fy ,fz ,
873 4 stif ,xxs1 ,xxs2 ,xys1 ,xys2 ,
874 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
875 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
877 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
878 9 ms1 ,ms2 ,mm1 ,mm2 ,ne1 ,
879 a ne2 ,me1 ,me2 ,nedge ,nin ,
880 c intbuf_tab%STFAC,nodnx_sms ,nsms ,intbuf_tab%GAPE,gapve,
881 d iedge ,intbuf_tab%ADMSR,intbuf_tab%LBOUND,intbuf_tab%EDGE_BISECTOR,
882 e intbuf_tab%VTX_BISECTOR ,igap0,
883 f iam ,jam ,ibm ,jbm ,ias ,
884 g jas ,ibs ,jbs ,itab ,edge_id ,
885 h intfric ,intbuf_tab%IPARTFRIC_E ,ipartfricsi ,ipartfricmi,
886 i igap ,intbuf_tab%GAP_E_L,igsti ,kmin ,kmax ,
887 j istif_msdt ,dtstif ,intbuf_tab%STIFMSDT_EDG,interfaces%PARAMETERS)
889 1 jlt ,intbuf_tab%STFE,stif ,cs_loc ,cm_loc ,
890 2 nedge ,nin ,inacti ,ipari(40,nin),tncy)
893 1 jlt ,cs_loc,cm_loc ,hs1 ,hs2 ,
894 2 hm1 ,hm2 ,nx ,ny ,nz ,
895 3 stif ,ne1 ,ne2 ,me1 ,me2 ,
896 4 jlt_new,xxs1 ,xxs2 ,xys1 ,xys2 ,
897 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
898 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
899 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
900 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
901 9 ms1 ,ms2 ,mm1 ,mm2 ,iedge ,
902 b nsms ,index2(nft+1),intfric ,ipartfricsi,
904 c gapve ,ex ,ey ,ez ,fx ,
905 d fy ,fz ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,
907 e iam ,jam ,ibm ,jbm ,ias ,
908 f jas ,ibs ,jbs ,itab ,edge_id,
912 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
917 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
919 IF (debug(3)>=1) nb_impct = nb_impct + jlt
928 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
929 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
930 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
931 4 viscffric ,nty ,mfrot ,iorthfric ,ifric ,
932 5 jj , tint ,tempi ,npc ,tf ,
933 6 temp , h1 ,h2 ,h3 ,h4 ,
934 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
942 1 jlt ,a ,v ,ibc ,icodt ,
943 2 fsav ,gap ,fric ,ms ,visc ,
944 3 viscf ,noint ,itab ,cs_loc ,cm_loc ,
945 4 stiglo ,stifn ,stif ,fskyi ,isky ,
946 5 fcont ,dt2t ,ibm ,hs1 ,
947 6 hs2 ,hm1 ,hm2 ,ne1 ,ne2 ,
948 7 me1 ,me2 ,ivis2 ,neltst ,ityptst ,
949 8 nx ,ny ,nz ,gapve ,inacti ,
950 9 index2(nft+1),intbuf_tab%CAND_P,niskyfie ,newfront ,isecin ,
951 a nstrf ,secfcum ,viscn ,nedge ,ms1 ,
952 b ms2 ,mm1 ,mm2 ,vxs1 ,vys1 ,
953 c vzs1 ,vxs2 ,vys2 ,vzs2 ,vxm1 ,
954 d vym1 ,vzm1 ,vxm2 ,vym2 ,vzm2 ,
955 e nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBE,
957 f intbuf_tab%INFLG_SUBE ,fsavsub,mskyi_sms ,iskyi_sms ,nsms ,
958 g jtask ,isensint ,fsavparit(1,1,nft+1),nft,h3d_data ,
959 h ilev ,intbuf_tab%EBINFLG, edge_id,fricc,ifq ,
960 i intbuf_tab%FTSAVX_E,intbuf_tab%FTSAVY_E, intbuf_tab%FTSAVZ_E ,
961 . intbuf_tab%IFPEN_E ,
962 j tagncont ,kloadpinter ,loadpinter ,loadp_hyd_inter, intbuf_tab%TYPSUB,
963 k startt ,ninloadp,dgaploadint,s_loadpinter)
965 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
972 IF (sfsavparit /= 0)
THEN
974 . fbsav6, 12, 6, dimfb, isensint )
976 DEALLOCATE (fsavparit)
982 i_stok = intbuf_tab%I_STOK_E(2)
985 nb_loc = i_stok / nthread
986 IF (jtask==nthread)
THEN
987 i_stok_loc = i_stok-nb_loc*(nthread-1)
992 debut = (jtask-1)*nb_loc
995 DO i = debut+1, debut+i_stok_loc
999 eids = abs(intbuf_tab%cands_e2S(i))
1000 if(eids > nedge)
then
1001 eids =
ledge_fie(nin)%P(e_global_id,eids-nedge)
1003 eids = intbuf_tab%ledge(nledge*(eids-1)+8)
1005 if(eids == d_es)
then
1006 IF(intbuf_tab%CANDS_E2S(i) < 0)
THEN
1007 write(6,
"(A,I10,A,2I10,4Z20)") __file__,i,
"E2S conserve ",eidm,eids,intbuf_tab%CAND_PS(4*(i-1)+1:4*(i-1)+4)
1015 IF(intbuf_tab%CANDS_E2S(i) < 0)
THEN
1019 intbuf_tab%CANDS_E2S(i) = -intbuf_tab%CANDS_E2S(i)
1021 intbuf_tab%CAND_PS(4*(i-1)+1:4*(i-1)+4) = zero
1029 IF(isensint(i)/=0)
THEN
1030 sfsavparit = sfsavparit + 1
1033 IF (sfsavparit /= 0)
THEN
1034 ALLOCATE(fsavparit(nisub+1,11,i_stok))
1038 fsavparit(h,i,j) = zero
1043 ALLOCATE(fsavparit(0,0,0))
1046 DO nft = 0 , i_stok - 1 , nvsiz
1047 jlt =
min( nvsiz, i_stok - nft )
1050 1 jlt,index2(nft+1),intbuf_tab%CANDM_E2S,intbuf_tab%CANDS_E2S,
1053 1 jlt ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,x ,v ,
1054 2 cs_loc ,cm_loc ,intbuf_tab%STFM ,ms ,ex ,
1055 3 ey ,ez ,fx ,fy ,fz ,
1056 4 stife ,xxs1 ,xxs2 ,xys1 ,xys2 ,
1057 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
1058 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
1059 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
1060 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
1061 9 ms1 ,ms2 ,mm1 ,mm2 ,ns1 ,
1062 a ns2 ,m1 ,m2 ,nedge ,nin ,
1063 c intbuf_tab%STFAC,nodnx_sms ,nsmse ,intbuf_tab%GAPE,gapve ,
1064 d iedge ,intbuf_tab%ADMSR,intbuf_tab%LBOUND,intbuf_tab%EDGE_BISECTOR,
1065 e intbuf_tab%VTX_BISECTOR ,typedgs ,ias ,jas ,ibs ,
1066 f jbs ,iam ,intbuf_tab%STFE,edge_id, itab,
1067 g intfric ,intbuf_tab%IPARTFRIC_E ,ipartfric_es ,ipartfric_em,
1068 h igsti ,kmin ,kmax ,intbuf_tab%E2S_NOD_NORMAL,nadmsr,
1069 i normaln1 ,normaln2 ,normalm1 ,normalm2 , istif_msdt,
1070 j dtstif ,intbuf_tab%STIFMSDT_EDG,intbuf_tab%STIFMSDT_M,nrtm,interfaces%PARAMETERS)
1073 1 jlt ,cs_loc,cm_loc ,hs1 ,hs2 ,
1074 2 hm1 ,hm2 ,nx ,ny ,nz ,
1075 3 stife ,ns1 ,ns2 ,m1 ,m2 ,
1076 4 jlt_new,xxs1 ,xxs2 ,xys1 ,xys2 ,
1077 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
1078 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
1079 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
1080 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
1081 9 ms1 ,ms2 ,mm1 ,mm2 ,iedge ,
1082 b nsmse ,index2(nft+1),intfric ,ipartfric_es,
1084 c gapve ,ex ,ey ,ez ,fx ,
1085 d fy ,fz ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,x ,
1086 e intbuf_tab%CAND_PS,typedgs ,ias ,jas ,ibs ,
1087 f jbs ,iam ,itab ,indx1,indx2,
1088 g cs_loc4,cm_loc4,edge_id, nedge, nin,
1089 h dgaploadpmax,normaln1,normaln2,normalm1,normalm2)
1091 assert(4*jlt>=jlt_new)
1095 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
1097 IF (debug(3)>=1) nb_impct = nb_impct + jlt
1102 IF(mfrot == 0 )
THEN
1106 1 intfric ,jlt ,ipartfric_es ,ipartfric_em ,adparts_fric ,
1107 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
1108 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc_e ,
1109 4 viscffric_e ,nty ,mfrot ,iorthfric ,ifric ,
1110 5 jj , tint ,tempi ,npc ,tf ,
1111 6 temp , h1 ,h2 ,h3 ,h4 ,
1112 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
1119 assert(jlt < 4*mvsiz)
1121 1 jlt ,a ,v ,ibc ,icodt ,
1122 2 fsav ,gap ,fric ,ms ,visc ,
1123 3 viscf ,noint ,itab ,cs_loc4 ,cm_loc4 ,
1124 4 stiglo ,stifn ,stife ,fskyi ,isky ,
1125 5 fcont ,dt2t ,nrtm,intbuf_tab%MSEGTYP24,hs1 ,
1126 6 hs2 ,hm1 ,hm2 ,ns1 ,ns2 ,
1127 7 m1 ,m2 ,ivis2 ,neltst ,ityptst ,
1128 8 nx ,ny ,nz ,gapve ,inacti ,
1129 9 index2(nft+1),intbuf_tab%CAND_PS,niskyfie ,newfront ,isecin ,
1130 a nstrf ,secfcum ,viscn ,nedge ,ms1 ,
1131 b ms2 ,mm1 ,mm2 ,vxs1 ,vys1 ,
1132 c vzs1 ,vxs2 ,vys2 ,vzs2 ,vxm1 ,
1133 d vym1 ,vzm1 ,vxm2 ,vym2 ,vzm2 ,
1134 e nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBE,intbuf_tab%ADDSUBM,
1135 f intbuf_tab%LISUBE ,intbuf_tab%LISUBM ,intbuf_tab%INFLG_SUBE ,intbuf_tab%INFLG_SUBM ,
1137 g mskyi_sms ,iskyi_sms ,nsmse ,jtask ,isensint ,
1138 h fsavparit(1,1,nft+1),nft ,h3d_data ,indx1 ,indx2 ,
1139 i ilev ,intbuf_tab%MBINFLG, edge_id,nedge_rem ,fricc_e ,
1140 j ifq ,intbuf_tab%FTSAVX_E2S,intbuf_tab%FTSAVY_E2S, intbuf_tab%FTSAVZ_E2S ,
1141 . intbuf_tab%IFPEN_E2S ,
1142 k tagncont ,kloadpinter ,loadpinter ,loadp_hyd_inter,intbuf_tab%TYPSUB,
1143 o startt ,ninloadp,dgaploadint,s_loadpinter)
1145 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
1149 IF (sfsavparit /= 0)
THEN
1151 . fbsav6, 12, 6, dimfb, isensint )
1153 DEALLOCATE (fsavparit)