62
63
64
65
66
67
68
69
70
71
72 USE timer_mod
73 USE elbufdef_mod
75 USE intbufdef_mod
79
80
81
82#include "implicit_f.inc"
83
84
85
86#include "mvsiz_p.inc"
87
88
89
90#include "com01_c.inc"
91#include "com04_c.inc"
92#include "com08_c.inc"
93#include "param_c.inc"
94#include "warn_c.inc"
95#include "task_c.inc"
96#include "parit_c.inc"
97#include "timeri_c.inc"
98
99
100
101 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
102 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
103 INTEGER NELTST,ITYPTST,NIN,NEWFRONT,NSTRF(*),
104 . NRTMDIM, IAD17,NV46, ISENSINT(*), DIMFB
105 INTEGER IPARI(NPARI,NINTER), ICODT(*),ICONTACT(*),
106 . ITAB(*), ISKY(*), KINET(*),
107 . IPARG(NPARG,*)
108 INTEGER NB_JLT,NB_JLT_NEW,NB_STOK_N,JTASK,
109 . NISKYFI, LINDMAX
110 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),IND_IMP(*)
111 INTEGER IXS(*) ,IXS16(*) ,IXS20(*)
112 INTEGER IAD_ELEM(2,*),FR_ELEM(*),
113 . ISKYI_SMS(*), NODNX_SMS(*)
115 . eminx(*)
117 . x(*), a(3,*), fsav(*), v(3,*),fsavbag(*),
118 . ms(*),stifn(*),fskyi(lskyi,4),fcont(3,*),ms0(*),
119 . secfcum(7,numnod,nsect),viscn(*), fsavsub(*),
120 . fncont(3,*), ftcont(3,*), rcontact(*), acontact(*),
121 . pcontact(*),
122 . temp(*),fthe(*),ftheskyi(lskyi),pm(npropm,*),
123 . mskyi_sms(*)
124
125 DOUBLE PRECISION (12,6,DIMFB)
126
127 TYPE(INTBUF_STRUCT_) INTBUF_TAB
128 TYPE(H3D_DATABASE) :: H3D_DATA
129
130 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
131
132
133
134 INTEGER I, I_STOK, JLT_NEW, JLT , NFT, IVIS2,
135 . IBC, NOINT, NSEG, ISECIN, IBAG, IADM,
136 . IGAP, INACTI, IFQ, , IGSTI, NISUB,
137 . NB_LOC, I_STOK_LOC,DEBUT,
138 . ILAGM, LENR, LENT, MAXCC,INTTH,I22GRSH3N,SFSAVPARIT,
139 . IERROR,ISU1
140 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
141 . NSVG(MVSIZ), CB_LOC(MVSIZ),CE_LOC(MVSIZ),
142 . CAND_B_N(MVSIZ),CAND_E_N(MVSIZ),(MVSIZ),
143 . INDEX2(LINDMAX),
144 . ISDSIZ(NSPMD+1),IRCSIZ(NSPMD+1),ITAG(NUMNOD),
145 . IELECI(MVSIZ), NSMS(MVSIZ), IAD, J, H
147 . startt, fric, gap, stopt,
148 . visc,viscf,stiglo,gapmin,
149 . kmin, kmax, gapmax,rstif,fheat,tint,rhoh
150
152 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz),
153 . ny1(mvsiz), ny2(mvsiz), ny3
154 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
155 . lb1(mvsiz), lb2(mvsiz), lb3(mvsiz), lb4(mvsiz),
156 . lc1(mvsiz), lc2(mvsiz), lc3(mvsiz), lc4(mvsiz),
157 . p1(mvsiz), p2(mvsiz), p3(mvsiz), p4(mvsiz),
158 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
159 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
160 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
161 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
162 . n1(mvsiz), n2(mvsiz), n3(mvsiz), pene(mvsiz),
163 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz),
164 . gapv(mvsiz),vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz),
165 . tempi(mvsiz),phi(mvsiz),areasi(mvsiz)
167 . , DIMENSION(:,:),ALLOCATABLE :: surf
169 . , DIMENSION(:), ALLOCATABLE :: pres
170 SAVE surf,pres
172 . anglt, padm
173 INTEGER NRTMFT, NRTMLT, NMNFT, NMNLT, NRADM
175 . nnx1(mvsiz), nnx2(mvsiz), nnx3(mvsiz), nnx4(mvsiz),
176 . nny1(mvsiz), nny2(mvsiz), nny3(mvsiz), nny4(mvsiz),
177 . nnz1(mvsiz), nnz2(mvsiz), nnz3(mvsiz), nnz4(mvsiz),
181 INTEGER ICURV
182 my_real,
DIMENSION(:,:,:),
ALLOCATABLE,
TARGET :: fsavparit
184 INTEGER :: NRTM, NSN, NTY
185
186 iadm = 0
187
188 nrtm = ipari(4,nin)
189 nsn = ipari(5,nin)
190 nty = ipari(7,nin)
191 noint = ipari(15,nin)
192 inacti = ipari(22,nin)
193 ibag = ipari(32,nin
194 nisub = ipari(36,nin)
195 isu1 = ipari(45,nin)
196 intth = ipari(47,nin)
197
198
199 i22grsh3n = ipari(48,nin)
200
201 stiglo = -intbuf_tab%STFAC(1)
202 startt = intbuf_tab%VARIABLES(3)
203 stopt = intbuf_tab%VARIABLES(11)
204 fric = intbuf_tab%VARIABLES(1)
205 gap = intbuf_tab%VARIABLES(2)
206 gapmin = intbuf_tab%VARIABLES(13)
207 visc = intbuf_tab%VARIABLES(14)
208 viscf = intbuf_tab%VARIABLES(15)
209 gapmax = intbuf_tab%VARIABLES(16)
210 kmin = intbuf_tab%VARIABLES(17)
211 kmax = intbuf_tab%VARIABLES(18)
212 rstif
213 fheat = intbuf_tab%VARIABLES(21)
214 tint = intbuf_tab%VARIABLES(22)
215 i_stok = intbuf_tab%I_STOK(1)
216
217 debut = 0
218
219
220
221
222 IF(startt>tt) RETURN
223 IFRETURN
224
225
226
227
228 nb_loc = i_stok / nthread
229 IF (jtask==nthread) THEN
230 i_stok_loc = i_stok-nb_loc*(nthread-1)
231 ELSE
232 i_stok_loc = nb_loc
233 ENDIF
234 debut = (jtask-1)*nb_loc
235 i_stok = 0
236
237
238
239
240 DO i = debut+1, debut+i_stok_loc
241 IF(intbuf_tab%CAND_N(i)/=0) THEN
242 i_stok = i_stok + 1
243 index2(i_stok) = i
244 ENDIF
245 ENDDO
246
247
248
249
250 IF (debug(3)>=1) THEN
251 nb_jlt = nb_jlt + i_stok_loc
252 nb_stok_n = nb_stok_n + i_stok
253 ENDIF
254
255
257 IF(jtask==1)THEN
258 ALLOCATE(surf(3,nrtmdim))
259 ALLOCATE(pres(nrtmdim))
260 DO i = 1, nrtm
261 pres(i) = zero
262 surf(1,i) = zero
263 surf(2,i) = zero
264 surf(3,i) = zero
265 ENDDO
266
267
268
269
270
271!
272
273
274
275
276
277 ENDIF
279
280
281 sfsavparit = 0
282 NULLIFY(pfsavparit)
283 DO i=1,nisub+1
284 IF(isensint(i)/=0) THEN
285 sfsavparit = sfsavparit + 1
286 ENDIF
287 ENDDO
288 IF (sfsavparit /= 0) THEN
289 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
290 IF(ierror/=0) THEN
291 CALL ancmsg(msgid=19,anmode=aninfo,
292 . c1='(/INTER/TYPE22)')
294 ENDIF
295 DO j=1,i_stok
296 DO i=1,11
297 DO h=1,nisub+1
298 fsavparit(h,i,j) = zero
299 ENDDO
300 ENDDO
301 ENDDO
302 ELSE
303 ALLOCATE(fsavparit(0,0,0),stat=ierror)
304 IF(ierror/=0) THEN
305 CALL ancmsg(msgid=19,anmode=aninfo,
306 . c1='(/INTER/TYPE22)')
308 ENDIF
309 ENDIF
310
311 DO nft = 0 , i_stok - 1 , nvsiz
312
313 jlt =
min( nvsiz, i_stok - nft )
314
315
316
317
318
319
320! print *, "================================================"
321
322
323
325 1 jlt ,x , intbuf_tab%IRECTM ,intbuf_tab%NSV ,cand_e_n ,
326 2 cand_b_n ,intbuf_tab%STFM , intbuf_tab%STFNS ,x1 ,x2 ,
327 3 x3 ,x4 , y1 ,y2 ,y3 ,
328 4 y4 ,z1 , z2 ,z3 ,z4 ,
329 5 xi ,yi , zi ,stif ,ix1 ,
330 6 ix2 ,ix3 , ix4 ,nsvg ,igap ,
331 7 gap ,intbuf_tab%GAP_S , intbuf_tab%GAP_M ,gapv ,ms ,
332 8 vxi ,vyi ,
333 a vzi ,msi , nsn ,v ,kinet ,
334 b kini ,nty , nin ,igsti ,kmin
335 c kmax ,gapmax , gapmin ,iadm ,index2(nft+1) ,
336 d intth ,temp , intbuf_tab%CAND_E(1) ,intbuf_tab%CAND_N(1) ,
337 e tempi ,phi , intbuf_tab%AREAS ,intbuf_tab%IELEC ,areasi
338 f ieleci ,nodnx_sms , nsms ,intbuf_tab%GAP_SL ,intbuf_tab%GAP_ML,
339 g igrbric(isu1)%ENTITY,jtask)
340
342 1 jlt ,cand_b_n ,cand_e_n ,cb_loc ,ce_loc ,
343 2 x1 ,x2 ,x3 ,x4 ,y1 ,
344 3 y2 ,y3 ,y4 ,z1 ,z2
345 4 z3 ,z4 ,xi ,yi ,zi ,
346 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
347 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
348 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3
349 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
350 9 p1 ,p2 ,p3 ,p4 ,ix1 ,
351 a ix2 ,ix3 ,ix4 ,nsvg ,stif ,
352 b jlt_new ,gapv ,inacti ,intbuf_tab%CAND_P
353 c index2(nft+1) ,vxi ,vyi ,
354 d vzi ,msi ,kini ,surf ,ibag ,
355 e itab ,intbuf_tab%IRECTM ,intbuf_tab%I_STOK(1) ,ixs ,nft ,
356 f cog ,seff ,delta ,x)
357
358
359
360
361
362 jlt_new =1
363
364
365 IF (imonm > 0 .AND. jtask == 1)
CALL startime(timers,20)
366 IF(jlt_new/=0) THEN
367 ipari(29,nin) = 1
368 IF (debug(3)>=1)nb_jlt_new = nb_jlt_new + jlt_new
369 IF (sfsavparit /= 0) pfsavparit => fsavparit(1,1,nft+1)
371 1 jlt ,a ,v ,ibc ,icodt ,
372 2 fsav ,gap ,fric ,ms ,visc ,
373 3 viscf ,noint ,intbuf_tab%STFNS ,itab ,cb_loc ,
374 4 stiglo ,stifn ,stif ,fskyi ,isky
375 5 nx1 ,nx2 ,nx3 ,nx4 ,ny1 ,
376 6 ny2 ,ny3 ,ny4 ,nz1 ,nz2 ,
377 7 nz3 ,nz4 ,lb1 ,lb2 ,lb3 ,
378 8 lb4 ,lc1 ,lc2 ,lc3 ,lc4 ,
379 9 p1 ,p2 ,p3 ,p4 ,fcont ,
380 b ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
381 c ivis2 ,neltst ,ityptst ,dt2t ,intth ,
382 d gapv ,inacti ,intbuf_tab%CAND_P ,index2(nft+1) ,niskyfi ,
383 e kinet ,newfront ,isecin ,nstrf ,secfcum ,
384 f x ,intbuf_tab%IRECTM ,ce_loc ,mfrot ,ifq ,
385 g intbuf_tab%FRIC_P ,intbuf_tab%FTSAVX ,intbuf_tab%FTSAVY ,intbuf_tab%FTSAVZ ,
386 + intbuf_tab%XFILTR ,
387 h intbuf_tab%IFPEN ,ibag ,icontact ,
388 j viscn ,vxi ,vyi ,vzi ,msi ,
389 k kini ,nin ,nisub ,intbuf_tab%LISUB ,intbuf_tab%ADDSUBS ,
390 l intbuf_tab%ADDSUBM ,intbuf_tab%LISUBS ,intbuf_tab%LISUBM ,fsavsub ,
391 . intbuf_tab%CAND_N ,
392 m ipari(33,nin) ,ipari(39,nin) ,pres ,fncont ,ms0 ,
393 n n_scut ,surf ,cog ,cand_e_n ,seff ,
394 o elbuf_tab ,x1 ,x2 ,x3 ,x4 ,
395 3 y1 ,y2 ,y3 ,y4 ,z1 ,
396 4 z2 ,z3 ,z4 ,ixs ,nv46 ,
397 5 delta ,isensint ,pfsavparit ,iparg ,h3d_data )
398 ENDIF
399 IF (imonm > 0 .AND. jtask == 1)
CALL stoptime(timers,20)
400 ENDDO
401
402
403 IF (sfsavparit /= 0)THEN
405 . fbsav6, 12, 6, dimfb, isensint )
406 ENDIF
407 IF (ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
408
409 IF(inacti==7.AND.ibag/=0)THEN
411 IF(jtask==1) THEN
412! CALL ass18(nrtm ,intbuf_tab%IRECTM,a ,x ,surf ,
413
414
415 END IF
417 IF(jtask == 1) DEALLOCATE(surf,pres)
418 ENDIF
419
420
422
423 IF(jtask == 1) THEN
424 IF(ALLOCATED(surf))DEALLOCATE(surf)
425 IF(ALLOCATED(pres))DEALLOCATE(pres)
426 ENDIF
427
428
429 RETURN
subroutine i22cor3(jlt, x, irect, nsv, cand_e, cand_b, stf, stfn, 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, ms, vxi, vyi, vzi, msi, nsn, v, kinet, kini, ity, nin, igsti, kmin, kmax, gapmax, gapmin, iadm, index, intth, temp, cand__e, cand__b, tempi, phi, areas, ielec, areasi, ieleci, nodnx_sms, nsms, gap_s_l, gap_m_l, bufbric, jtask)
subroutine i22for3(jlt, a, v, ibc, icodt, fsav, gap, fric, ms, visc, viscf, noint, stfn, itab, cb_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, ix1, ix2, ix3, ix4, nsvg, ivis2, neltst, ityptst, dt2t, intth, gapv, inacti, cand_p, index, niskyfi, kinet, newfront, isecin, nstrf, secfcum, x, irect, ce_loc, mfrot, ifq, frot_p, cand_fx, cand_fy, cand_fz, alpha0, ifpen, ibag, icontact, viscn, vxi, vyi, vzi, msi, kini, nin, nisub, lisub, addsubs, addsubm, lisubs, lisubm, fsavsub, cand_n, ilagm, icurv, pres, fncont, ms0, n_scut, n_surf, cog, cand_e, swet, elbuf_tab, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, ixs, nv46, delta, isensint, fsavparit, iparg, h3d_data)
subroutine i22wetsurf(jlt, cand_b, cand_e, cb_loc, ce_loc, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, p1, p2, p3, p4, ix1, ix2, ix3, ix4, nsvg, stif, jlt_new, gapv, inacti, cand_p, n_scut, index, vxi, vyi, vzi, msi, kini, surf, ibag, itab, irect, i_stok, ixs, nft, cog, seff, delta, x)
subroutine sum_6_float_sens(f, a, b, c, jft, jlt, f6, d, e, g, isensint)
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)