OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i20mainf.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "param_c.inc"
#include "warn_c.inc"
#include "task_c.inc"
#include "parit_c.inc"
#include "timeri_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine i20mainf (output, timers, ipari, x, a, icodt, fsav, v, ms, dt2t, neltst, ityptst, itab, stifn, fskyi, isky, fcont, nin, lindmax, kinet, jtask, nb_jlt, nb_jlt_new, nb_stok_n, niskyfi, newfront, nstrf, secfcum, icontact, viscn, num_imp, ns_imp, ne_imp, ind_imp, fsavsub, nrtmdim, fsavbag, eminx, ixs, ixs16, ixs20, fncont, ftcont, iad_elem, fr_elem, rcontact, acontact, pcontact, temp, fthe, ftheskyi, pm, iparg, iad17, weight, niskyfie, irlen20, islen20, irlen20t, islen20t, irlen20e, islen20e, mskyi_sms, iskyi_sms, nodnx_sms, npc, tf, intbuf_tab, fbsav6, isensint, dimfb, h3d_data, theaccfact)

Function/Subroutine Documentation

◆ i20mainf()

subroutine i20mainf ( type(output_), intent(inout) output,
type(timer_) timers,
integer, dimension(npari) ipari,
x,
a,
integer, dimension(*) icodt,
fsav,
v,
ms,
dt2t,
integer neltst,
integer ityptst,
integer, dimension(*) itab,
stifn,
fskyi,
integer, dimension(*) isky,
fcont,
integer nin,
integer lindmax,
integer, dimension(*) kinet,
integer jtask,
integer nb_jlt,
integer nb_jlt_new,
integer nb_stok_n,
integer niskyfi,
integer newfront,
integer, dimension(*) nstrf,
secfcum,
integer, dimension(*) icontact,
viscn,
integer num_imp,
integer, dimension(*) ns_imp,
integer, dimension(*) ne_imp,
integer, dimension(*) ind_imp,
fsavsub,
integer nrtmdim,
fsavbag,
eminx,
integer, dimension(*) ixs,
integer, dimension(*) ixs16,
integer, dimension(*) ixs20,
fncont,
ftcont,
integer, dimension(2,*) iad_elem,
integer, dimension(*) fr_elem,
rcontact,
acontact,
pcontact,
temp,
fthe,
ftheskyi,
pm,
integer, dimension(nparg,*) iparg,
integer iad17,
integer, dimension(*) weight,
integer niskyfie,
integer irlen20,
integer islen20,
integer irlen20t,
integer islen20t,
integer irlen20e,
integer islen20e,
mskyi_sms,
integer, dimension(*) iskyi_sms,
integer, dimension(*) nodnx_sms,
integer, dimension(*) npc,
tf,
type(intbuf_struct_) intbuf_tab,
double precision, dimension(12,6,dimfb) fbsav6,
integer, dimension(*) isensint,
integer dimfb,
type(h3d_database) h3d_data,
intent(in) theaccfact )

Definition at line 63 of file i20mainf.F.

