80
81
82
83
84 USE timer_mod
85 USE intbufdef_mod
88
89
90
91#include "implicit_f.inc"
92
93
94
95#include "mvsiz_p.inc"
96
97
98
99#include "com01_c.inc"
100#include "com04_c.inc"
101#include "com08_c.inc"
102#include "param_c.inc"
103#include "warn_c.inc"
104#include "task_c.inc"
105#include "parit_c.inc"
106#include "timeri_c.inc"
107
108
109
110 INTEGER NELTST,ITYPTST,NIN,NEWFRONT,NSTRF(*),
111 . NRTMDIM, IAD17, IRLEN20, ISLEN20, IRLEN20T, ISLEN20T,
112 . IRLEN20E, ISLEN20E, DIMFB
113 INTEGER IPARI(NPARI), ICODT(*),ICONTACT(*),
114 . ITAB(*), ISKY(*), KINET(*),
115 . WEIGHT(*),IPARG(NPARG,*)
116 INTEGER NB_JLT,NB_JLT_NEW,NB_STOK_N,JTASK,
117 . NISKYFI, LINDMAX, NISKYFIE
118 INTEGER ,NS_IMP(*),NE_IMP(*),IND_IMP(*)
119 INTEGER IXS(*) ,IXS16(*) ,IXS20(*)
120 INTEGER IAD_ELEM(2,*),FR_ELEM(*),
121 . ISKYI_SMS(*), NODNX_SMS(*),NPC(*), ISENSINT(*)
122 my_real,
intent(in) :: theaccfact
125 . x(*), a(3,*), fsav(*), v(3,*),fsavbag(*),
126 . ms(*),stifn(*),fskyi(lskyi,4),fcont(3,*),
127 . secfcum(7,numnod,nsect),viscn(*), fsavsub(*),
128 . fncont(3,*), ftcont(3,*), rcontact(*), acontact(*),
129 . pcontact(*),
130 . temp(*),fthe(*),ftheskyi(lskyi),pm(npropm,*),
131 . mskyi_sms(*),tf(*)
132
133 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
134 TYPE(TIMER_) :: TIMERS
135 TYPE(INTBUF_STRUCT_) INTBUF_TAB
136 TYPE(H3D_DATABASE) :: H3D_DATA
137
138
139
140
141
142
143 INTEGER I, I_STOK, JLT_NEW, JLT , NFT, IVIS2,
144 . IBC, NOINT, NSEG, ISECIN, IBAG, IADM,
145 . IGAP, INACTI, IFQ, MFROT, IGSTI, NISUB,
146 . NB_LOC, I_STOK_LOC,DEBUT,JD42B,
147 . ILAGM, LENR, LENT, MAXCC,INTTH,IFORM,JD22B,JD22C,
148 . NLN, NRTMFT, NRTMLT, NMNFT, NMNLT, NRADM,
149 . NLNFT1, NLNLT, NLNL, IFUNCTK, SFSAVPARIT, J, H, IERROR
150 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
151 . NSVG(MVSIZ), CN_LOC(MVSIZ),CE_LOC(MVSIZ),
152 . CAND_N_N(MVSIZ),CAND_E_N(MVSIZ),KINI(MVSIZ),
153 . INDEX2(LINDMAX),
154 . ISDSIZ(NSPMD+1),IRCSIZ(NSPMD+1),ITAG(NUMNOD),
155 . IELECI(MVSIZ)
156
158 . startt, fric, gap, stopt,
159 . visc,viscf,stiglo,gapmin,
160 . kmin, kmax, gapmax,rstif,fheat,tint,rhoh,frad,drad,
161 . xthe,fheatm,fheats
162
163
165 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
166 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
167 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
168 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
169 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
170 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz),
171 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
172 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
173 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
174 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
175 . pene(mvsiz),
176 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
177 . gapv(mvsiz),vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
178 . gapr(mvsiz),tempi(mvsiz),phi(mvsiz),areasi(mvsiz)
180 . nx
181 . hs1(mvsiz), hs2(mvsiz), hm1(mvsiz), hm2(mvsiz),
182 . xxs1(mvsiz), xxs2(mvsiz), xys1(mvsiz), xys2(mvsiz),
183 . xzs1(mvsiz), xzs2(mvsiz), xxm1(mvsiz), xxm2(mvsiz),
184 . xym1(mvsiz), xym2(mvsiz), xzm1(mvsiz), xzm2(mvsiz),
185 . vxs1(mvsiz), vxs2(mvsiz), vys1(mvsiz), vys2(mvsiz),
186 . vzs1(mvsiz), vzs2(mvsiz), vxm1(mvsiz), vxm2(mvsiz),
187 . vym1(mvsiz), vym2(mvsiz), vzm1(mvsiz), vzm2(mvsiz),
188 . ms1(mvsiz), ms2(mvsiz), mm1(mvsiz), mm2(mvsiz)
190 . surf(3,nrtmdim), pres(nrtmdim)
192 . rcurvi(mvsiz), anglmi(mvsiz), anglt, padm
194 . nnx1(mvsiz), nnx2(mvsiz), nnx3(mvsiz), nnx4(mvsiz),
195 . nny1(mvsiz), nny2(mvsiz), nny3(mvsiz), nny4(mvsiz),
196 . nnz1(mvsiz), nnz2(mvsiz), nnz3(mvsiz), nnz4(mvsiz),
197 . cmaj(mvsiz), penrad(mvsiz),condint(mvsiz),fni(mvsiz),
198 . phi1(mvsiz),phi2(mvsiz),phi3(mvsiz),phi4(mvsiz),efrict(mvsiz)
199 INTEGER N1(MVSIZ), N2(MVSIZ), M1(MVSIZ), M2(MVSIZ),
200 . NL1(MVSIZ), NL2(MVSIZ),ML1(MVSIZ), ML2(MVSIZ),
201 . CS_LOC(MVSIZ), CM_LOC(MVSIZ), NSMS(MVSIZ)
202 INTEGER ICURV,IMPL_S0
203 my_real,
DIMENSION(:,:,:),
ALLOCATABLE :: fsavparit
204 INTEGER NSN, NTY, NLINSA
205
206 nsn =ipari(5)
207 nty =ipari(7)
208 ibc =ipari(11)
209 ivis2 =ipari(14)
210 IF(ipari(33) == 1) RETURN
211 noint =ipari(15)
212 igap =ipari(21)
213 inacti=ipari(22)
214 isecin=ipari(28)
215 mfrot =ipari(30)
216 ifq =ipari(31)
217 ibag =ipari(32)
218 igsti=ipari(34)
219 nln =ipari(35)
220 nisub =ipari(36)
221 icurv =ipari(39)
222
223 iadm =ipari(44)
224
225 nradm=ipari(49)
226 padm =intbuf_tab%VARIABLES(24)
227 anglt=intbuf_tab%VARIABLES(25)
228
229 intth = ipari(47)
230 iform = ipari(48)
231
232 stiglo=-intbuf_tab%STFAC(1)
233 startt=intbuf_tab%VARIABLES(3)
234 stopt =intbuf_tab%VARIABLES(11)
235 IF(startt > tt) RETURN
236 IF(tt > stopt) RETURN
237
238 fric =intbuf_tab%VARIABLES(1)
239 gap =intbuf_tab%VARIABLES(2)
240 gapmin=intbuf_tab%VARIABLES(13)
241 visc =intbuf_tab%VARIABLES(14)
242 viscf =intbuf_tab%VARIABLES(15)
243
244 gapmax=intbuf_tab%VARIABLES(16)
245 kmin =intbuf_tab%VARIABLES(17)
246 kmax =intbuf_tab%VARIABLES(18)
247
248 rstif = intbuf_tab%VARIABLES(20)
249 fheat = intbuf_tab%VARIABLES(21)
250 tint = intbuf_tab%VARIABLES(22)
251 frad = zero
252 drad = zero
253
254 impl_s0 =0
255 IF (impl_s0 == 1) THEN
256 num_imp = 0
257 visc =zero
258 viscf =zero
259 ENDIF
260 ifunctk = 0
261 xthe = zero
262 fheatm = zero
263 fheats = zero
264
265
266
267
268
269
270
271
272
273 IF(igap/=0)THEN
275 IF(jtask==1)THEN
276 ALLOCATE(intbuf_tab%SOLIDN_NORMAL (3,numnod))
277 CALL i20norms(ipari(4),intbuf_tab%IRECTM,numnod,x,intbuf_tab%SOLIDN_NORMAL,
278 2 ipari(6),intbuf_tab%MSR,nln,intbuf_tab%NLG,intbuf_tab%GAP_SH,
279 3 iad_elem,fr_elem,intbuf_tab%NSV,nsn)
280
281 IF(nspmd > 1)THEN
282 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
283 CALL spmd_i20exch_n(intbuf_tab%SOLIDN_NORMAL,iad_elem,fr_elem,lenr)
284
285
286 ALLOCATE(intbuf_tab%SOLIDN_NORMAL_F (3,ipari(24)))
287
288 ALLOCATE(intbuf_tab%SOLIDN_NORMAL_FE(3,2*ipari(57
290 1 intbuf_tab%SOLIDN_NORMAL,intbuf_tab%SOLIDN_NORMAL_F,intbuf_tab%SOLIDN_NORMAL_FE,nin ,irlen20 ,
291 2 islen20 ,irlen20t ,islen20t ,irlen20e,islen20e,
292 3 intbuf_tab%NSV,intbuf_tab%NLG ,intbuf_tab%IXLINS )
293 END IF
294
295 END IF
297 ENDIF
298
299
300
301
302 IF(icurv==3)THEN
304 IF(jtask==1)THEN
305 ALLOCATE(intbuf_tab%NODNORM_NORMAL (3,numnod))
306 IF(iparit==0)THEN
307 CALL i20norm(ipari(4),intbuf_tab%IRECTM,numnod,x,intbuf_tab%NODNORM_NORMAL,
308 . ipari(6),intbuf_tab%MSR,nln,intbuf_tab%NLG)
309
310 IF(nspmd>1)THEN
311 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
312 CALL spmd_exch_n(intbuf_tab%NODNORM_NORMAL,iad_elem,fr_elem,lenr)
313 END IF
314 ELSE
315
316 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
317 IF(nspmd > 1)THEN
319 1 ipari(4),intbuf_tab%IRECTM,numnod,iad_elem,fr_elem,
320 2 isdsiz ,ircsiz ,itag ,lenr ,lent ,
321 3 maxcc ,nln ,intbuf_tab%NLG)
322 ELSE
324 1 ipari(4),intbuf_tab%IRECTM,numnod ,itag ,lent ,
325 2 maxcc ,nln ,intbuf_tab%NLG)
326 ENDIF
328 1 ipari(4),intbuf_tab%IRECTM,numnod ,x ,intbuf_tab%NODNORM_NORMAL,
329 2 ipari(6),intbuf_tab%MSR,lent ,maxcc,isdsiz ,
330 3 ircsiz ,iad_elem ,fr_elem,itag ,nln,intbuf_tab%NLG)
331 END IF
332
333
334
335 END IF
337 ENDIF
338
339
340
341
342 IF(iadm/=0)THEN
344 IF(jtask==1)THEN
345 ALLOCATE(intbuf_tab%MODRCURV(nrtmdim),intbuf_tab%MODANGLM(nrtmdim))
346 ALLOCATE(intbuf_tab%NODNORM_NORMAL (3,numnod))
347
348 IF(iparit==0)THEN
350 . ipari(4),intbuf_tab%IRECTM,numnod,x ,intbuf_tab%NODNORM_NORMAL,
351 . ipari(6),intbuf_tab%MSR,nln,intbuf_tab%NLG)
352
353 IF(nspmd>1)THEN
354 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
355 CALL spmd_exch_n(intbuf_tab%NODNORM_NORMAL,iad_elem,fr_elem,lenr)
356 END IF
357 ELSE
358
359 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
360 IF(nspmd > 1)THEN
362 1 ipari(4),intbuf_tab%IRECTM,numnod,iad_elem,fr_elem,
363 2 isdsiz ,ircsiz ,itag ,lenr ,lent ,
364 3 maxcc ,nln ,intbuf_tab%NLG)
365 ELSE
367 1 ipari(4),intbuf_tab%IRECTM,numnod ,itag ,lent ,
368 2 maxcc ,nln ,intbuf_tab%NLG)
369
370 ENDIF
372 1 ipari(4),intbuf_tab%IRECTM,numnod ,x ,intbuf_tab%NODNORM_NORMAL,
373 2 ipari(6),intbuf_tab%MSR,lent ,maxcc,isdsiz ,
374 3 ircsiz ,iad_elem ,fr_elem,itag ,nln,intbuf_tab%NLG)
375
376 END IF
377
378
379
380 END IF
382
383 nmnft=1+(jtask-1)*ipari(6)/nthread
384 nmnlt=jtask*ipari(6)/nthread
385
387 . nmnft,nmnlt,intbuf_tab%NODNORM_NORMAL,intbuf_tab%MSR,nln,intbuf_tab%NLG)
389
390 nrtmft=1+(jtask-1)*ipari(4)/nthread
391 nrtmlt=jtask*ipari(4)/nthread
392 CALL i20rcurv(nrtmft, nrtmlt ,x ,intbuf_tab%NODNORM_NORMAL ,intbuf_tab%IRECTM ,
393 . intbuf_tab%MODRCURV , nradm ,intbuf_tab%MODANGLM ,anglt,nln,intbuf_tab%NLG )
395 END IF
396
397
398 i_stok = intbuf_tab%I_STOK(1)
399
400 nb_loc = i_stok / nthread
401 IF (jtask==nthread) THEN
402 i_stok_loc = i_stok-nb_loc*(nthread-1)
403 ELSE
404 i_stok_loc = nb_loc
405 ENDIF
406 debut = (jtask-1)*nb_loc
407
408 i_stok = 0
409
410
411
412
413 DO i = debut+1, debut+i_stok_loc
414 IF(intbuf_tab%CAND_N(i) < 0) THEN
415 i_stok = i_stok + 1
416 index2(i_stok) = i
417
418 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
419 ENDIF
420 ENDDO
421
422 IF (debug(3)>=1) THEN
423 nb_jlt = nb_jlt + i_stok_loc
424 nb_stok_n = nb_stok_n + i_stok
425 ENDIF
426
427
428 sfsavparit = 0
429 DO i=1,nisub+1
430 IF(isensint(i)/=0) THEN
431 sfsavparit = sfsavparit + 1
432 ENDIF
433 ENDDO
434 IF (sfsavparit /= 0) THEN
435 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
436 IF(ierror/=0) THEN
437 CALL ancmsg(msgid=19,anmode=aninfo,
438 . c1='(/INTER/TYPE20)')
440 ENDIF
441 DO j=1,i_stok
442 DO i=1,11
443 DO h=1,nisub+1
444 fsavparit(h,i,j) = zero
445 ENDDO
446 ENDDO
447 ENDDO
448 ELSE
449 ALLOCATE(fsavparit(0,0,0),stat=ierror)
450 IF(ierror/=0) THEN
451 CALL ancmsg(msgid=19,anmode=aninfo,
452 . c1='(/INTER/TYPE20)')
454 ENDIF
455 ENDIF
456
457 DO nft = 0 , i_stok - 1 , nvsiz
458
459 jlt =
min( nvsiz, i_stok - nft )
460
462 1 jlt,index2(nft+1),intbuf_tab%CAND_E,intbuf_tab%CAND_N,
463 2 cand_e_n,cand_n_n)
464
466 1 jlt ,intbuf_tab%XA,intbuf_tab%IRECTM,intbuf_tab%NSV,cand_e_n,
467 2 cand_n_n ,intbuf_tab%STFM,intbuf_tab%STFA,x1 ,x2 ,
468 3 x3 ,x4 ,y1 ,y2 ,y3 ,
469 4 y4 ,z1 ,z2 ,z3 ,z4 ,
470 5 xi ,yi ,zi ,stif ,ix1 ,
471 6 ix2 ,ix3 ,ix4 ,nsvg ,igap ,
472 7 gap ,intbuf_tab%GAP_S,intbuf_tab%GAP_M,gapv ,gapr ,
473 8 ms ,vxi ,vyi ,nln ,intbuf_tab%NLG,
474 9 vzi ,msi ,nsn ,intbuf_tab%VA,kinet ,
475 a kini ,nty ,nin ,igsti ,kmin ,
476 b kmax ,gapmax ,gapmin ,iadm ,intbuf_tab%MODRCURV ,
477 c rcurvi ,intbuf_tab%MODANGLM ,anglmi ,intth ,temp ,
478 d tempi ,phi ,intbuf_tab%AREAS,intbuf_tab%IELEC,areasi ,
479 e ieleci ,intbuf_tab%GAP_SH,intbuf_tab%STFAC,nodnx_sms,nsms )
480
481 jlt_new = 0
482
484 1 jlt ,cand_n_n ,cand_e_n ,cn_loc
485 2 x1 ,x2 ,x3 ,x4 ,y1 ,
486 3 y2 ,y3 ,y4 ,z1 ,z2 ,
487 4 z3 ,z4 ,xi ,yi ,zi ,
488 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
489 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
490 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
491 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
492 9 p1 ,p2 ,p3 ,p4 ,ix1 ,
493 a ix2 ,ix3 ,ix4 ,nsvg ,stif ,
494 b jlt_new ,gapv ,inacti ,intbuf_tab%SOLIDN_NORMAL,
495 c index2(nft+1),vxi ,vyi ,gapr ,intbuf_tab%GAP_SH,
496 d vzi ,msi ,kini ,icurv ,intbuf_tab%IRECTM,
497 e nnx1 ,nnx2 ,nnx3 ,nnx4 ,nny1 ,
498 f nny2 ,nny3 ,nny4 ,nnz1 ,nnz2 ,
499 g nnz3 ,nnz4 ,intbuf_tab%NODNORM_NORMAL ,iadm ,rcurvi ,
500 h anglmi ,intth ,tempi ,phi ,areasi ,
501 i ieleci ,nln ,intbuf_tab%NLG,igap ,gapmax ,
502 j intbuf_tab%SOLIDN_NORMAL_F ,nsms ,intbuf_tab%NBINFLG,intbuf_tab%GAP_M,
503 k cmaj)
504 jlt = jlt_new
505 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
506 IF(jlt_new/=0) THEN
507 ipari(29) = 1
508 IF (debug(3)>=1)nb_jlt_new = nb_jlt_new + jlt_new
509
510 IF( intth > 0 ) THEN
511 CALL i7therm(jlt ,iparg ,pm ,ixs ,iform ,x ,
512 1 xi ,yi ,zi ,x1 ,y1 ,z1 ,
513 2 x2 ,y2 ,z2 ,x3 ,y3 ,z3 ,
514 3 x4 ,y4 ,z4 ,ix1 ,ix2 ,ix3 ,
515 4 ix4 ,rstif ,tempi, intbuf_tab%IELEC,
516 5 phi ,tint ,areasi, ieleci,frad,drad ,
517 6 gapv ,fni ,ifunctk,xthe,npc ,tf ,
518 7 condint,phi1,phi2 ,phi3 ,phi4 ,fheats,
519 7 fheatm,efrict,temp ,h1 ,h2 ,h3 ,
520 8 h4,theaccfact)
521 ENDIF
522
524 1 jlt ,a ,intbuf_tab%VA,ibc ,icodt ,
525 2 fsav ,gap ,fric ,ms ,visc ,
526 3 viscf ,noint ,intbuf_tab%STFA,itab ,cn_loc ,
527 4 stiglo ,stifn ,stif ,fskyi ,isky ,
528 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
529 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
530 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
531 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
532 9 p1 ,p2 ,p3 ,p4 ,fcont ,
533 b ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
534 c ivis2 ,neltst ,ityptst ,dt2t ,
535 d gapv ,inacti ,index2(nft+1),niskyfi ,
536 e kinet ,newfront ,isecin ,nstrf ,secfcum ,
537 f x ,intbuf_tab%XA,ce_loc ,mfrot ,ifq ,
538 g intbuf_tab%FRIC_P,intbuf_tab%CAND_FX,intbuf_tab%CAND_FY,intbuf_tab%CAND_FZ,
539 + intbuf_tab%XFILTR,
540 h intbuf_tab%IFPEN,gapr,intbuf_tab%AVX_ANCR ,nln ,intbuf_tab%NLG,
541 i ibag ,icontact ,intbuf_tab%NSV,intbuf_tab%PENIS,
542 + intbuf_tab%PENIM,
543 j viscn ,vxi ,vyi ,vzi ,msi ,
544 k kini ,nin ,nisub ,intbuf_tab%LISUB,intbuf_tab%ADDSUBS,
545 l intbuf_tab%ADDSUBM,intbuf_tab%LISUBS,intbuf_tab%LISUBM,fsavsub,intbuf_tab%CAND_N,
546 m ipari(33) ,ipari(39) ,intbuf_tab%NODNORM_NORMAL ,fncont ,ftcont ,
547 n x1 ,x2 ,x3 ,x4 ,y1 ,
548 o y2 ,y3 ,y4 ,z1 ,z2 ,
549 p z3 ,z4 ,xi ,yi ,zi ,
550 q iadm ,rcurvi ,rcontact ,acontact ,pcontact ,
551 r anglmi ,padm ,intth , phi , fthe ,
552 s ftheskyi ,intbuf_tab%DAANC6,temp ,tempi ,rstif ,
553 t iform ,intbuf_tab%GAP_S,igap ,intbuf_tab%ALPHAK,mskyi_sms,
554 u iskyi_sms ,nsms ,cmaj ,jtask ,isensint ,
555 v fsavparit ,nft ,h3d_data )
556
557 ENDIF
558 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
559
560
561 IF(impl_s0 == 1) THEN
562 DO i = 1 ,jlt_new
563 ns_imp(i+num_imp)=cn_loc(i)
564 ne_imp(i+num_imp)=ce_loc(i)
565 ind_imp(i+num_imp)=index2(i+nft)
566 ENDDO
567 num_imp=num_imp+jlt_new
568 ENDIF
569
570 ENDDO
571
572 IF (sfsavparit /= 0)THEN
574 . fbsav6, 12, 6, dimfb, isensint )
575 ENDIF
576 IF(ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
577
578
579
580 nlinsa =ipari(53)
581 IF(nlinsa /= 0)THEN
582 i_stok = intbuf_tab%I_STOK_E(1)
583
584
585 nb_loc = i_stok / nthread
586 IF (jtask==nthread) THEN
587 i_stok_loc = i_stok-nb_loc*(nthread-1)
588 ELSE
589 i_stok_loc = nb_loc
590 ENDIF
591 debut = (jtask-1)*nb_loc
592 i_stok = 0
593
594 DO i = debut+1, debut+i_stok_loc
595 IF(intbuf_tab%LCAND_S(i) < 0) THEN
596 i_stok = i_stok + 1
597 index2(i_stok) = i
598
599 intbuf_tab%LCAND_S(i) = -intbuf_tab%LCAND_S(i)
600 ENDIF
601 ENDDO
602 IF (debug(3)>=1) THEN
603 nb_jlt = nb_jlt + i_stok_loc
604 nb_stok_n = nb_stok_n + i_stok
605 ENDIF
606
607 sfsavparit = 0
608 DO i=1,nisub+1
609 IF(isensint(i)/=0) THEN
610 sfsavparit = sfsavparit + 1
611 ENDIF
612 ENDDO
613 IF (sfsavparit /= 0) THEN
614 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
615 IF(ierror/=0) THEN
616 CALL ancmsg(msgid=19,anmode=aninfo,
617 . c1='(/INTER/TYPE20)')
619 ENDIF
620 DO j=1,i_stok
621 DO i=1,11
622 DO h=1,nisub+1
623 fsavparit(h,i,j) = zero
624 ENDDO
625 ENDDO
626 ENDDO
627 ELSE
628 ALLOCATE(fsavparit(0,0,0),stat=ierror)
629 IF(ierror/=0) THEN
630 CALL ancmsg(msgid=19,anmode=aninfo,
631 . c1='(/INTER/TYPE20)')
633 ENDIF
634 ENDIF
635
636 DO nft = 0 , i_stok - 1 , nvsiz
637 jlt =
min( nvsiz, i_stok - nft )
638
640 1 jlt,index2(nft+1),intbuf_tab%LCAND_N,intbuf_tab%LCAND_S,cm_loc,
641 2 cs_loc)
643 1 jlt ,intbuf_tab%IXLINS,intbuf_tab%IXLINM,intbuf_tab%XA,intbuf_tab%VA,
644 2 cs_loc ,cm_loc ,intbuf_tab%STFS,intbuf_tab%STF,gapmin ,
645 3 intbuf_tab%GAP_SE,intbuf_tab%GAP_ME,igap ,gapv ,ms ,
646 4 stif ,xxs1 ,xxs2 ,xys1 ,xys2 ,
647 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
648 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
649 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
650 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
651 9 ms1 ,ms2 ,mm1 ,mm2 ,n1 ,
652 a n2 ,m1 ,m2 ,nlinsa ,nin ,
653 b nl1 ,nl2 ,ml1 ,ml2 ,intbuf_tab%NLG,
654 c intbuf_tab%STFAC,nodnx_sms ,nsms )
655
657 1 jlt ,cs_loc,cm_loc ,hs1 ,hs2 ,
658 2 hm1 ,hm2 ,nx ,ny ,nz ,
659 3 stif ,n1 ,n2 ,m1 ,m2 ,
660 4 jlt_new,xxs1 ,xxs2 ,xys1 ,xys2 ,
661 5 xzs1 ,xzs2 ,xxm1 ,xxm2 ,xym1 ,
662 6 xym2 ,xzm1 ,xzm2 ,vxs1 ,vxs2 ,
663 7 vys1 ,vys2 ,vzs1 ,vzs2 ,vxm1 ,
664 8 vxm2 ,vym1 ,vym2 ,vzm1 ,vzm2 ,
665 9 ms1 ,ms2 ,mm1 ,mm2 ,gapv ,
666 a nl1 ,nl2 ,ml1 ,ml2 ,igap ,
667 b intbuf_tab%SOLIDN_NORMAL,intbuf_tab%GAP_SE,intbuf_tab%GAP_ME,nlinsa,
668 c intbuf_tab%SOLIDN_NORMAL_FE,nsms)
669 jlt = jlt_new
670 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
671 IF(jlt_new/=0) THEN
672 ipari(29) = 1
673 IF (debug(3)>=1)
674 . nb_jlt_new = nb_jlt_new + jlt_new
676 1 jlt ,a ,v ,ibc ,icodt ,
677 2 fsav ,gap ,fric ,ms ,visc ,
678 3 viscf ,noint ,itab ,cs_loc ,cm_loc ,
679 4 stiglo ,stifn ,stif ,fskyi ,isky ,
680 5 fcont ,intbuf_tab%STFS,intbuf_tab%STF,dt2t ,hs1 ,
681 6 hs2 ,hm1 ,hm2 ,n1 ,n2 ,
682 7 m1 ,m2 ,ivis2 ,neltst ,ityptst ,
683 8 nx ,ny ,nz ,gapv ,intbuf_tab%PENISE,
684 9 intbuf_tab%PENIME,ipari(22) ,niskyfie ,newfront ,isecin ,
685 a nstrf ,secfcum ,viscn ,nlinsa ,ms1 ,
686 b ms2 ,mm1 ,mm2 ,vxs1 ,vys1 ,
687 c vzs1 ,vxs2 ,vys2 ,vzs2 ,vxm1 ,
688 d vym1 ,vzm1 ,vxm2 ,vym2 ,vzm2 ,
689 e nin ,nl1 ,nl2 ,ml1 ,ml2 ,
690 f intbuf_tab%DAANC6,intbuf_tab%ALPHAK,mskyi_sms ,iskyi_sms ,nsms,
691 g jtask ,isensint ,fsavparit ,nisub ,nft ,
692 h h3d_data )
693
694 ENDIF
695 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
696 IF(impl_s0==1) THEN
697 DO i = 1 ,jlt_new
698 ns_imp(i+num_imp)=cs_loc(i)
699 ne_imp(i+num_imp)=cm_loc(i)
700 ENDDO
701 num_imp=num_imp+jlt_new
702 ENDIF
703 ENDDO
704 IF (sfsavparit /= 0)THEN
706 . fbsav6, 12, 6, dimfb, isensint )
707 ENDIF
708 IF(ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
709 ENDIF
710
711
712
713
715
716
717
718 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
719 nlnft1= (jtask-1)*nln/nthread
720 nlnlt = jtask*nln/nthread
721 nlnl = nlnlt - nlnft1
723 1 nlnl ,intbuf_tab%NLG(1+nlnft1),ms ,intbuf_tab%AVX_ANCR(1+3*nlnft1),
724 2 intbuf_tab%AVX_ANCR(1+3*nln+3*nlnft1),intbuf_tab%STFA(1+nlnft1),weight,inacti,
725 3 intbuf_tab%DAANC6(1+18*2*nlnft1),intbuf_tab%STFAC(1),
726 3 intbuf_tab%PENIA(1+5*nlnft1),intbuf_tab%ALPHAK(1+3*nlnft1),
727 4 intbuf_tab%AVX_ANCR(1+6*nln+3*nlnft1),kmin)
728
729 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
730 IF(igap/=0)THEN
732 IF(jtask == 1) THEN
733 DEALLOCATE(intbuf_tab%SOLIDN_NORMAL)
734 IF(nspmd > 1) THEN
735 DEALLOCATE(intbuf_tab%SOLIDN_NORMAL_F)
736 DEALLOCATE(intbuf_tab%SOLIDN_NORMAL_FE)
737 END IF
738 END IF
739 END IF
740 IF(icurv==3.OR.iadm/=0)THEN
742 IF(jtask == 1)DEALLOCATE(intbuf_tab%NODNORM_NORMAL)
743 END IF
744 IF(iadm/=0)THEN
746 IF(jtask == 1)DEALLOCATE(intbuf_tab%MODRCURV,intbuf_tab%MODANGLM)
747 END IF
748
749 RETURN
subroutine i11cdcor3(jlt, index, cand_m, cand_s, cand_m_n, cand_s_n)
subroutine i20cor3(jlt, xa, irect, nsv, cand_e, cand_n, stf, stfa, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, stif, ix1, ix2, ix3, ix4, nsvg, igap, gap, gap_s, gap_m, gapv, gapr, ms, vxi, vyi, nln, nlg, vzi, msi, nsn, va, kinet, kini, ity, nin, igsti, kmin, kmax, gapmax, gapmin, iadm, rcurv, rcurvi, anglm, anglmi, intth, temp, tempi, phi, areas, ielec, areasi, ieleci, gap_sh, stfac, nodnx_sms, nsms)
subroutine i20cor3e(jlt, ixlins, ixlinm, xa, va, cand_s, cand_m, stfs, stfm, gapmin, gap_s, gap_m, igap, gapv, ms, stif, xxs1, xxs2, xys1, xys2, xzs1, xzs2, xxm1, xxm2, xym1, xym2, xzm1, xzm2, vxs1, vxs2, vys1, vys2, vzs1, vzs2, vxm1, vxm2, vym1, vym2, vzm1, vzm2, ms1, ms2, mm1, mm2, n1, n2, m1, m2, nrts, nin, nl1, nl2, ml1, ml2, nlg, stfac, nodnx_sms, nsms)
subroutine i20normp(nrtm, irect, numnod, x, nod_normal, nmn, msr, lent, maxcc, isdsiz, ircsiz, iad_elem, fr_elem, itag, nln, nlg)
subroutine i20norms(nrtm, irect, numnod, x, nod_normal, nmn, msr, nln, nlg, gap_sh, iad_elem, fr_elem, nsv, nsn)
subroutine i20normcnt(nrtm, irect, numnod, itag, lent, maxcc, nln, nlg)
subroutine i20for3e(jlt, a, v, ibc, icodt, fsav, gap, fric, ms, visc, viscf, noint, itab, cs_loc, cm_loc, stiglo, stifn, stif, fskyi, isky, fcont, stfs, stfm, dt2t, hs1, hs2, hm1, hm2, n1, n2, m1, m2, ivis2, neltst, ityptst, nx, ny, nz, gapv, penise, penime, inacti, niskyfie, newfront, isecin, nstrf, secfcum, viscn, nlinsa, ms1, ms2, mm1, mm2, vxs1, vys1, vzs1, vxs2, vys2, vzs2, vxm1, vym1, vzm1, vxm2, vym2, vzm2, nin, n1l, n2l, m1l, m2l, daanc6, alphak, mskyi_sms, iskyi_sms, nsms, jtask, isensint, fsavparit, nisub, nft, h3d_data)
subroutine i20for3(jlt, a, va, ibcc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfa, 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, ix1l, ix2l, ix3l, ix4l, nsvg, ivis2, neltst, ityptst, dt2t, gapv, inacti, index, niskyfi, kinet, newfront, isecin, nstrf, secfcum, x, xa, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, alpha0, ifpen, gapr, dxanc, nln, nlg, ibag, icontact, nsv, penis, penim, 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, phi, fthe, ftheskyi, daanc6, temp, tempi, rstif, iform, gap_s, igap, alphak, mskyi_sms, iskyi_sms, nsms, cmaj, jtask, isensint, fsavparit, nft, h3d_data)
subroutine i20for3c(nln, nlg, ms, dxanc, dvanc, stfa, weight, inacti, daanc6, stfac, penia, alphak, daanc, kmin)
subroutine i20norme(nmnft, nmnlt, nod_normal, msr, nln, nlg)
subroutine i20rcurv(nrtmft, nrtmlt, x, nod_normal, irect, rcurv, nradm, anglm, anglt, nln, nlg)
subroutine i20normnp(nrtm, irect, numnod, x, nod_normal, nmn, msr, lent, maxcc, isdsiz, ircsiz, iad_elem, fr_elem, itag, nln, nlg)
subroutine i20normn(nrtm, irect, numnod, x, nod_normal, nmn, msr, nln, nlg)
subroutine i7cdcor3(jlt, index, cand_e, cand_n, cand_e_n, cand_n_n)
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 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_i20curvsz(nrtm, irect, numnod, iad_elem, fr_elem, isdsiz, ircsiz, itag, lenr, lent, maxcc, nln, nlg)
subroutine spmd_i20exch_n(xnorm, iad_elem, fr_elem, lenr)
subroutine spmd_i20normf(solidn_normal, solidn_normal_f, solidn_normal_fe, nin, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, nsv, nlg, islins)
subroutine i20dst3(igap, gap_sh, cand_e, cand_n, gapv, gap, gap_s, gap_m, gapmax, gapmin, irect, nln, nlg, solidn_normal, nsv, nbinflg, tag, 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)
subroutine i20dst3e(jlt, gap, cand_s, cand_m, irects, irectm, nx, ny, nz, n1, n2, m1, m2, jlt_new, x, igap, gap_s, gap_m, gapv2, nln, nlg, solidn_normal)
subroutine i20norm(nrtm, irect, numnod, x, solidn_normal, nmn, msr, nln, nlg, gap_sh)
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)