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