48
49
50
51 USE intbufdef_mod
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "mvsiz_p.inc"
61
62
63
64#include "com08_c.inc"
65#include "param_c.inc"
66#include "parit_c.inc"
67#include "impl1_c.inc"
68
69
70
71 INTEGER IPARI(*), ICODT(*), MWA(*), ISKY(*),
72 . ICONTACT(*)
73 INTEGER NUM_IMP,NS_IMP(*),NE_IMP(*),ITAB(*)
74
76 . x(*), a(3,*), fsav(*), v(3,*), ms(*),
77 . fskyi(lskyi,nfskyi),fcont(3,*), fncont(3,*), ftcont(3,*),
78 . rcontact(*),stifn(*)
79
80 TYPE(INTBUF_STRUCT_) INTBUF_TAB
81 TYPE(H3D_DATABASE) :: H3D_DATA
82
83
84
85
86 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),I
87
89 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz),
90 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz),
91 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz),
92 . dist(mvsiz)
93 INTEGER IBC, NCIMP, NRTM4, NOINT, NGROUS, NGROUM, NG,IGIMP,
94 . NCI, I_STOK, NSEG, LLT_NEW, IDT, JFI, KFI
95 INTEGER IFQ,MFROT,JD(50),KD(50),IBAG,IADM,IFORM,IFT0
96
97 INTEGER, DIMENSION(MVSIZ) :: IX11,IX12,IX13,IX14
98 my_real,
DIMENSION(MVSIZ) :: x11,x12,x13,x14,xi
99 my_real,
DIMENSION(MVSIZ) :: y11,y12,y13,y14,yi
100 my_real,
DIMENSION(MVSIZ) :: z11,z12,z13,z14,zi
101 my_real,
DIMENSION(MVSIZ) :: xface,n1,n2,n3
103 my_real,
DIMENSION(MVSIZ) :: x0,y0,z0,ans,stif
104 my_real,
DIMENSION(MVSIZ) :: xx1,xx2,xx3,xx4
105 my_real,
DIMENSION(MVSIZ) :: yy1,yy2,yy3,yy4
106 my_real,
DIMENSION(MVSIZ) :: zz1,zz2,zz3,zz4
107 my_real,
DIMENSION(MVSIZ) :: xi1,xi2,xi3,xi4
108 my_real,
DIMENSION(MVSIZ) :: yi1,yi2,yi3,yi4
109 my_real,
DIMENSION(MVSIZ) :: zi1,zi2,zi3,zi4
110 my_real,
DIMENSION(MVSIZ) :: xn1,xn2,xn3,xn4
111 my_real,
DIMENSION(MVSIZ) :: yn1,yn2,yn3,yn4
112 my_real,
DIMENSION(MVSIZ) :: zn1,zn2,zn3,zn4
113 my_real,
DIMENSION(MVSIZ) :: xp,yp,zp
114 my_real,
DIMENSION(MVSIZ) :: h1,h2,h3,h4
115
117 . startt, fric, gap, maxbox, minbox, stopt, fb_cam, fb_imm,
118 . visc,viscf,fnor,depth
119 INTEGER :: NMN, NTY, NSN
120 INTEGER :: LFT, LLT, NFT
121
122
123 nsn = ipari(5)
124 nmn = ipari(6)
125 nty = ipari(7)
126 ibc =ipari(11)
127 ncimp =ipari(13)
128 nrtm4 =ipari(14)
129 noint =ipari(15)
130 mfrot =ipari(30)
131 ibag =ipari(32)
132 iadm =ipari(44)
133 iform=ipari(48)
134 ift0 =ipari(50)
135 ngrous=1+(nsn-1)/nvsiz
136 ngroum=1+(nmn-1)/nvsiz
137
138 startt=intbuf_tab%VARIABLES(3)
139 stopt =intbuf_tab%VARIABLES(11)
140 IF(startt>tt) RETURN
141 IF(tt>stopt) RETURN
142
143 fric =intbuf_tab%VARIABLES(1)
144 gap =intbuf_tab%VARIABLES(2)
145 visc =intbuf_tab%VARIABLES(14)
146 viscf=intbuf_tab%VARIABLES(15)
147 fnor =intbuf_tab%VARIABLES(4)
148 depth=intbuf_tab%VARIABLES(5)
149
150 dist = zero
151
152 IF(nty==3)THEN
153 DO 100 ng=1,ngrous
154 nft=(ng-1)*nvsiz
155 lft=1
156 llt=min0(nvsiz,nsn-nft)
158 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
159 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%NSEGM, xi,
160 3 yi, zi, xface, lft,
161 4 llt, nft)
163 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
164 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%IRTLM, intbuf_tab%NSEGM,
165 3 xface, lft, llt, nft)
167 1 x, intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV,
168 2 intbuf_tab%IRTLM, ix11, ix12, ix13,
169 3 ix14, x11, x12, x13,
170 4 x14, y11, y12, y13,
171 5 y14, z11, z12, z13,
172 6 z14, lft, llt, nft)
174 1 x11, x12, x13, x14,
175 2 xi, y11, y12, y13,
176 3 y14, yi, z11, z12,
177 4 z13, z14, zi, xface,
178 5 n1, n2, n3, ssc,
179 6 ttc, x0, y0, z0,
180 7 xx1, xx2, xx3, xx4,
181 8 yy1, yy2, yy3, yy4,
182 9 zz1, zz2, zz3, zz4,
183 a xi1, xi2, xi3, xi4,
184 b yi1, yi2, yi3, yi4,
185 c zi1, zi2, zi3, zi4,
186 d xn1, xn2, xn3, xn4,
187 e yn1, yn2, yn3, yn4,
188 f zn1, zn2, zn3, zn4,
191 1 gap,
area, thk, alp,
192 2 lft, llt)
194 1 igimp, nty, dist, x11,
195 2 x12, x13, x14, xi,
196 3 y11, y12, y13, y14,
197 4 yi, z11, z12, z13,
198 5 z14, zi, xface, n1,
199 6 n2, n3, ssc, ttc,
200 7 alp, ans, xp, yp,
201 8 zp, h1, h2, h3,
202 9 h4, lft, llt)
203 IF(igimp==0)GOTO 100
204 CALL i3for3(lft ,llt ,nft ,
205 2 a ,intbuf_tab%MSR,intbuf_tab%NSV,intbuf_tab%IRTLM,intbuf_tab%STFM,
206 3 intbuf_tab%STFNS,ibc ,icodt ,1 ,fsav ,
207 4 igimp ,fskyi ,isky ,fcont ,h3d_data,
208 5 n1 ,n2 ,n3 ,ix11 ,ix12 ,
209 6 ix13 ,ix14 ,ans ,
210 7 thk ,h1 ,h2 ,h3 ,h4 ,
211 8 xface ,stif ,xx3 ,yy3 ,zz3 ,
212 7 xx4 ,yy4 ,yi1 ,yi2 ,yi3 ,
213 8 zz4 ,zi1 ,zi2 ,zi3 ,xi1 ,
214 9 xi2 ,xi3 ,xi4)
215 IF(fric==0.)GOTO 100
216 IF(igimp==0)GOTO 100
217 CALL i3fri3(lft ,llt ,nft ,x ,a ,
218 2 intbuf_tab%IRECTM,intbuf_tab%MSR,intbuf_tab%NSV,intbuf_tab%IRTLM,
219 3 nty,intbuf_tab%CSTS,intbuf_tab%IRTLOM,intbuf_tab%FRICOS,
220 4 intbuf_tab%VARIABLES(1),1,fsav,fskyi,isky,
221 5 fcont,h3d_data,n1 ,n2 ,n3 ,
222 6 ix11 ,ix12 ,ix13 ,ix14 ,h1 ,
223 7 h2 ,h3 ,h4 ,ssc ,ttc ,
224 8 xface ,stif ,xp ,yp ,zp ,
225 9 xx3 )
226 100 CONTINUE
227 DO 130 ng=1,ngroum
228 nft=(ng-1)*nvsiz
229 lft=1
230 llt=min0(nvsiz,nmn-nft)
232 1 x, intbuf_tab%IRECTS,intbuf_tab%LNSV, intbuf_tab%NSV,
233 2 intbuf_tab%MSR, intbuf_tab%ILOCM, intbuf_tab%NSEGS, xi,
234 3 yi, zi, xface, lft,
235 4 llt, nft)
237 1 x, intbuf_tab%IRECTS,intbuf_tab%LNSV, intbuf_tab%NSV,
238 2 intbuf_tab%MSR, intbuf_tab%ILOCM, intbuf_tab%IRTLS, intbuf_tab%NSEGS,
239 3 xface, lft, llt, nft)
241 1 x, intbuf_tab%IRECTS,intbuf_tab%NSV, intbuf_tab%MSR,
242 2 intbuf_tab%IRTLS, ix11, ix12, ix13,
243 3 ix14, x11, x12, x13,
244 4 x14, y11, y12, y13,
245 5 y14, z11, z12, z13,
246 6 z14, lft, llt, nft)
248 1 x11, x12, x13, x14,
249 2 xi, y11, y12, y13,
250 3 y14, yi, z11, z12,
251 4 z13, z14, zi, xface,
252 5 n1, n2, n3, ssc,
253 6 ttc, x0, y0, z0,
254 7 xx1, xx2, xx3, xx4,
255 8 yy1, yy2, yy3, yy4,
256 9 zz1, zz2, zz3, zz4,
257 a xi1, xi2, xi3, xi4,
258 b yi1, yi2, yi3, yi4,
259 c zi1, zi2, zi3, zi4,
260 d xn1, xn2, xn3, xn4,
261 e yn1, yn2, yn3, yn4,
262 f zn1, zn2, zn3, zn4,
265 1 gap,
area, thk, alp,
266 2 lft, llt)
268 1 igimp, nty, dist, x11,
269 2 x12, x13, x14, xi,
270 3 y11, y12, y13, y14,
271 4 yi, z11, z12, z13,
272 5 z14, zi, xface, n1,
273 6 n2, n3, ssc, ttc,
274 7 alp, ans, xp, yp,
275 8 zp, h1, h2, h3,
276 9 h4, lft, llt)
277 IF(igimp==0)GOTO 130
278 CALL i3for3(lft ,llt ,nft , a ,
279 2 intbuf_tab%NSV,intbuf_tab%MSR,intbuf_tab%IRTLS,intbuf_tab%STFS,
280 3 intbuf_tab%STFNM,ibc ,icodt ,-1 ,fsav ,
281 4 igimp ,fskyi ,isky ,fcont ,h3d_data,
282 5 n1 ,n2 ,n3 ,ix11 ,ix12 ,
283 6 ix13 ,ix14 ,ans ,
284 7 thk ,h1 ,h2 ,h3 ,h4 ,
285 8 xface ,stif ,xx3 ,yy3 ,zz3 ,
286 7 xx4 ,yy4 ,yi1 ,yi2 ,yi3 ,
287 8 zz4 ,zi1 ,zi2 ,zi3 ,xi1 ,
288 9 xi2 ,xi3 ,xi4)
289 IF(fric==0.)GOTO 130
290 IF(igimp==0)GOTO 130
291 ipari(29) = 1
292 CALL i3fri3(lft ,llt ,nft ,x ,a ,
293 2 intbuf_tab%IRECTS,intbuf_tab%NSV,intbuf_tab%MSR,intbuf_tab%IRTLS,
294 3 nty,intbuf_tab%CSTM,intbuf_tab%IRTLOS,intbuf_tab%FRICOM,
295 4 intbuf_tab%VARIABLES(1),-
296 6 ix11 ,ix12 ,ix13 ,ix14 ,h1 ,
297 7 h2 ,h3 ,h4 ,ssc ,ttc ,
298 8 xface ,stif ,xp ,yp ,zp ,
299 9 xx3 )
300
301 130 CONTINUE
302
303 ELSEIF(nty==4)THEN
304
305 ELSEIF(nty==5)THEN
306 IF (impl_s==1) THEN
307 num_imp = 0
308 visc =zero
309 viscf =zero
310 ENDIF
311 DO 150 ng=1,ngrous
312 nft=(ng-1)*nvsiz
313 lft=1
314 llt=min0(nvsiz,nsn-nft)
316 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
317 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%NSEGM, xi,
318 3 yi, zi, xface, lft,
319 4 llt, nft)
321 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
322 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%IRTLM, intbuf_tab%NSEGM,
323 3 xface, lft, llt, nft)
325 1 x, intbuf_tab%IRECTM
326 2 intbuf_tab%IRTLM, ix11
327 3 ix14, x11, x12, x13,
328 4 x14, y11, y12, y13,
329 5 y14,
330 6 z14, lft, llt, nft)
332 1 x11, x12, x13, x14,
333 2 xi, y11, y12, y13,
334 3 y14, yi, z11, z12,
335 4 z13, z14, zi, xface,
336 5 n1, n2, n3, ssc,
337 6 ttc, x0, y0, z0,
338 7 xx1, xx2, xx3, xx4,
339 8 yy1, yy2, yy3, yy4,
340 9 zz1, zz2, zz3, zz4,
341 a xi1, xi2, xi3, xi4,
342 b yi1, yi2, yi3, yi4,
343 c zi1, zi2, zi3, zi4,
344 d xn1, xn2, xn3, xn4,
345 e yn1, yn2, yn3, yn4,
346 f zn1, zn2, zn3, zn4,
349 1 gap,
area, thk, alp,
350 2 lft, llt)
352 1 igimp, nty, dist, x11,
353 2 x12, x13, x14, xi,
354 3 y11, y12, y13, y14,
355 4 yi, z11, z12, z13,
356 5 z14, zi, xface, n1,
357 6 n2, n3, ssc, ttc,
358 7 alp, ans, xp, yp,
359 8 zp, h1, h2, h3,
360 9 h4, lft, llt)
361 IF(igimp==0)GOTO 150
362 CALL i5for3(lft ,llt ,nft , a ,
363 2 intbuf_tab%MSR,intbuf_tab%NSV,intbuf_tab%IRTLM,intbuf_tab%STFM,
364 3 intbuf_tab%STFNS,ibc ,icodt ,fsav ,igimp ,
365 4 fskyi ,isky ,fcont ,fncont ,icontact ,
366 5 ibag ,iadm ,h3d_data,
367 6 ix11 ,ix12 ,ix13 ,ix14 ,n1 ,
368 7 n2 ,n3 ,xface ,h1 ,h2 ,
369 8 h3 ,h4 ,thk ,ans ,stif ,
370 9 xx3 )
371 IF (impl_s==1) THEN
373 1 intbuf_tab%IRECTM,intbuf_tab%MSR, intbuf_tab%NSV, intbuf_tab%IRTLM,
374 2 num_imp, ns_imp, ne_imp, ans,
375 3 lft, llt, nft)
376 ENDIF
377 IF(fric==0.AND.mfrot==0)GOTO 150
378 IF(igimp==0)GOTO 150
379 ipari(29) = 1
380 CALL i5fri3(lft ,llt ,nft ,ipari ,x ,a ,
381 2 intbuf_tab%IRECTM,intbuf_tab%MSR,intbuf_tab%NSV,intbuf_tab%IRTLM,
382 3 nty ,intbuf_tab%CSTS,intbuf_tab%IRTLOM,intbuf_tab%FRICOS,
383 4 fric ,1 ,fsav ,fskyi ,
384 5 isky ,fcont ,v ,intbuf_tab%VARIABLES(4),
385 6 intbuf_tab%FRIC_P,intbuf_tab%XFILTR,intbuf_tab%FTSAV,ftcont,h3d_data ,
386 7 n1 ,n2 ,
387 7 n3 ,ix11 ,ix12 ,ix13 ,ix14 ,
388 8 xp ,yp ,zp ,ssc ,ttc ,
389 9 xface ,stif ,h1 ,h2 ,h3 ,
391 150 CONTINUE
392
393 ELSEIF(nty==6)THEN
394
395 ELSEIF(nty==7.OR.nty==22)THEN
396
397 ELSEIF(nty==8)THEN
398
399 180 CONTINUE
400
401
402 ENDIF
403
404 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 i3for3(lft, llt, nft, e, msr, nsv, irtl, stf, stfn, ibc, icodt, imast, fsav, igimp, fskyi, isky, fcont, h3d_data, n1, n2, n3, ix1, ix2, ix3, ix4, ans, thk, h1, h2, h3, h4, xface, stif, fni, fxi, fyi, fzi, fx1, fx2, fx3, fx4, fy1, fy2, fy3, fy4, fz1, fz2, fz3, fz4)
subroutine i3fri3(lft, llt, nft, x, e, irect, msr, nsv, irtl, nty, cst, irtlo, fric0, fric, imast, fsav, fskyi, isky, fcont, h3d_data, n1, n2, n3, ix1, ix2, ix3, ix4, h1, h2, h3, h4, ssc, ttc, xface, stif, xp, yp, zp, fni)
subroutine i5fri3(lft, llt, nft, ipari, x, e, irect, msr, nsv, irtl, nty, cst, irtlo, fric0, fric, imast, fsav, fskyi, isky, fcont, v, cf, frot_p, freq, ftsav, ftcont, h3d_data, n1, n2, n3, ix1, ix2, ix3, ix4, xp, yp, zp, ssc, ttc, xface, stif, h1, h2, h3, h4, area, fni)
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 i5for3(lft, llt, nft, e, msr, nsv, irtl, stf, stfn, ibc, icodt, fsav, igimp, fskyi, isky, fcont, fncont, icontact, ibag, iadm, h3d_data, ix1, ix2, ix3, ix4, n1, n2, n3, xface, h1, h2, h3, h4, thk, ans, stif, fni)
subroutine i5impk3(irect, msr, nsv, irtl, num_imp, ns_imp, ne_imp, ans, lft, llt, nft)