81C=======================================================================
82C-----------------------------------------------
83C M o d u l e s
84C-----------------------------------------------
85 USE output_mod
86 USE timer_mod
87 USE intbufdef_mod
88 USE h3d_mod
89 USE message_mod
90C-----------------------------------------------
91C I m p l i c i t T y p e s
92C-----------------------------------------------
93#include "implicit_f.inc"
94C-----------------------------------------------
95C G l o b a l P a r a m e t e r s
96C-----------------------------------------------
97#include "mvsiz_p.inc"
98C-----------------------------------------------
99C C o m m o n B l o c k s
100C-----------------------------------------------
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"
109C-----------------------------------------------
110C D u m m y A r g u m e n t s
111C-----------------------------------------------
112 type(output_), intent(inout) :: output
113 INTEGER NELTST,ITYPTST,NIN,NEWFRONT,NSTRF(*),
114 . NRTMDIM, IAD17, IRLEN20, ISLEN20, IRLEN20T, ISLEN20T,
115 . IRLEN20E, ISLEN20E, DIMFB
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(*),NE_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
126 my_real :: eminx(*)
127 my_real dt2t,
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_DATABASE) :: H3D_DATA
140C=======================================================================
141C ALLOCATABLE
142C=======================================================================
143C-----------------------------------------------
144C L o c a l V a r i a b l e s
145C-----------------------------------------------
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 . LENR, 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)
159C REAL
160 my_real
161 . startt, fric, gap, stopt,
162 . visc,viscf,stiglo,gapmin,
163 . kmin, kmax, gapmax,rstif,fheat,tint,frad,drad,
164 . xthe,fheatm,fheats
165C-----------------------------------------------
166C REAL
167 my_real
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)
182 my_real
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)
192 my_real
193 . rcurvi(mvsiz), anglmi(mvsiz), anglt, padm
194 my_real
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(MVSIZ), 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
206C
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)
223C adaptive meshing
224 iadm =ipari(44)
225
226 nradm=ipari(49)
227 padm =intbuf_tab%VARIABLES(24)
228 anglt=intbuf_tab%VARIABLES(25)
229C heat interface
230 intth = ipari(47)
231 iform = ipari(48)
232C
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
238C
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)
244C
245 gapmax=intbuf_tab%VARIABLES(16)
246 kmin =intbuf_tab%VARIABLES(17)
247 kmax =intbuf_tab%VARIABLES(18)
248C
249 rstif = intbuf_tab%VARIABLES(20)
250 fheat = intbuf_tab%VARIABLES(21)
251 tint = intbuf_tab%VARIABLES(22)
252 frad = zero
253 drad = zero
254C----deactive implicit part
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
265C----------------------------------------------------------------------
266C NODES/SURFACE
267C----------------------------------------------------------------------
268
269c----------------------------------------------------
270c calculation of nodal normals
271c quadratic curvature or igap/=0 for solids (gap=0)
272c----------------------------------------------------
273
274 IF(igap/=0)THEN
275 CALL my_barrier
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)
285C Normal supplementary communication on proc remote in SPMD
286C NSNR Size NSNR (NB NODES STEND remote) allowance allowance
287 ALLOCATE(intbuf_tab%SOLIDN_NORMAL_F (3,ipari(24)))
288C EDGE Party allowance on size n line (nb second remote lines)
289 ALLOCATE(intbuf_tab%SOLIDN_NORMAL_FE(3,2*ipari(57)))
290 CALL spmd_i20normf(
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
295C this is the barrier matching that of i20norm on task1
296 END IF
297 CALL my_barrier()
298 ENDIF
299c----------------------------------------------------
300c calculation of nodal normals
301c quadratic curvature or igap/=0 for solids (gap=0)
302c----------------------------------------------------
303 IF(icurv==3)THEN
304 CALL my_barrier()
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)
310cc CALL MY_BARRIER()
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
316C Traitement d'assemblage parith/on spmd a optimiser si besoin
317 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
318 IF(nspmd > 1)THEN
319 CALL spmd_i20curvsz(
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
324 CALL i20normcnt(
325 1 ipari(4),intbuf_tab%IRECTM,numnod ,itag ,lent ,
326 2 maxcc ,nln ,intbuf_tab%NLG)
327 ENDIF
328 CALL i20normp(
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
333cc ELSE
334cc CALL MY_BARRIER()
335C this is the barrier matching that of i20norm on task1
336 END IF
337 CALL my_barrier()
338 ENDIF
339c----------------------------------------------------
340c radius of curvature: calculation of nodal normals (normalized)
341C IADM!=0 + Icurv!=0 non available (starter error).
342c----------------------------------------------------
343 IF(iadm/=0)THEN
344 CALL my_barrier()
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
350 CALL i20normn(
351 . ipari(4),intbuf_tab%IRECTM,numnod,x ,intbuf_tab%NODNORM_NORMAL,
352 . ipari(6),intbuf_tab%MSR,nln,intbuf_tab%NLG)
353cc CALL MY_BARRIER()
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
359C Traitement d'assemblage parith/on spmd a optimiser si besoin
360 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
361 IF(nspmd > 1)THEN
362 CALL spmd_i20curvsz(
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
367 CALL i20normcnt(
368 1 ipari(4),intbuf_tab%IRECTM,numnod ,itag ,lent ,
369 2 maxcc ,nln ,intbuf_tab%NLG)
370
371 ENDIF
372 CALL i20normnp(
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
378cc ELSE
379cc CALL MY_BARRIER()
380C this is the barrier matching that of i7normn on task1
381 END IF
382 CALL my_barrier()
383
384 nmnft=1+(jtask-1)*ipari(6)/nthread
385 nmnlt=jtask*ipari(6)/nthread
386
387 CALL i20norme(
388 . nmnft,nmnlt,intbuf_tab%NODNORM_NORMAL,intbuf_tab%MSR,nln,intbuf_tab%NLG)
389 CALL my_barrier()
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 )
395 CALL my_barrier()
396 END IF
397C----------------------------------------------------
398C
399 i_stok = intbuf_tab%I_STOK(1)
400C static decoupage
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
410C
411C
412C recalculation of istok
413C
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
418C inbuf == cand_n
419 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
420 ENDIF
421 ENDDO
422c------------------------------------------------
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
427c------------------------------------------------
428C
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)')
440 CALL arret(2)
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)')
454 CALL arret(2)
455 ENDIF
456 ENDIF
457c
458 DO nft = 0 , i_stok - 1 , nvsiz
459c------------------------------------------------
460 jlt = min( nvsiz, i_stok - nft )
461C preparation CANDIDATES retenus
462 CALL i7cdcor3(
463 1 jlt,index2(nft+1),intbuf_tab%CAND_E,intbuf_tab%CAND_N,
464 2 cand_e_n,cand_n_n)
465C cand_n and cand_e replaced by cand_n_n and cand_e_n
466 CALL i20cor3(
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 )
481C
482 jlt_new = 0
483C
484 CALL i20dst3(
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 ,lc4 ,
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
510C
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
523C
524 CALL i20for3(output,
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 ,ny1 ,
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 )
557C
558 ENDIF
559 IF (imonm > 0 .AND. jtask == 1) CALL stoptime(timers,20)
560
561C
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
570C
571 ENDDO
572c
573 IF (sfsavparit /= 0)THEN
574 CALL sum_6_float_sens(fsavparit, nisub+1, 11, i_stok,1,i_stok,
575 . fbsav6, 12, 6, dimfb, isensint )
576 ENDIF
577 IF(ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
578C----------------------------------------------------------------------
579C 2- EDGES
580C----------------------------------------------------------------------
581 nlinsa =ipari(53)
582 IF(nlinsa /= 0)THEN
583 i_stok = intbuf_tab%I_STOK_E(1)
584C this part is performed in parallel after the calculation of element forces
585C static decoupage
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
594C recalculation of istok
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
599C inbuf == cand_S
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
607C
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)')
619 CALL arret(2)
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)')
633 CALL arret(2)
634 ENDIF
635 ENDIF
636C
637 DO nft = 0 , i_stok - 1 , nvsiz
638 jlt = min( nvsiz, i_stok - nft )
639C preparation CANDIDATES retenus
640 CALL i11cdcor3(
641 1 jlt,index2(nft+1),intbuf_tab%LCAND_N,intbuf_tab%LCAND_S,cm_loc,
642 2 cs_loc)
643 CALL i20cor3e(
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
657 CALL i20dst3e(
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
676 CALL i20for3e(
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
706 CALL sum_6_float_sens(fsavparit, nisub+1, 11, i_stok,1,i_stok,
707 . fbsav6, 12, 6, dimfb, isensint )
708 ENDIF
709 IF(ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
710 ENDIF
711
712C----------------------------------------------------------------------
713C 3- Forces between second node.and anchor node
714C----------------------------------------------------------------------
715 CALL my_barrier
716C----------------------------------------------------------------------
717C NODES second,main,edge
718C----------------------------------------------------------------------
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
723 CALL i20for3c(
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
732 CALL my_barrier
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
742 CALL my_barrier()
743 IF(jtask == 1)DEALLOCATE(intbuf_tab%NODNORM_NORMAL)
744 END IF
745 IF(iadm/=0)THEN
746 CALL my_barrier()
747 IF(jtask == 1)DEALLOCATE(intbuf_tab%MODRCURV,intbuf_tab%MODANGLM)
748 END IF
749C-----------
750 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine i11cdcor3(jlt, index, cand_m, cand_s, cand_m_n, cand_s_n)
Definition i11cdcor3.F:32
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)
Definition i20cor3.F:45
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)
Definition i20cor3.F:360
subroutine i20normp(nrtm, irect, numnod, x, nod_normal, nmn, msr, lent, maxcc, isdsiz, ircsiz, iad_elem, fr_elem, itag, nln, nlg)
Definition i20curv.F:475
subroutine i20norms(nrtm, irect, numnod, x, nod_normal, nmn, msr, nln, nlg, gap_sh, iad_elem, fr_elem, nsv, nsn)
Definition i20curv.F:31
subroutine i20normcnt(nrtm, irect, numnod, itag, lent, maxcc, nln, nlg)
Definition i20curv.F:769
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)
Definition i20for3.F:2414
subroutine i20for3c(nln, nlg, ms, dxanc, dvanc, stfa, weight, inacti, daanc6, stfac, penia, alphak, daanc, kmin)
Definition i20for3.F:2270
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)
Definition i20for3.F:73
subroutine i20norme(nmnft, nmnlt, nod_normal, msr, nln, nlg)
Definition i20rcurv.F:244
subroutine i20rcurv(nrtmft, nrtmlt, x, nod_normal, irect, rcurv, nradm, anglm, anglt, nln, nlg)
Definition i20rcurv.F:290
subroutine i20normnp(nrtm, irect, numnod, x, nod_normal, nmn, msr, lent, maxcc, isdsiz, ircsiz, iad_elem, fr_elem, itag, nln, nlg)
Definition i20rcurv.F:116
subroutine i20normn(nrtm, irect, numnod, x, nod_normal, nmn, msr, nln, nlg)
Definition i20rcurv.F:30
subroutine i7cdcor3(jlt, index, cand_e, cand_n, cand_e_n, cand_n_n)
Definition i7cdcor3.F:38
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)
Definition i7therm.F:44
#define min(a, b)
Definition macros.h:20
subroutine sum_6_float_sens(f, a, b, c, jft, jlt, f6, d, e, g, isensint)
Definition parit.F:540
subroutine spmd_exch_n(xnorm, iad_elem, fr_elem, lenr)
Definition spmd_exch_n.F:37
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)
Definition i20dst3.F:47
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)
Definition i20dst3.F:996
subroutine i20norm(nrtm, irect, numnod, x, solidn_normal, nmn, msr, nln, nlg, gap_sh)
Definition i20dst3.F:846
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)
Definition message.F:895
subroutine arret(nn)
Definition arret.F:86
subroutine my_barrier
Definition machine.F:31
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135