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