49
50
51
52 USE intbufdef_mod
53 USE output_mod
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "com08_c.inc"
63#include "param_c.inc"
64#include "parit_c.inc"
65#include "mvsiz_p.inc"
66
67
68
69 type(output_), intent(inout) :: output
70 INTEGER NELTST,ITYPTST
71 INTEGER IPARI(*), ICODT(*), NPC(*), ISKY(*)
72
74 . x(*),a(*),tf(*),v(*),fsav(*),fskyi(lskyi,nfskyi),
75 . fcont(3,*),ms(*)
76
77 TYPE(INTBUF_STRUCT_) INTBUF_TAB
78 TYPE(H3D_DATABASE) :: H3D_DATA
79
80
81
82 INTEGER
83 . INACTI,NOINT, NGROUS, NGROUM, NG, IGIMP,INTY,IFRICF,IFRICV,
84 . IDAMPV,IDAMPF
85 INTEGER LOLD(MVSIZ)
86 INTEGER, DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4
87 my_real,
DIMENSION(MVSIZ) :: x1,x2,x3,x4,xi
88 my_real,
DIMENSION(MVSIZ) :: y1,y2,y3,y4,yi
89 my_real,
DIMENSION(MVSIZ) :: z1,z2,z3,z4,zi
90 my_real,
DIMENSION(MVSIZ) :: xface,n1,n2,n3
92 my_real,
DIMENSION(MVSIZ) :: x0,y0,z0,ans
93 my_real,
DIMENSION(MVSIZ) :: xx1,xx2,xx3,xx4
94 my_real,
DIMENSION(MVSIZ) :: yy1,yy2,yy3,yy4
95 my_real,
DIMENSION(MVSIZ) :: zz1,zz2,zz3,zz4
96 my_real,
DIMENSION(MVSIZ) :: xi1,xi2,xi3,xi4
97 my_real,
DIMENSION(MVSIZ) :: yi1,yi2,yi3,yi4
98 my_real,
DIMENSION(MVSIZ) :: zi1,zi2,zi3,zi4
99 my_real,
DIMENSION(MVSIZ) :: xn1,xn2,xn3,xn4
100 my_real,
DIMENSION(MVSIZ) :: yn1,yn2,yn3,yn4
101 my_real,
DIMENSION(MVSIZ) :: zn1,zn2,zn3,zn4
102 my_real,
DIMENSION(MVSIZ) :: xp,yp,zp
103 my_real,
DIMENSION(MVSIZ) :: h1,h2,h3,h4
105 . vni(mvsiz),vnt(mvsiz)
107 . ansmx,ascalv,ascalf,fscalv,fmx,fmy,fmz,startt,fric,sfric,visc,
108 . stiff, gap, stopt,dist
109 INTEGER :: NSN,NMN
110 INTEGER :: NFT,LLT,LFT
111
112 nsn = ipari(5)
113 nmn = ipari(6)
114 inty = ipari(7)
115 noint = ipari(15)
116 inacti= ipari(22)
117 ifricf = ipari(51)
118 idampv = ipari(52)
119 idampf = ipari(53)
120 ifricv = ipari(54)
121
122 ansmx =ep15
123 fmx=zero
124 fmy=zero
125 fmz=zero
126
127 ngrous=1+(nsn-1)/nvsiz
128 ngroum=1+(nmn-1)/nvsiz
129
130 startt=intbuf_tab%VARIABLES(3)
131 IF(startt > tt) RETURN
132 stopt =intbuf_tab%VARIABLES(11)
133 IF(tt > stopt) RETURN
134
135 fric = intbuf_tab%VARIABLES(1)
136 gap = intbuf_tab%VARIABLES(2)
137 sfric = intbuf_tab%VARIABLES(5)
138 visc = intbuf_tab%VARIABLES(14)
139 stiff = intbuf_tab%VARIABLES(21)
140 ascalf= intbuf_tab%VARIABLES(22)
141 ascalv= intbuf_tab%VARIABLES(23)
142 fscalv= intbuf_tab%VARIABLES(24)
143
144 CALL i6ini3(intbuf_tab%FS,intbuf_tab%FM,nsn,nmn)
145
146
147
148 DO ng=1,ngrous
149 nft=(ng-1)*nvsiz
150 lft=1
151 llt=min0(nvsiz,nsn-nft)
153 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
154 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%NSEGM, xi,
155 3 yi, zi, xface, lft,
156 4 llt, nft)
158 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
159 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%IRTLM, intbuf_tab%NSEGM,
160 3 xface, lft, llt, nft)
162 1 x, intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV,
163 2 intbuf_tab%IRTLM, ix1, ix2, ix3,
164 3 ix4, x1, x2, x3,
165 4 x4, y1, y2, y3,
166 5 y4, z1, z2, z3,
167 6 z4, lft, llt, nft)
169 1 x1, x2, x3, x4,
170 2 xi, y1, y2, y3,
171 3 y4, yi, z1, z2,
172 4 z3, z4, zi, xface,
173 5 n1, n2, n3, ssc,
174 6 ttc, x0, y0, z0,
175 7 xx1, xx2, xx3, xx4,
176 8 yy1, yy2, yy3, yy4,
177 9 zz1, zz2, zz3, zz4,
178 a xi1, xi2, xi3, xi4,
179 b yi1, yi2, yi3, yi4,
180 c zi1, zi2, zi3, zi4,
181 d xn1, xn2, xn3, xn4,
182 e yn1, yn2, yn3, yn4,
183 f zn1, zn2, zn3, zn4,
186 1 gap,
area, thk, alp,
187 2 lft, llt)
189 1 igimp, inty, dist, x1,
190 2 x2, x3, x4, xi,
191 3 y1, y2, y3, y4,
192 4 yi, z1, z2, z3,
193 5 z4, zi, xface, n1,
194 6 n2, n3, ssc, ttc,
195 7 alp, ans, xp, yp,
196 8 zp, h1, h2, h3,
197 9 h4, lft, llt)
198 IF(igimp == 0)cycle
199
201 1 intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%IRTLM,
202 2 intbuf_tab%STFM, intbuf_tab%STFNS, igimp, intbuf_tab%FS,
203 3 intbuf_tab%FM, ansmx, fmx, fmy,
204 4 fmz, intbuf_tab%FCONT, n1, n2,
205 5 n3, xface, ans, h1,
206 6 h2, h3, h4, thk,
207 7 xx3, yy3, zz3, xx4,
208 8 yy4, yi1, yi2, yi3,
209 9 zz4, zi1, zi2, zi3,
210 a xi1, xi2, xi3, xi4,
211 b lft, llt, nft)
212
213 IF (visc > zero .or. idampv > 0 .or. fric > zero)
215 1 lold, intbuf_tab%IRTLM, intbuf_tab%IRTLOM,intbuf_tab%CSTS,
216 2 intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV, v,
217 3 vni, vnt, n1, n2,
218 4 n3, ssc, ttc, h1,
219 5 h2, h3, h4,
220 6 lft, llt, nft)
221
222 IF (visc > zero .or. idampv > 0)
224 1 v, npc, tf, intbuf_tab%IRECTM,
225 2 intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%IRTLM, intbuf_tab%IRTLOM,
226 3 intbuf_tab%CSTS, intbuf_tab%FS, intbuf_tab%FM, visc,
227 4 idampv, idampf, lold, ms,
228 5 vni, ascalf, ascalv, fscalv,
229 6 h1, h2, h3, h4,
230 7 xx3, yy3, zz3, xx4,
231 8 yy4, yi1, yi2, yi3,
232 9 zz4, zi1, zi2, zi3,
233 a xi1, xi2, xi3, xi4,
234 b lft, llt, nft)
235
236 IF (fric > zero)
238 1 x, intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV,
239 2 intbuf_tab%IRTLM, intbuf_tab%CSTS, intbuf_tab%IRTLOM,intbuf_tab%FRICOS,
240 3 fric, intbuf_tab%FS, intbuf_tab%FM, sfric,
241 4 ifricf, npc, tf, lold,
242 5 ifricv, vnt, ascalf, ascalv,
243 6 stiff, n1, n2, n3,
244 7 ssc, ttc, xface, xp,
245 8 yp, zp, h1, h2,
246 9 h3, h4, xx3, yy3,
247 a zz3, xx4, yy4, yi1,
248 b yi2, yi3, zz4, zi1,
249 c zi2, zi3, xi1, xi2,
250 d xi3, xi4, lft, llt,
251 e nft)
252
253
254 ENDDO
255
256
257
258 fmx=-fmx
259 fmy=-fmy
260 fmz=-fmz
261
262
263
264 DO ng=1,ngroum
265 nft=(ng-1)*nvsiz
266 lft=1
267 llt=min0(nvsiz,nmn-nft)
269 1 x, intbuf_tab%IRECTS,intbuf_tab%LNSV, intbuf_tab%NSV,
270 2 intbuf_tab%MSR, intbuf_tab%ILOCM, intbuf_tab%NSEGS, xi,
271 3 yi, zi, xface, lft,
272 4 llt, nft)
274 1 x, intbuf_tab%IRECTS,intbuf_tab%LNSV, intbuf_tab%NSV,
275 2 intbuf_tab%MSR, intbuf_tab%ILOCM, intbuf_tab%IRTLS, intbuf_tab%NSEGS,
276 3 xface, lft, llt, nft)
278 1 x, intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR,
279 2 intbuf_tab%IRTLS, ix1, ix2, ix3,
280 3 ix4, x1, x2, x3,
281 4 x4, y1, y2, y3,
282 5 y4, z1, z2, z3,
283 6 z4, lft, llt, nft)
284
286 1 x1, x2, x3, x4,
287 2 xi, y1, y2, y3,
288 3 y4, yi, z1, z2,
289 4 z3, z4, zi, xface,
290 5 n1, n2, n3, ssc,
291 6 ttc, x0, y0, z0,
292 7 xx1, xx2, xx3, xx4,
293 8 yy1, yy2, yy3, yy4,
294 9 zz1, zz2, zz3, zz4,
295 a xi1, xi2, xi3, xi4,
296 b yi1, yi2, yi3, yi4,
297 c zi1, zi2, zi3, zi4,
298 d xn1, xn2, xn3, xn4,
299 e yn1, yn2, yn3, yn4,
300 f zn1, zn2, zn3, zn4,
303 1 gap,
area, thk, alp,
304 2 lft, llt)
306 1 igimp, inty, dist, x1,
307 2 x2, x3, x4, xi,
308 3 y1, y2, y3, y4,
309 4 yi, z1, z2, z3,
310 5 z4, zi, xface, n1,
311 6 n2, n3, ssc, ttc,
312 7 alp, ans, xp, yp,
313 8 zp, h1, h2, h3,
314 9 h4, lft, llt)
315
316 IF (igimp == 0) cycle
317
319 1 intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR, intbuf_tab%IRTLS,
320 2 intbuf_tab%STFS, intbuf_tab%STFNM, igimp, intbuf_tab%FM,
321 3 intbuf_tab%FS, ansmx, fmx, fmy,
322 4 fmz, intbuf_tab%FCONT, n1, n2,
323 5 n3, xface, ans, h1,
324 6 h2, h3, h4, thk,
325 7 xx3, yy3, zz3, xx4,
326 8 yy4, yi1, yi2, yi3,
327 9 zz4, zi1, zi2, zi3,
328 a xi1, xi2, xi3, xi4,
329 b lft, llt, nft)
330
331 IF (visc > zero .or. idampv > 0 .or. fric > zero)
333 1 lold, intbuf_tab%IRTLS, intbuf_tab%IRTLOS,intbuf_tab%CSTM,
334 2 intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR, v,
335 3 vni, vnt, n1, n2,
336 4 n3, ssc, ttc, h1,
337 5 h2, h3, h4, xface,
338 6 lft, llt, nft)
339
340 IF (visc > zero .or. idampv > 0)
342 1 v, npc, tf, intbuf_tab%IRECTS,
343 2 intbuf_tab%NSV, intbuf_tab%MSR, intbuf_tab%IRTLS, intbuf_tab%IRTLOS,
344 3 intbuf_tab%CSTM, intbuf_tab%FM, intbuf_tab%FS, visc,
345 4 idampv, idampf, lold, ms,
346 5 vni, ascalf, ascalv, fscalv,
347 6 h1, h2, h3, h4,
348 7 xx3, yy3, zz3, xx4,
349 8 yy4, yi1, yi2, yi3,
350 9 zz4, zi1, zi2, zi3,
351 a xi1, xi2, xi3, xi4,
352 b lft, llt, nft)
353
354 IF (fric > zero)
356 1 x, intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR,
357 2 intbuf_tab%IRTLS, intbuf_tab%CSTM, intbuf_tab%IRTLOS,intbuf_tab%FRICOM,
358 3 fric, intbuf_tab%FM, intbuf_tab%FS,
359 4 ifricf, npc, tf, lold,
360 5 ifricv, vnt, ascalf, ascalv,
361 6 stiff, n1, n2, n3,
362 7 ssc, ttc, xface, xp,
363 8 yp, zp, h1, h2,
364 9 h3, h4, xx3, yy3,
365 a zz3, xx4, yy4, yi1,
366 b yi2, yi3, zz4, zi1,
367 c zi2, zi3, xi1, xi2,
368 d xi3, xi4, lft, llt,
369 e nft)
370 ENDDO
371
373 1 a ,intbuf_tab%MSR ,intbuf_tab%NSV ,intbuf_tab%FS ,
374 2 intbuf_tab%FM ,npc ,tf ,ansmx ,
375 3 fmx ,fmy ,fmz ,intbuf_tab%VARIABLES(4),
376 4 ipari(11) ,v ,noint ,nsn ,
377 5 nmn ,fsav ,dt2t ,neltst ,
378 6 ityptst ,intbuf_tab%STFAC(1) ,fskyi ,isky ,
379 7 fcont,intbuf_tab%VARIABLES(19),intbuf_tab%VARIABLES(20),stiff ,
380 8 ipari(47) ,ipari(49) ,ipari(58) ,intbuf_tab%FCONT ,
381 9 intbuf_tab%ANSMX0(1) ,intbuf_tab%ANSMX0(2),h3d_data )
382
383 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i3cor3(x, irect, msr, nsv, irtl, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, lft, llt, nft)
subroutine i3cst3(x1, x2, x3, x4, xi, y1, y2, y3, y4, yi, z1, z2, z3, z4, zi, xface, n1, n2, n3, ssc, ttc, x0, y0, z0, xx1, xx2, xx3, xx4, yy1, yy2, yy3, yy4, zz1, zz2, zz3, zz4, xi1, xi2, xi3, xi4, yi1, yi2, yi3, yi4, zi1, zi2, zi3, zi4, xn1, xn2, xn3, xn4, yn1, yn2, yn3, yn4, zn1, zn2, zn3, zn4, area, lft, llt)
subroutine i3dis3(igimp, nty, dist, x1, x2, x3, x4, xi, y1, y2, y3, y4, yi, z1, z2, z3, z4, zi, xface, n1, n2, n3, ssc, ttc, alp, ans, xp, yp, zp, h1, h2, h3, h4, lft, llt)
subroutine i3gap3(gap, area, thk, alp, lft, llt)
subroutine i3loc3(x, irect, lmsr, msr, nsv, iloc, nseg, xi, yi, zi, xface, lft, llt, nft)
subroutine i3msr3(x, irect, lmsr, msr, nsv, iloc, irtl, nseg, xface, lft, llt, nft)
subroutine i6ass3(output, e, msr, nsv, es, em, npc, tf, ansmx, fmx, fmy, fmz, xmas, ifunc, v, noint, nsn, nmn, fsav, dt2t, neltst, ityptst, ffac, fskyi, isky, fcont, facx, fac2, stiff, hflag, ifun2, icor, peni, ansmx0, ff0, h3d_data)
subroutine i6damp(v, npc, tf, irect, msr, nsv, irtl, irtlo, cst, es, em, visc, ndamp1, ndamp2, lold, mass, vni, ascalf, ascalv, fscalv, h1, h2, h3, h4, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4, lft, llt, nft)
subroutine i6for3(irect, msr, nsv, irtl, stf, stfn, igimp, es, em, ansmx, fmx, fmy, fmz, peni, n1, n2, n3, xface, ans, h1, h2, h3, h4, thk, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4, lft, llt, nft)
subroutine i6fri3(x, irect, msr, nsv, irtl, cst, irtlo, fric0, fric, es, em, sfric, ifricf, npc, tf, lold, ifricv, vnt, ascalf, ascalv, stiff, n1, n2, n3, ssc, ttc, xface, xp, yp, zp, h1, h2, h3, h4, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4, lft, llt, nft)
subroutine i6ipmact(lold, irtl, irtlo, cst, irect, msr, nsv, v, vni, vnt, n1, n2, n3, ssc, ttc, h1, h2, h3, h4, xface, lft, llt, nft)
subroutine i6ini3(es, em, nsn, nmn)