57
58
59
60 use output_mod
61 USE timer_mod
62 USE intbufdef_mod
65
66
67
68#include "implicit_f.inc"
69#include "comlock.inc"
70
71
72
73#include "mvsiz_p.inc"
74
75
76
77#include "com04_c.inc"
78#include "com08_c.inc"
79#include "impl1_c.inc"
80#include "param_c.inc"
81#include "parit_c.inc"
82#include "task_c.inc"
83#include "timeri_c.inc"
84#include "warn_c.inc"
85
86
87
88 type(output_), intent(inout) :: output
89 TYPE(TIMER_), INTENT(inout) :: TIMERS
90 INTEGER NIN, NSTRF(*), NRTMDIM, NEWFRONT,
91 . NISKYFI
92 INTEGER IPARI(NPARI,NINTER), ICODT(*),ICONTACT(*),
93 . ITAB(*), ISKY(*), KINET(*), ISKYI_SMS(*), NODNX_SMS(*),
94 . NODGLOB(*), NPC(*), MWAG(*)
95 INTEGER NB_JLT,NB_JLT_NEW,NB_STOK_N,JTASK,
96 . LINDMAX,DIMFB
97 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),IND_IMP(*), WEIGHT(*)
98
100 . x(*), a(3,*), fsav(*), v(3,*),
101 . ms(*),stifn(*),fskyi(lskyi,4), fcont(3,*),
102 . secfcum(7,numnod,nsect), viscn(*),
103 . fncont(3,*), ftcont(3,*), rcontact(*), acontact(*),
104 . pcontact(*), mskyi_sms(*),
105 . tf(*), dt2t
106 DOUBLE PRECISION FBSAV6(12,6,DIMFB)
107
108 TYPE(INTBUF_STRUCT_) INTBUF_TAB
109 TYPE(H3D_DATABASE) :: H3D_DATA
110
111
112
113 INTEGER I, I_STOK, JLT_NEW, JLT , NFT, J,
114 . IBC, NOINT, ISECIN, IBAG,
115 . IGAP, INACTI, IFQ, MFROT, IGSTI, NISUB,
116 . NB_LOC, I_STOK_LOC,DEBUT,
117 . INTTH, IFSTF, H, IERROR
118 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
119 . NSVG(MVSIZ), CN_LOC(MVSIZ),CE_LOC(MVSIZ),
120 . CAND_N_N(MVSIZ), CAND_E_N(MVSIZ), KINI(MVSIZ),
121 . INDEX2(LINDMAX),
122 . NSMS(MVSIZ), ISENSINT(*)
123
125 . startt, fric, gap, stopt,
126 . visc,stiglo,gapmin,
127 . kmin, kmax, gapmax,
128 . scal_t, deri
129
130
131
133 . finter
134
135
137 .
138 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
139 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
140 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
141 . xi(mvsiz), yi(mvsiz), zi(mvsiz), stif(mvsiz),
142 . nx1(mvsiz), nx2(mvsiz), nx3(mvsiz), nx4(mvsiz
143 . ny1(mvsiz), ny2(mvsiz), ny3(mvsiz), ny4(mvsiz),
144 . nz1(mvsiz), nz2(mvsiz), nz3(mvsiz), nz4(mvsiz),
145 . nx(mvsiz), ny(mvsiz), nz(mvsiz), pene
146 . gapv(mvsiz),vxi(mvsiz),vyi(mvsiz),vzi(mvsiz),msi(mvsiz
147 . fxt(mvsiz), fyt(mvsiz), fzt(mvsiz)
149 . vxm(mvsiz), vym(mvsiz), vzm(mvsiz
150 . h1(mvsiz), h2(mvsiz), h3(mvsiz), h4(mvsiz)
151 INTEGER ICURV, SFSAVPARIT
152
153 my_real,
DIMENSION(:,:,:),
ALLOCATABLE :: fsavparit
154 INTEGER :: NSN
155 INTEGER :: NMN
156 INTEGER :: NTY
157
158
159
160 nsn =ipari(5,nin)
161 nmn =ipari(6,nin)
162 nty =ipari(7,nin)
163 ibc =ipari(11,nin)
164 IF(ipari(33,nin)==1) RETURN
165 noint =ipari(15,nin)
166 igap =ipari(21,nin)
167 inacti=ipari(22,nin)
168 isecin=ipari(28,nin)
169 mfrot =ipari(30,nin)
170 ifq =ipari(31,nin)
171 ibag =ipari(32,nin)
172 igsti=ipari(34,nin)
173 nisub =ipari(36,nin)
174 icurv =ipari(39,nin)
175 ifstf =ipari(48,nin)
176
177 intth = ipari(47,nin)
178 scal_t= intbuf_tab%VARIABLES(33)
179
180 stiglo=-intbuf_tab%STFAC(1)
181 IF(ifstf/=0)stiglo = stiglo*finter(ifstf,tt/scal_t,npc,tf
182
183 startt=intbuf_tab%VARIABLES(3)
184 stopt =intbuf_tab%VARIABLES(11)
185 IF(startt>tt) RETURN
186 IF(tt>stopt) RETURN
187
188 fric =intbuf_tab%VARIABLES(1)
189 gap =intbuf_tab%VARIABLES(2)
190 gapmin=intbuf_tab%VARIABLES(13)
191 visc =intbuf_tab%VARIABLES(14)
192
193 gapmax=intbuf_tab%VARIABLES(16)
194 kmin =intbuf_tab%VARIABLES(17)
195 kmax =intbuf_tab%VARIABLES(18)
196
197
198
199
200
201
202
204
205 i_stok = intbuf_tab%I_STOK(1)
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
231
232
233
234 nb_loc = i_stok / nthread
235 IF (jtask==nthread) THEN
236 i_stok_loc = i_stok-nb_loc*(nthread-1)
237 ELSE
238 i_stok_loc = nb_loc
239 ENDIF
240 debut = (jtask-1)*nb_loc
241
242 i_stok = 0
243
244 IF (impl_s==1) THEN
245 num_imp = 0
246 visc =zero
247 ENDIF
248
249 DO i = debut+1, debut+i_stok_loc
250 IF(intbuf_tab%CAND_N(i)<0) THEN
251 i_stok = i_stok + 1
252 index2(i_stok) = i
253
254 intbuf_tab%CAND_N(i) = -intbuf_tab%CAND_N(i)
255 ELSE
256 intbuf_tab%CAND_P(i) = zero
257 intbuf_tab%FTSAVX(i) = zero
258 intbuf_tab%FTSAVY(i) = zero
259 intbuf_tab%FTSAVZ(i) = zero
260 intbuf_tab%IFPEN(i) = 0
261 ENDIF
262 ENDDO
263
264
265 IF (debug(3)>=1) THEN
266 nb_jlt = nb_jlt + i_stok_loc
267 nb_stok_n = nb_stok_n + i_stok
268 ENDIF
269
270 sfsavparit = 0
271 DO i=1,nisub+1
272 IF(isensint(i)/=0) THEN
273 sfsavparit = sfsavparit + 1
274 ENDIF
275 ENDDO
276 IF (sfsavparit /= 0) THEN
277 ALLOCATE(fsavparit(nisub+1,11,i_stok),stat=ierror)
278 IF(ierror/=0) THEN
279 CALL ancmsg(msgid=19,anmode=aninfo,
280 . c1='(/INTER/TYPE23)')
282 ENDIF
283 DO j=1,i_stok
284 DO i=1,11
285 DO h=1,nisub+1
286 fsavparit(h,i,j) = zero
287 ENDDO
288 ENDDO
289 ENDDO
290 ELSE
291 ALLOCATE(fsavparit(0,0,0),stat=ierror)
292 IF(ierror/=0) THEN
293 CALL ancmsg(msgid=19,anmode=aninfo,
294 . c1='(/INTER/TYPE23)')
296 ENDIF
297 ENDIF
298
299 DO nft = 0 , i_stok - 1 , nvsiz
300 jlt =
min( nvsiz, i_stok - nft )
301
303 1 jlt,index2(nft+1),intbuf_tab%CAND_E,intbuf_tab%CAND_N,
304 2 cand_e_n,cand_n_n)
305
307 1 jlt ,nin ,x ,intbuf_tab%IRECTM,nsn ,
308 2 intbuf_tab%NSV,cand_e_n ,cand_n_n ,intbuf_tab%STFM,
309 + intbuf_tab%STFNS,
310 3 intbuf_tab%MSR,ms ,v ,xi ,yi ,
311 4 zi ,ix1 ,ix2 ,ix3 ,ix4 ,
312 5 nsvg ,igsti ,stif ,kmin ,kmax ,
313 6 igap ,gap ,intbuf_tab%GAP_S,gapv ,gapmax ,
314 7 gapmin ,intbuf_tab%GAP_M,vxi ,vyi ,vzi,
315 8 msi ,nodnx_sms,nsms ,kinet ,x1 ,
316 9 y1 ,z1 ,x2 ,y2 ,z2 ,
317 a x3 ,y3 ,z3 ,x4 ,y4 ,
318 b z4 ,nx1 ,nx2 ,nx3 ,nx4 ,
319 c ny1 ,ny2 ,ny3 ,ny4 ,nz1 ,
320 d nz2 ,nz3 ,nz4 ,kini ,index2(nft+1))
321
322 jlt_new = 0
323
325 1 jlt ,cand_n_n ,cand_e_n ,cn_loc ,ce_loc ,
326 2 x1 ,x2 ,x3 ,x4 ,y1 ,
327 3 y2 ,y3 ,y4 ,z1 ,z2 ,
328 4 z3 ,z4 ,xi ,yi ,zi ,
329 6 ix1 ,ix2 ,ix3 ,ix4 ,nsvg ,
330 7 gapv ,inacti ,index2(nft+1),
331 8 vxm ,vym ,vzm ,h1 ,h2 ,
332 9 h3 ,h4 ,intbuf_tab%IRECTM,intbuf_tab%CAND_P,
333 a intbuf_tab%IFPEN,nx ,ny ,nz ,intbuf_tab%FTSAVX,
334 b intbuf_tab%FTSAVY,intbuf_tab%FTSAVZ,fxt ,fyt ,fzt,
335 c pene ,v ,vxi ,vyi ,vzi ,
336 d msi ,stif ,jlt_new,nsms ,kini )
337 jlt = jlt_new
338 IF (imonm > 0)
CALL startime(timers,20)
339
340 IF(jlt_new/=0) THEN
341 ipari(29,nin) = 1
342 IF (debug(3)>=1)
343 . nb_jlt_new = nb_jlt_new + jlt
344
346 1 jlt ,nin ,noint ,ibc ,icodt ,
347 2 fsav ,gap ,stiglo ,fric ,visc ,
348 3 inacti ,mfrot ,ifq ,ibag ,
349 4 ipari(39,nin),stif ,gapv ,itab ,a ,
350 5 intbuf_tab%CAND_P,intbuf_tab%FRIC_P,intbuf_tab%XFILTR,v ,icontact,
351 6 niskyfi ,nsvg ,x1 ,y1 ,z1 ,
352 7 x2 ,y2 ,z2 ,x3 ,y3 ,
353 8 z3 ,x4 ,y4 ,z4 ,xi ,
354 9 yi ,zi ,vxi ,vyi ,vzi ,
355 a msi ,vxm ,vym ,vzm ,nx ,
356 b ny ,nz ,pene ,h1 ,h2 ,
357 c h3 ,h4 ,index2(nft+1),cand_n_n ,weight ,
358 f fxt ,fyt ,fzt ,dt2t ,
359 g fcont ,fncont ,ftcont ,stifn ,viscn ,
360 h newfront ,isecin ,nstrf ,secfcum ,fskyi ,
361 i isky ,intth ,ms ,ix1 ,ix2 ,
362 j ix3 ,ix4 ,intbuf_tab%FTSAVX,intbuf_tab%FTSAVY,intbuf_tab%FTSAVZ,
363 k kmin ,kmax ,cn_loc ,ce_loc ,mskyi_sms ,
364 l iskyi_sms ,nsms ,jtask ,isensint ,fsavparit ,
365 m nisub ,nft ,h3d_data )
366
367 ENDIF
368 IF (imonm > 0)
CALL stoptime(timers,20)
369
370 ENDDO
371
372 IF (sfsavparit /= 0)THEN
374 . fbsav6, 12, 6, dimfb, isensint )
375 ENDIF
376 IF(ALLOCATED(fsavparit)) DEALLOCATE (fsavparit)
377
379
380
381
382 RETURN
subroutine i23cor3(jlt, nin, x, irect, nsn, nsv, cand_e, cand_n, stf, stfn, msr, ms, v, xi, yi, zi, ix1, ix2, ix3, ix4, nsvg, igsti, stif, kmin, kmax, igap, gap, gap_s, gapv, gapmax, gapmin, gap_m, vxi, vyi, vzi, msi, nodnx_sms, nsms, kinet, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, nx1, nx2, nx3, nx4, ny1, ny2, ny3, ny4, nz1, nz2, nz3, nz4, kini, index)
subroutine i23for3(output, jlt, nin, noint, ibc, icodt, fsav, gap, stiglo, fric, visc, inacti, mfrot, ifq, ibag, icurv, stif, gapv, itab, a, cand_p, frot_p, alpha0, v, icontact, niskyfi, nsvg, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, xi, yi, zi, vxi, vyi, vzi, msi, vxm, vym, vzm, nx, ny, nz, pene, h1, h2, h3, h4, index, cand_n_n, weight, fxt, fyt, fzt, dt2t, fcont, fncont, ftcont, stifn, viscn, newfront, isecin, nstrf, secfcum, fskyi, isky, intth, ms, ix1, ix2, ix3, ix4, cand_fx, cand_fy, cand_fz, kmin, kmax, cn_loc, ce_loc, mskyi_sms, iskyi_sms, nsms, jtask, isensint, fsavparit, nisub, nft, h3d_data)
subroutine i7cdcor3(jlt, index, cand_e, cand_n, cand_e_n, cand_n_n)
subroutine sum_6_float_sens(f, a, b, c, jft, jlt, f6, d, e, g, isensint)
subroutine i23dst3(jlt, cand_n, cand_e, irect, nsv, gap_s, x, msr, pene, ifpen, igap, gap, gapmax, gapmin, gapv, gap_m)
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)