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(timer_) :: TIMERS
123 INTEGER NELTST,ITYPTST,NIN,NEWFRONT,
125 . NRTMDIM, IAD17, IPARSENS
126 INTEGER IPARI(NPARI,), ICODT(*),ICONTACT(*),
127 . ITAB(*), ISKY(*), KINET(*),
128 . IPARG(NPARG,*),INOD_PXFEM(*),TAGNCONT(NLOADP_HYD_INTER,NUMNOD)
129 INTEGER NB_IMPCT,JTASK,
130 . NISKYFI, LINDMAX, NISKYFIE
131 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),IND_IMP(*)
132 INTEGER IXS(*) ,IXS16(*) ,IXS20(*)
133 INTEGER IAD_ELEM(2,*),FR_ELEM(*), NPC(*),
134 . ISKYI_SMS(*), NODNX_SMS(*), ISENSINT(*),DIMFB
135 INTEGER ,
INTENT(IN) :: S_LOADPINTER
136 INTEGER ,
INTENT(IN) :: KLOADPINTER(NINTER+1),LOADPINTER(S_LOADPINTER),
137 . LOADP_HYD_INTER(NLOADP_HYD)
138 INTEGER ,
INTENT(IN) :: NODADT_THERM
139 INTEGER ,
INTENT(IN) :: INTEREFRIC
140 my_real ,
INTENT(IN) :: THEACCFACT
141 my_real ,
INTENT(IN) :: DGAPLOADINT(S_LOADPINTER)
146 . x(*), a(3,*), fsav(*), v(3,*),fsavbag(*),
147 . ms(*),stifn(*),fskyi(lskyi,4),fcont(3,*),ms0(*),
148 . secfcum(7,numnod,nsect),viscn(*), fsavsub(*),
149 . fncont(3,*), ftcont(3,*), rcontact(*), acontact(*),
151 . temp(*),fthe(*),ftheskyi(lskyi),pm(npropm,*),
152 . mskyi_sms(*),ms_ply(*),wagap(*),
153 . apinch(3,*),stifpinch(*),qfricint(*),tf(*),condn(*),
155 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
156 TYPE(intbuf_struct_) INTBUF_TAB
157 TYPE(H3D_DATABASE) :: H3D_DATA
158 TYPE(intbuf_fric_struct_),
TARGET,
DIMENSION(NINTERFRIC) :: INTBUF_FRIC_TAB
159 TYPE (INTERFACES_) ,
INTENT(IN):: INTERFACES
163 INTEGER JD(50),KD(50), JFI, KFI, IEDGE, ISHARP, NEDGE,
164 . I, J, L, H, I_STOK, JLT_NEW, JLT , NFT, IVIS2,
165 . ibc, noint, nseg, isecin, ibag, iadm,
166 . igap, inacti, ifq, mfrot, igsti, nisub, igap0,
167 . nb_loc, i_stok_loc,debut,
168 . ilagm, lenr, intth,iform,intply,
169 . nadmsr, i_stok_glo, mglob, mg, n, nsnr, nn, ierror,
170 . ie, i1, i2, iorthfric ,nforth ,nfisot ,jj,fcond,ikthe,ifric,
173 INTEGER IX1(MVSIZ), (MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
174 . NSVG(MVSIZ), CN_LOC(MVSIZ),CE_LOC(MVSIZ),
175 . cand_n_n(mvsiz),cand_e_n(mvsiz),
177 . isdsiz(nspmd+1),ircsiz(nspmd+1),
178 . ielesi(mvsiz), nsms(mvsiz), subtria(mvsiz),
179 . nsnft, nsnlt, nsnrft, nsnrlt, intfric,nsetprts ,npartfric,
180 . ipartfricsi(mvsiz), ipartfricmi(mvsiz), ifadhi(mvsiz),
181 . mvoisn(mvsiz,4),ibound(4,mvsiz),indexisot(mvsiz),indexorth(mvsiz),
182 . irep_fricmi(mvsiz),ipartfric_es(4*mvsiz),ipartfric_em(4*mvsiz),
184 INTEGER :: EDGE_ID(2,4*MVSIZ)
186 . NE1(MVSIZ), NE2(MVSIZ), ME1(MVSIZ), (MVSIZ),
187 . (MVSIZ), CM_LOC(MVSIZ),
188 . NS1(4*MVSIZ), NS2(4*MVSIZ), M1(4*MVSIZ), M2(4*MVSIZ), INDX1(4*MVSIZ), INDX2(4*MVSIZ),
189 . NSMSE(4*MVSIZ), CS_LOC4(4*MVSIZ), CM_LOC4(4*MVSIZ),
191 . IAM(MVSIZ),JAM(MVSIZ),IBM(MVSIZ),JBM(MVSIZ),
192 . ias(mvsiz),jas(mvsiz),ibs(mvsiz),jbs(mvsiz)
194 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: INDEX2
197 . STARTT, FRIC, GAP, STOPT, PMAX_GAP,
198 . VISC,VISCF,STIGLO,GAPMIN,
199 . KMIN, KMAX, GAPMAX,KTHE,TINT,RHOH,EPS,
200 . VISCFLUID, SIGMAXADH, VISCADHFACT,
201 . FHEATS,FHEATM,XTHE,FRAD,DRAD,DCOND
208 . xx(mvsiz,5), yy(mvsiz,5), zz(mvsiz,5),
209 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
210 . nnx(mvsiz,5), nny(mvsiz,5), nnz(mvsiz,5),
211 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz),
212 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz),
213 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz),
214 . vxi(mvsiz), vyi(mvsiz), vzi(mvsiz),
215 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
216 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
218 . nm1(mvsiz), nm2(mvsiz), nm3(mvsiz),
219 . tempi(mvsiz),phi(mvsiz),areasi(mvsiz),
220 . lb(mvsiz), lc(mvsiz),
221 . gap_nm(4,mvsiz), gaps(mvsiz), gapmxl(mvsiz),
222 . gapv(mvsiz), base_adh(mvsiz),
223 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
224 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
225 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
226 . fxi(mvsiz), fyi(mvsiz), fzi(mvsiz), fni(mvsiz),
227 . fx1(mvsiz), fx2(mvsiz), fx3(mvsiz), fx4(mvsiz),
228 . fy1(mvsiz), fy2(mvsiz), fy3(mvsiz), fy4(mvsiz),
229 . fz1(mvsiz), fz2(mvsiz), fz3(mvsiz), fz4(mvsiz),
230 . phi1(mvsiz), phi2(mvsiz),phi3(mvsiz),phi4(mvsiz) ,
231 . condint(mvsiz) ,efrict(mvsiz)
233 . gapve(4*mvsiz), stife(4*mvsiz), nx(4*mvsiz), ny(4*mvsiz), nz(4*mvsiz),
234 . hs1(4*mvsiz), hs2(4*mvsiz), hm1(4*mvsiz), hm2(4*mvsiz),
235 . xxs1(4*mvsiz), xxs2(4*mvsiz), xys1(4*mvsiz), xys2(4*mvsiz),
236 . xzs1(4*mvsiz), xzs2(4*mvsiz), xxm1(4*mvsiz), xxm2(4*mvsiz),
237 . xym1(4*mvsiz), xym2(4*mvsiz), xzm1(4*mvsiz), xzm2(4*mvsiz),
238 . vxs1(4*mvsiz), vxs2(4*mvsiz), vys1(4*mvsiz), vys2(4*mvsiz),
239 . vzs1(4*mvsiz), vzs2(4*mvsiz), vxm1(4*mvsiz), vxm2(4*mvsiz),
240 . vym1(4*mvsiz), vym2(4*mvsiz), vzm1(4*mvsiz), vzm2(4*mvsiz),
241 . ms1(4*mvsiz), ms2(4*mvsiz), mm1(4*mvsiz), mm2(4*mvsiz),
242 . ex(4*mvsiz), ey(4*mvsiz), ez(4*mvsiz), fx(mvsiz), fy(mvsiz),
243 . fz(mvsiz) , dist(mvsiz),
244 . normaln1(3,mvsiz) ,normaln2(3,mvsiz) ,normalm1(3,4,mvsiz),normalm2(3,4,mvsiz)
247 . ,
DIMENSION(:,:,:),
ALLOCATABLE :: fsavparit
249 . rcurvi(mvsiz), anglmi(mvsiz), anglt, padm,penmin,marge
250 INTEGER NRTMFT, NRTMLT, NMNFT, NMNLT, NRADM, IS, IM, ISTIF_MSDT,IKNON(MVSIZ)
251 INTEGER ICURV,ILEV,NREBOU,NPT ,NRTSE,IEDG4,SFSAVPARIT,NCY_PFIT,NINLOADP
253 . xfiltr_fric,fric_coefs(mvsiz,10),viscffric(mvsiz),fricc(mvsiz),
254 . fric_coefs2(mvsiz,10),viscffric2(mvsiz),fricc2(mvsiz),
255 . dir1(mvsiz,3),dir2(mvsiz,3),dir_fricmi(mvsiz,2),fricc_e(4*mvsiz),
256 . viscffric_e(4*mvsiz),tncy,t_pfit,finc,dgaploadpmax,dtstif
258 INTEGER,
DIMENSION(:) ,
POINTER :: TABCOUPLEPARTS_FRIC
259 INTEGER,
DIMENSION(:) ,
POINTER :: TABPARTS_FRIC
260 INTEGER,
DIMENSION(:) ,
POINTER :: ADPARTS_FRIC
261 INTEGER,
DIMENSION(:) ,
POINTER :: IFRICORTH
262 my_real,
DIMENSION(:) ,
POINTER :: TABCOEF_FRIC
264 INTEGER,
TARGET,
DIMENSION(1):: TABCOUPLEPARTS_FRIC_BID
265 INTEGER,
TARGET,
DIMENSION(1):: TABPARTS_FRIC_BID
266 INTEGER,
TARGET,
DIMENSION(1):: ADPARTS_FRIC_BID
267 INTEGER,
TARGET,
DIMENSION(1):: IFRICORTH_BID
268 my_real,
TARGET,
DIMENSION(1):: tabcoef_fric_bid
270 INTEGER :: NEDGE_REM,NRTM,NSN,NTY
271 LOGICAL :: SET_IPARI40_TO_ZERO
280 IF(ipari(33,nin)==1)
RETURN
296 nedge_rem = ipari(69,nin)
301 padm =intbuf_tab%VARIABLES(24)
302 anglt=intbuf_tab%VARIABLES(25)
303 marge=intbuf_tab%VARIABLES(25)
305 intth = ipari(47,nin)
306 ikthe = ipari(92,nin)
307 iform = ipari(48,nin)
308 intply = ipari(66,nin)
310 stiglo=-intbuf_tab%STFAC(1)
311 startt=intbuf_tab%VARIABLES(3)
312 stopt =intbuf_tab%VARIABLES(11)
316 fric =intbuf_tab%VARIABLES(1)
317 gap =intbuf_tab%VARIABLES(2)
318 gapmin=intbuf_tab%VARIABLES(13)
319 visc =intbuf_tab%VARIABLES(14)
321 t_pfit = intbuf_tab%VARIABLES(15)
324 gapmax=intbuf_tab%VARIABLES(16)
325 kmin =intbuf_tab%VARIABLES(17)
326 kmax =intbuf_tab%VARIABLES(18)
328 kthe = intbuf_tab%VARIABLES(20)
329 fheats = intbuf_tab%VARIABLES(21)
330 tint = intbuf_tab%VARIABLES(22)
331 fheatm = intbuf_tab%VARIABLES(41)
332 xthe =intbuf_tab%VARIABLES(33)
333 frad = intbuf_tab%VARIABLES(31)
334 drad = intbuf_tab%VARIABLES(32)
335 fcond = ipari(93,nin)
336 dcond = intbuf_tab%VARIABLES(34)
338 IF(intth > 0) ifric =ipari(50,nin)
340 penmin = intbuf_tab%VARIABLES(38)
341 eps = intbuf_tab%VARIABLES(39)
343 viscfluid = intbuf_tab%VARIABLES(42)
344 sigmaxadh = intbuf_tab%VARIABLES(43)
345 viscadhfact = intbuf_tab%VARIABLES(44)
349 istif_msdt =ipari(97,nin)
350 dtstif = intbuf_tab%VARIABLES(48)
353 nrtse = ipari(52,nin)
355 intcarea = ipari(99,nin)
357 ALLOCATE(index2(lindmax))
359 intfric=ipari(72,nin)
364 IF(intfric /= 0)
THEN
365 tabcoupleparts_fric => intbuf_fric_tab(intfric)%TABCOUPLEPARTS_FRIC
366 tabcoef_fric => intbuf_fric_tab(intfric)%TABCOEF_FRIC
367 tabparts_fric => intbuf_fric_tab(intfric)%TABPARTS_FRIC
368 adparts_fric => intbuf_fric_tab(intfric)%ADPARTS_FRIC
369 xfiltr_fric = intbuf_fric_tab(intfric)%XFILTR_FRIC
370 nsetprts = intbuf_fric_tab(intfric)%NSETPRTS
371 npartfric = intbuf_fric_tab(intfric)%S_TABPARTS_FRIC
372 iorthfric = intbuf_fric_tab(intfric)%IORTHFRIC
373 ifricorth => intbuf_fric_tab(intfric)%IFRICORTH
377 tabcoupleparts_fric => tabcoupleparts_fric_bid
378 tabparts_fric => tabparts_fric_bid
379 tabcoef_fric => tabcoef_fric_bid
380 adparts_fric => adparts_fric_bid
381 ifricorth => ifricorth_bid
382 IF (ifq/=0) xfiltr_fric = intbuf_tab%XFILTR(1)
386 ninloadp = ipari(95,nin)
387 dgaploadpmax = intbuf_tab%VARIABLES(46)
394 set_ipari40_to_zero = .false.
395 IF (startt>zero.AND.t_pfit==zero)
THEN
397 intbuf_tab%VARIABLES(15) = t_pfit
399 IF (t_pfit > zero)
THEN
400 IF (tt <= (startt+t_pfit) )
THEN
401 tncy = (tt+em05-startt)/t_pfit
403 set_ipari40_to_zero = .true.
406 ncy_pfit = ipari(40,nin)
407 IF (ncy_pfit >0 .AND. ncycle> ncy_pfit)
THEN
408 set_ipari40_to_zero = .true.
409 ELSEIF (ncy_pfit>0)
THEN
410 finc = one/ipari(40,nin)
411 tncy = (ncycle+1)*finc
417 nsnft= 1+(jtask-1)*nsn/ nthread
418 nsnlt= jtask*nsn/nthread
420 nsnrft= 1+(jtask-1)*nsnr/ nthread
421 nsnrlt= jtask*nsnr/nthread
426 IF(intbuf_tab%IRTLM(4*(n-1)+1) > 0 .AND. (intbuf_tab%TIME_S(2*(n-1)+1) == ep20 .OR.
427 . (intbuf_tab%IRTLM(4*(n-1)+2) < 0.AND.mod(-intbuf_tab%IRTLM(4*(n-1)+2),5)==0)) )
THEN
429 intbuf_tab%IRTLM(4*(n-1)+1)=0
430 intbuf_tab%IRTLM(4*(n-1)+2)=0
431 intbuf_tab%IRTLM(4*(n-1)+3)=0
432 intbuf_tab%IRTLM(4*(n-1)+4)=0
434 intbuf_tab%SECND_FR(6*(n-1)+1:6*n) = zero
435 intbuf_tab%STIF_OLD(2*(n-1)+1:2*n)= zero
436 intbuf_tab%PENE_OLD(5*(n-1)+1:5*n)= zero
445 . (
irtlm_fi(nin)%P(2,n) < 0.AND.mod
THEN
463 IF(intbuf_tab%IRTLM(4*(n-1)+1) > 0 .AND. (intbuf_tab%TIME_S(2*(n-1)+1) == ep20 .OR.
467 intbuf_tab%IRTLM(4*(n-1)+1)=0
468 intbuf_tab%IRTLM(4*(n-1)+2)=0
469 intbuf_tab%IRTLM(4*(n-1)+3)=0
470 intbuf_tab%IRTLM(4*(n-1)+4)=0
472 intbuf_tab%SECND_FR(6*(n-1)+1:6*n) = zero
473 intbuf_tab%STIF_OLD(2*(n-1)+1:2*n)= zero
474 intbuf_tab%PENE_OLD(5*(n-1)+1:5*n)= zero
476 intbuf_tab%IF_ADH(n) = 0
503 IF (inacti/=-1 .OR. set_ipari40_to_zero)
THEN
512 i_stok_glo = intbuf_tab%I_STOK(2)
514 nb_loc = i_stok_glo / nthread
515 IF (jtask==nthread)
THEN
516 i_stok_loc = i_stok_glo-nb_loc*(nthread-1)
520 debut = (jtask-1)*nb_loc
523 DO i = debut+1, debut+i_stok_loc
524 IF(intbuf_tab%CAND_OPT_N(i)>0)
THEN
532 1 i_stok ,index2 ,intbuf_tab%CAND_OPT_N,intbuf_tab%CAND_OPT_E,nin ,
533 2 nsn ,nsnr ,inacti ,intbuf_tab%MSEGLO ,intbuf_tab%IRTLM ,
534 3 intbuf_tab%PENM ,intbuf_tab%PENE_OLD ,jtask ,itab,
535 4 intbuf_tab%NSV ,intbuf_tab%SECND_FR,intbuf_tab%TIME_S,
536 . intbuf_tab%STIF_OLD)
544 i_stok_glo = intbuf_tab%I_STOK(2)
546 nb_loc = i_stok_glo / nthread
547 IF (jtask==nthread)
THEN
548 i_stok_loc = i_stok_glo-nb_loc*(nthread-1)
552 debut = (jtask-1)*nb_loc
558 DO i = jtask, i_stok_glo, nthread
559 IF(intbuf_tab%CAND_OPT_N(i)>0)
THEN
567 IF(isensint(i)/=0)
THEN
568 sfsavparit = sfsavparit + 1
571 IF (sfsavparit /= 0)
THEN
572 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
574 CALL ancmsg(msgid=19,anmode=aninfo,
575 . c1=
'(/INTER/TYPE25)')
578 fsavparit(1:nisub+1,1:11,1:i_stok) = zero
580 ALLOCATE(fsavparit(0,0,0),stat=ierror)
582 CALL ancmsg(msgid=19,anmode=aninfo,
583 . c1=
'(/INTER/TYPE25)')
590 DO nft = 0 , i_stok - 1 , nvsiz
591 jlt =
min( nvsiz, i_stok - nft )
594 1 jlt,index2(nft+1),intbuf_tab%CAND_OPT_E,intbuf_tab%CAND_OPT_N,
595 2 cand_e_n,cand_n_n )
599 1 jlt ,x ,intbuf_tab%IRECTM,intbuf_tab%NSV ,cand_e_n ,
600 2 cand_n_n ,intbuf_tab%STFM ,intbuf_tab%STFNS,stif ,
601 . intbuf_tab%EDGE_BISECTOR,
602 3 igsti ,kmin ,kmax ,ms ,msi ,
603 3 xi ,yi ,zi ,vxi ,vyi ,
604 4 vzi ,ix1 ,ix2 ,ix3 ,ix4 ,
605 5 nsvg ,nsn ,v ,kinet ,kini ,
606 6 nin ,intbuf_tab%ADMSR ,intbuf_tab%IRTLM,subtria ,
607 7 xx ,yy ,zz ,intbuf_tab%LBOUND,ibound ,
609 9 vx1 ,vx2 ,vx3 ,vx4 ,
610 a vy1 ,vy2 ,vy3 ,vy4 ,
611 b vz1 ,vz2 ,vz3 ,vz4 ,
612 c nodnx_sms ,nsms ,index2(nft+1),intbuf_tab%PENM,intbuf_tab%LBM,
613 d intbuf_tab%LCM,pene ,lb , lc ,
615 f intbuf_tab%GAP_SL,intbuf_tab%GAP_ML,gapmxl,intfric,intbuf_tab%IPARTFRICS,
616 g ipartfricsi,intbuf_tab%IPARTFRICM,ipartfricmi,intbuf_tab%AREAS,areasi,
617 h ivis2 ,intbuf_tab%MVOISIN,mvoisn,iorthfric,intbuf_tab%IREP_FRICM,
618 i intbuf_tab%DIR_FRICM ,irep_fricmi ,dir_fricmi ,x1 ,y1 ,
619 j z1 ,x2 ,y2 ,z2 ,x3 ,
620 k y3 ,z3 ,x4 ,y4 ,z4 ,
621 l intth ,temp ,tempi ,intbuf_tab%IELES ,ielesi ,
622 m intbuf_tab%IELEM,ielemi,istif_msdt,dtstif ,intbuf_tab%STIFMSDT_S,
623 n intbuf_tab%STIFMSDT_M,nrtm ,interfaces%PARAMETERS)
626 1 jlt ,intbuf_tab%STFM ,intbuf_tab%STFNS,stif ,nsn ,
627 2 cand_e_n ,cand_n_n,nin ,igsti ,kmin ,
628 3 kmax ,inacti ,ipari(40,nin),tncy ,iknon )
633 1 jlt ,cand_n_n ,cand_e_n ,cn_loc ,ce_loc ,
634 2 intbuf_tab%IRTLM,xx ,yy ,zz ,gap_nm ,
635 3 xi ,yi ,zi ,gaps ,gapmxl ,
636 4 isharp ,nnx ,nny ,nnz ,
637 5 n1 ,n2 ,n3 ,h1 ,h2 ,
638 5 h3 ,h4 ,nin ,nsn ,ix1 ,
639 6 ix2 ,ix3 ,ix4 ,nsvg ,stif ,
640 7 inacti ,kini ,itab ,lb ,lc ,
641 8 penmin ,eps ,pene ,intbuf_tab%PENE_OLD,subtria,
642 9 gapv ,ivis2 ,intbuf_tab%IF_ADH,ifadhi ,base_adh ,
643 a mvoisn ,ibound ,intbuf_tab%VTX_BISECTOR ,dist, tt)
650 IF(pene(i)==zero)
THEN
653 intbuf_tab%STIF_OLD(2*(n-1)+1)=
max(intbuf_tab%STIF_OLD(2*(n-1)+1),stif(i))
658 jlt_new = jlt_new + 1
663 IF(intth==0.AND.jlt_new == 0.AND.(ninloadp == 0.OR.dgaploadpmax==zero))cycle
666 IF (debug(3)>=1) nb_impct = nb_impct + jlt_new
667 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
672 IF(jtask==1)
CALL startime(timers,macro_timer_fric)
674 IF(iorthfric > 0)
THEN
676 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
677 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
678 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
679 4 viscffric ,nty ,mfrot ,iorthfric , fric_coefs2,
680 5 fricc2 ,viscffric2 ,ifricorth ,nforth , nfisot
681 6 indexorth ,indexisot ,jj ,irep_fricmi ,dir_fricmi ,
682 7 ix3 ,ix4 ,x1 ,y1 , z1 ,
683 8 x2 ,y2 ,z2 ,x3 , y3 ,
684 9 z3 ,x4 ,y4 ,z4 ,ce_loc ,
690 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
691 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
692 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
693 4 viscffric ,nty ,mfrot ,iorthfric ,ifric ,
694 5 jj , tint ,tempi ,npc ,tf ,
695 6 temp , h1 ,h2 ,h3 ,h4 ,
696 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
698 IF(jtask==1)
CALL stoptime(timers,macro_timer_fric
701 1 jlt ,a ,v ,ibc ,icodt ,
703 3 viscf ,noint ,intbuf_tab%STFNS,itab ,cn_loc ,
704 4 stiglo ,stifn ,stif ,inacti ,index2(nft+1),
705 5 n1 ,n2 ,n3 ,h1 ,h2 ,
706 6 h3 ,h4 ,fcont ,pene ,nrtm ,
707 7 ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
708 8 ivis2 ,neltst ,ityptst ,dt2t ,
709 a kinet ,newfront ,isecin ,nstrf ,secfcum ,
710 b x ,intbuf_tab%IRECTM,ce_loc ,mfrot ,ifq ,
711 b intbuf_tab%SECND_FR,xfiltr_fric,ibag ,icontact ,intbuf_tab%IRTLM,
712 e viscn ,vxi ,vyi ,vzi ,msi ,
713 f kini ,nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBS,
714 g intbuf_tab%ADDSUBM,intbuf_tab%LISUBS,intbuf_tab%LISUBM,
715 . intbuf_tab%INFLG_SUBS,intbuf_tab%INFLG_SUBM,
716 h fsavsub ,ipari(33,nin),ipari(39,nin),fncont ,ftcont ,
718 j xi ,yi ,zi ,anglmi ,padm ,
719 k iadm ,rcurvi ,rcontact ,acontact ,pcontact ,
720 n mskyi_sms ,iskyi_sms ,nsms ,cand_n_n ,intbuf_tab%PENE_OLD,
721 o intbuf_tab%STIF_OLD,intbuf_tab%MBINFLG,ilev ,igsti ,kmin ,
722 p intply ,nm1 ,nm2 ,nm3 ,
723 q intbuf_tab%MSEGTYP24,jtask ,isensint ,
724 t fsavparit(1,1,nft+1),h3d_data,fricc ,viscffric ,fric_coefs, gapv,
725 u viscfluid , sigmaxadh , viscadhfact, ifadhi , areasi , base_adh ,
726 v iorthfric ,fric_coefs2 ,fricc2 ,viscffric2,nforth ,nfisot ,
727 w indexorth , indexisot ,dir1 ,dir2 ,apinch ,stifpinch,
728 c fni ,fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
729 d fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
730 e fy4 ,fz4 ,fxi ,fyi ,fzi ,
731 c intth ,drad ,fheats ,fheatm ,qfricint(nin),
732 d efrict ,tagncont ,kloadpinter ,loadpinter ,loadp_hyd_inter,
733 e intbuf_tab%TYPSUB,ipari(40,nin),ninloadp,dgaploadint,s_loadpinter
734 f dist ,dgaploadpmax,interefric ,intcarea ,interfaces%PARAMETERS)
736 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
741 1 jlt ,kthe ,tempi ,areasi ,ielesi
742 2 ielemi ,gapv ,ikthe ,xthe ,fni ,
743 3 npc ,tf ,frad ,drad ,efrict ,
744 4 fheats ,fheatm ,condint,iform ,temp ,
745 5 h1 ,h2 ,h3 ,h4 ,fcond ,
746 6 dcond ,tint ,xi ,yi ,zi ,
747 7 x1 ,y1 ,z1 ,x2 ,y2 ,
748 8 z2 ,x3 ,y3 ,z3 ,x4 ,
749 9 y4 ,z4 ,ix1 ,ix2 ,ix3 ,
750 a ix4 ,phi ,phi1 ,phi2 ,phi3 ,
751 b phi4 ,pm ,nsvg ,itab ,theaccfact)
757 1 jlt ,nsvg ,itab ,ce_loc ,
758 2 jtask ,nin ,noint ,intply ,a ,
759 3 stif ,stifn ,niskyfi ,fskyi ,isky ,
760 4 n1 ,n2 ,n3 ,h1 ,h2 ,
761 5 h3 ,h4 ,ix1 ,ix2 ,ix3 ,
762 6 ix4 ,intth ,fthe ,ftheskyi ,
763 7 phi ,phi1 ,phi2 ,phi3 ,phi4 ,
764 8 fni , intbuf_tab%MSEGTYP24 ,apinch ,
766 9 fx1 ,fy1 ,fz1 ,fx2 ,fy2 ,
767 a fz2 ,fx3 ,fy3 ,fz3 ,fx4 ,
768 b fy4 ,fz4 ,fxi ,fyi ,fzi ,
769 f iform ,condint ,condn ,condnskyi ,nodadt_therm)
773 IF (sfsavparit /= 0)
THEN
775 . fbsav6, 12, 6, dimfb, isensint )
777 DEALLOCATE (fsavparit)
782 IF(intbuf_tab%IRTLM(4*(n-1)+1) < 0)
783 . intbuf_tab%IRTLM(4*(n-1)+1) = -intbuf_tab%IRTLM(4*(n-1)+1)
792 IF(nedge==0)
GOTO 500
797 i_stok = intbuf_tab%I_STOK_E(1)
800 nb_loc = i_stok / nthread
801 IF (jtask==nthread)
THEN
802 i_stok_loc = i_stok-nb_loc*(nthread-1)
806 debut = (jtask-1)*nb_loc
810 DO i = debut+1, debut+i_stok_loc
815 eidm = intbuf_tab%ledge(nledge*(intbuf_tab%candm_e2e(i)-1) + 8)
816 eids = abs(intbuf_tab%cands_e2e(i))
817 if(eids > nedge)
then
818 eids =
ledge_fie(nin)%P(e_global_id,eids-nedge)
820 eids = intbuf_tab%ledge(nledge*(eids-1)+8)
822 if(eidm == d_em)
then
823 IF(intbuf_tab%CANDS_E2E(i) < 0)
THEN
824 write(6,
"(A,I10,A,2I10,Z20)") __file__,i,
"E2E conserve",eidm,eids, intbuf_tab%CAND_P(i)
826 write(6,
"(A,I10,A,2I10,Z20)") __file__,i,
"E2E exclude",eidm,eids, intbuf_tab%CAND_P(i)
833 IF(intbuf_tab%CANDS_E2E(i) < 0)
THEN
837 intbuf_tab%CANDS_E2E(i) = -intbuf_tab%CANDS_E2E(i)
839 intbuf_tab%CAND_P(i) = zero
845 IF(isensint(i)/=0)
THEN
846 sfsavparit = sfsavparit + 1
849 IF (sfsavparit /= 0)
THEN
850 ALLOCATE(fsavparit(nisub+1,11,i_stok))
854 fsavparit(h,i,j) = zero
859 ALLOCATE(fsavparit(0,0,0))
862 DO nft = 0 , i_stok - 1 , nvsiz
863 jlt =
min( nvsiz, i_stok - nft )
866 1 jlt,index2(nft+1),intbuf_tab%CANDM_E2E,intbuf_tab%CANDS_E2E,cm_loc,
869 1 jlt ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,x ,v ,
870 2 cs_loc ,cm_loc ,intbuf_tab%STFE ,ms ,ex ,
871 3 ey ,ez ,fx ,fy ,fz ,
872 4 stif ,xxs1 ,xxs2 ,xys1 ,xys2 ,
873 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
874 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
875 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
876 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
877 9 ms1 ,ms2 ,mm1 ,mm2 ,ne1 ,
878 a ne2 ,me1 ,me2 ,nedge ,nin ,
879 c intbuf_tab%STFAC,nodnx_sms ,nsms ,intbuf_tab%GAPE,gapve,
880 d iedge ,intbuf_tab%ADMSR,intbuf_tab%LBOUND,intbuf_tab%EDGE_BISECTOR,
881 e intbuf_tab%VTX_BISECTOR ,igap0,
882 f iam ,jam ,ibm ,jbm ,ias ,
883 g jas ,ibs ,jbs ,itab ,edge_id ,
885 i igap ,intbuf_tab%GAP_E_L,igsti ,kmin ,kmax ,
886 j istif_msdt ,dtstif ,intbuf_tab%STIFMSDT_EDG,interfaces%PARAMETERS)
888 1 jlt ,intbuf_tab%STFE,stif ,cs_loc ,cm_loc ,
889 2 nedge ,nin ,inacti ,ipari(40,nin),tncy)
892 1 jlt ,cs_loc,cm_loc ,hs1 ,hs2 ,
893 2 hm1 ,hm2 ,nx ,ny ,nz ,
894 3 stif ,ne1 ,ne2 ,me1 ,me2 ,
895 4 jlt_new,xxs1 ,xxs2 ,xys1 ,xys2 ,
896 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
897 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
898 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
899 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
900 9 ms1 ,ms2 ,mm1 ,mm2 ,iedge ,
901 b nsms ,index2(nft+1),intfric ,ipartfricsi,
903 c gapve ,ex ,ey ,ez ,fx ,
904 d fy ,fz ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,
906 e iam ,jam ,ibm ,jbm ,ias ,
907 f jas ,ibs ,jbs ,itab ,edge_id,
911 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
916 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
918 IF (debug(3)>=1) nb_impct = nb_impct + jlt
927 1 intfric ,jlt ,ipartfricsi ,ipartfricmi ,adparts_fric ,
928 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
929 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc ,
930 4 viscffric ,nty ,mfrot ,iorthfric ,ifric ,
931 5 jj , tint ,tempi ,npc ,tf ,
932 6 temp , h1 ,h2 ,h3 ,h4 ,
933 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
941 1 jlt ,a ,v ,ibc ,icodt ,
942 2 fsav ,gap ,fric ,ms ,visc ,
943 3 viscf ,noint ,itab ,cs_loc ,cm_loc ,
944 4 stiglo ,stifn ,stif ,fskyi ,isky ,
945 5 fcont ,dt2t ,ibm ,hs1 ,
946 6 hs2 ,hm1 ,hm2 ,ne1 ,ne2 ,
947 7 me1 ,me2 ,ivis2 ,neltst ,ityptst ,
948 8 nx ,ny ,nz ,gapve ,inacti ,
949 9 index2(nft+1),intbuf_tab%CAND_P,niskyfie ,newfront ,isecin ,
950 a nstrf ,secfcum ,viscn ,nedge ,ms1 ,
951 b ms2 ,mm1 ,mm2 ,vxs1 ,vys1 ,
952 c vzs1 ,vxs2 ,vys2 ,vzs2 ,vxm1 ,
953 d vym1 ,vzm1 ,vxm2 ,vym2 ,vzm2 ,
954 e nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBE,
956 f intbuf_tab%INFLG_SUBE ,fsavsub,mskyi_sms ,iskyi_sms ,nsms ,
957 g jtask ,isensint ,fsavparit(1,1,nft+1),nft,h3d_data ,
958 h ilev ,intbuf_tab%EBINFLG, edge_id,fricc,ifq ,
959 i intbuf_tab%FTSAVX_E,intbuf_tab%FTSAVY_E, intbuf_tab%FTSAVZ_E ,
960 . intbuf_tab%IFPEN_E ,
961 j tagncont ,kloadpinter ,loadpinter ,loadp_hyd_inter, intbuf_tab%TYPSUB,
962 k startt ,ninloadp,dgaploadint,s_loadpinter)
964 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
971 IF (sfsavparit /= 0)
THEN
973 . fbsav6, 12, 6, dimfb, isensint )
975 DEALLOCATE (fsavparit)
981 i_stok = intbuf_tab%I_STOK_E(2)
984 nb_loc = i_stok / nthread
985 IF (jtask==nthread)
THEN
986 i_stok_loc = i_stok-nb_loc*(nthread-1)
991 debut = (jtask-1)*nb_loc
994 DO i = debut+1, debut+i_stok_loc
998 eids = abs(intbuf_tab%cands_e2S(i))
999 if(eids > nedge)
then
1000 eids =
ledge_fie(nin)%P(e_global_id,eids-nedge)
1002 eids = intbuf_tab%ledge(nledge*(eids-1)+8)
1004 if(eids == d_es)
then
1005 IF(intbuf_tab%CANDS_E2S(i) < 0)
THEN
1006 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)
1014 IF(intbuf_tab%CANDS_E2S(i) < 0)
THEN
1018 intbuf_tab%CANDS_E2S(i) = -intbuf_tab%CANDS_E2S(i)
1020 intbuf_tab%CAND_PS(4*(i-1)+1:4*(i-1)+4) = zero
1028 IF(isensint(i)/=0)
THEN
1029 sfsavparit = sfsavparit + 1
1032 IF (sfsavparit /= 0)
THEN
1033 ALLOCATE(fsavparit(nisub+1,11,i_stok))
1037 fsavparit(h,i,j) = zero
1042 ALLOCATE(fsavparit(0,0,0))
1045 DO nft = 0 , i_stok - 1 , nvsiz
1046 jlt =
min( nvsiz, i_stok - nft )
1049 1 jlt,index2(nft+1),intbuf_tab%CANDM_E2S,intbuf_tab%CANDS_E2S,
1052 1 jlt ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,x ,v ,
1053 2 cs_loc ,cm_loc ,intbuf_tab%STFM ,ms ,ex ,
1054 3 ey ,ez ,fx ,fy ,fz ,
1055 4 stife ,xxs1 ,xxs2 ,xys1 ,xys2 ,
1056 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
1057 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
1058 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
1059 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
1060 9 ms1 ,ms2 ,mm1 ,mm2 ,ns1 ,
1061 a ns2 ,m1 ,m2 ,nedge ,nin ,
1062 c intbuf_tab%STFAC,nodnx_sms ,nsmse ,intbuf_tab%GAPE,gapve ,
1063 d iedge ,intbuf_tab%ADMSR,intbuf_tab%LBOUND,intbuf_tab%EDGE_BISECTOR,
1064 e intbuf_tab%VTX_BISECTOR ,typedgs ,ias ,jas ,ibs ,
1065 f jbs ,iam ,intbuf_tab%STFE,edge_id, itab,
1066 g intfric ,intbuf_tab%IPARTFRIC_E ,ipartfric_es ,ipartfric_em,
1067 h igsti ,kmin ,kmax ,intbuf_tab%E2S_NOD_NORMAL,nadmsr,
1068 i normaln1 ,normaln2 ,normalm1 ,normalm2 , istif_msdt,
1069 j dtstif ,intbuf_tab%STIFMSDT_EDG,intbuf_tab%STIFMSDT_M,nrtm,interfaces%PARAMETERS)
1072 1 jlt ,cs_loc,cm_loc ,hs1 ,hs2 ,
1073 2 hm1 ,hm2 ,nx ,ny ,nz ,
1074 3 stife ,ns1 ,ns2 ,m1 ,m2 ,
1075 4 jlt_new,xxs1 ,xxs2 ,xys1 ,xys2 ,
1076 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
1077 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
1078 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
1079 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
1080 9 ms1 ,ms2 ,mm1 ,mm2 ,iedge ,
1081 b nsmse ,index2(nft+1),intfric ,ipartfric_es,
1083 c gapve ,ex ,ey ,ez ,fx ,
1084 d fy ,fz ,intbuf_tab%LEDGE,intbuf_tab%IRECTM,x ,
1085 e intbuf_tab%CAND_PS,typedgs ,ias ,jas ,ibs ,
1086 f jbs ,iam ,itab ,indx1,indx2,
1087 g cs_loc4,cm_loc4,edge_id, nedge, nin,
1088 h dgaploadpmax,normaln1,normaln2,normalm1,normalm2)
1090 assert(4*jlt>=jlt_new)
1094 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
1096 IF (debug(3)>=1) nb_impct = nb_impct + jlt
1101 IF(mfrot == 0 )
THEN
1105 1 intfric ,jlt ,ipartfric_es ,ipartfric_em ,adparts_fric ,
1106 2 nsetprts ,tabcoupleparts_fric,npartfric,tabparts_fric,tabcoef_fric ,
1107 3 fric ,viscf ,intbuf_tab%FRIC_P,fric_coefs , fricc_e ,
1108 4 viscffric_e ,nty ,mfrot ,iorthfric ,ifric ,
1109 5 jj , tint ,tempi ,npc ,tf ,
1110 6 temp , h1 ,h2 ,h3 ,h4 ,
1111 7 ix1 , ix2 ,ix3 ,ix4 ,iform )
1118 assert(jlt < 4*mvsiz)
1120 1 jlt ,a ,v ,ibc ,icodt ,
1121 2 fsav ,gap ,fric ,ms ,visc ,
1122 3 viscf ,noint ,itab ,cs_loc4 ,cm_loc4 ,
1123 4 stiglo ,stifn ,stife ,fskyi ,isky ,
1124 5 fcont ,dt2t ,nrtm,intbuf_tab%MSEGTYP24,hs1 ,
1125 6 hs2 ,hm1 ,hm2 ,ns1 ,ns2 ,
1126 7 m1 ,m2 ,ivis2 ,neltst ,ityptst ,
1127 8 nx ,ny ,nz ,gapve ,inacti ,
1128 9 index2(nft+1),intbuf_tab%CAND_PS,niskyfie ,newfront ,isecin ,
1129 a nstrf ,secfcum ,viscn ,nedge ,ms1 ,
1130 b ms2 ,mm1 ,mm2 ,vxs1 ,vys1 ,
1131 c vzs1 ,vxs2 ,vys2 ,vzs2 ,vxm1 ,
1132 d vym1 ,vzm1 ,vxm2 ,vym2 ,vzm2 ,
1133 e nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBE,intbuf_tab%ADDSUBM,
1134 f intbuf_tab%LISUBE ,intbuf_tab%LISUBM ,intbuf_tab%INFLG_SUBE ,intbuf_tab%INFLG_SUBM ,
1136 g mskyi_sms ,iskyi_sms ,nsmse ,jtask ,isensint ,
1137 h fsavparit(1,1,nft+1),nft ,h3d_data ,indx1 ,indx2 ,
1138 i ilev ,intbuf_tab%MBINFLG, edge_id,nedge_rem ,fricc_e ,
1139 j ifq ,intbuf_tab%FTSAVX_E2S,intbuf_tab%FTSAVY_E2S, intbuf_tab%FTSAVZ_E2S ,
1140 . intbuf_tab%IFPEN_E2S ,
1141 k tagncont ,kloadpinter ,loadpinter ,loadp_hyd_inter,intbuf_tab%TYPSUB,
1142 o startt ,ninloadp,dgaploadint,s_loadpinter)
1144 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
1148 IF (sfsavparit /= 0)
THEN
1150 . fbsav6, 12, 6, dimfb, isensint )
1152 DEALLOCATE (fsavparit)