53
54
55
56 USE output_mod
57 USE intbufdef_mod
58 USE int8_mod
60
61
62
63#include "implicit_f.inc"
64
65
66
67#include "com01_c.inc"
68#include "com04_c.inc"
69#include "com08_c.inc"
70#include "parit_c.inc"
71
72
73
74 type(output_), intent(inout) :: output
75 INTEGER IPARI(*), ICODT(*), ISKY(*),
76 . ICONTACT(*) ,NIN
77 INTEGER ITAB(*),
78 . TAGNCONT(NLOADP_HYD_INTER,NUMNOD),
79 . KLOADPINTER(NINTER+1),LOADPINTER(NINTER*NLOADP_HYD),
80 . LOADP_HYD_INTER(NLOADP_HYD)
81
83 . x(*), a(3,*), fsav(*), v(3,*), ms(*),
84 . fskyi(lskyi,nfskyi),fcont(3,*), fncont(3,*), ftcont(3,*),
85 . rcontact(*),stifn(*),pskids(*)
86
87 TYPE(INTBUF_STRUCT_) INTBUF_TAB
88 TYPE(INT8_STRUCT_) T8
89 TYPE(H3D_DATABASE) :: H3D_DATA
90
91
92
93 INTEGER I
94 INTEGER, DIMENSION(:,:), ALLOCATABLE ::
95 . TAB_RMAX_UID
96 INTEGER, DIMENSION(:), ALLOCATABLE ::
97 . HAS_MOVED,
98 . INDEX_IN_COMM,
99 . IX1, IX2, IX3,IX4,
100 . NSV_A,
101 . NSV2,
102 . IRTL_A
103
104 my_real,
DIMENSION(:),
ALLOCATABLE :: tab_rmax
105 my_real,
DIMENSION(:),
ALLOCATABLE :: distance,dist
106 my_real,
DIMENSION(:),
ALLOCATABLE :: x1,y1,z1,x2,y2,z2,x3,y3,z3
107 my_real,
DIMENSION(:),
ALLOCATABLE :: x4,y4,z4
108 my_real,
DIMENSION(:),
ALLOCATABLE :: xi,xi_a,yi,yi_a,zi,zi_a
109 my_real,
DIMENSION(:),
ALLOCATABLE :: xp,yp,zp,n1,n2,n3
110 my_real,
DIMENSION(:),
ALLOCATABLE :: ans,ssc,ttc
111 my_real,
DIMENSION(:),
ALLOCATABLE :: h1,h2,h3,h4
112 my_real,
DIMENSION(:),
ALLOCATABLE :: face,face_a,stif
113 my_real,
DIMENSION(:),
ALLOCATABLE :: x0,xx1,xx2,xx3,xx4
114 my_real,
DIMENSION(:),
ALLOCATABLE :: y0,yy1,yy2,yy3,yy4
115 my_real,
DIMENSION(:),
ALLOCATABLE :: z0,zz1,zz2,zz3,zz4
116 my_real,
DIMENSION(:),
ALLOCATABLE :: xi1,xi2,xi3,xi4
117 my_real,
DIMENSION(:),
ALLOCATABLE :: yi1,yi2,yi3,yi4
118 my_real,
DIMENSION(:),
ALLOCATABLE :: zi1,zi2,zi3,zi4
119 my_real,
DIMENSION(:),
ALLOCATABLE :: xn1,xn2,xn3,xn4
120 my_real,
DIMENSION(:),
ALLOCATABLE :: yn1,yn2,yn3,yn4
121 my_real,
DIMENSION(:),
ALLOCATABLE :: zn1,zn2,zn3,zn4
123 my_real,
DIMENSION(:),
ALLOCATABLE :: distlin
124 INTEGER , NCIMP, NRTM4, NOINT,IGIMP,NINSKID
125 INTEGER MFROT,IADM,IFORM,IFT0,IFLINEAR
126
128 . startt, fric, gap, stopt,
129 . visc,viscf,fnor,depth,fric_last,fnor_last
130 INTEGER :: , NTY, NSN
131 INTEGER :: LFT, LLT, NFT
132
133
134 nsn = ipari(5)
135 nmn = ipari(6)
136 nty = ipari(7)
137 ibc =ipari(11)
138 ncimp =ipari(13)
139 nrtm4 =ipari(14)
140 noint =ipari(15)
141 mfrot =ipari(30)
142 ibag =ipari(32)
143 iadm =ipari(44)
144 iform=ipari(48)
145 ift0 =ipari(50)
146 iflinear = ipari(49)
147
148 startt=intbuf_tab%VARIABLES(3)
149 stopt =intbuf_tab%VARIABLES(11)
150 IF(startt>tt) RETURN
151 IF(tt>stopt) RETURN
152
153 fric =intbuf_tab%VARIABLES(1)
154 gap =intbuf_tab%VARIABLES(2)
155 visc =intbuf_tab%VARIABLES(14)
156 viscf=intbuf_tab%VARIABLES(15)
157 fnor =intbuf_tab%VARIABLES(4)
158 depth=intbuf_tab%VARIABLES(5)
159 fric_last =intbuf_tab%VARIABLES(6)
160 fnor_last =intbuf_tab%VARIABLES(7)
161
162
163 IF(nty==3)THEN
164
165 ELSEIF(nty==8)THEN
166 ALLOCATE(
167 . distance(nsn),
168 . dist(nsn),
169 . ix1(nsn),
170 . ix2(nsn),
171 . ix3(nsn),
172 . ix4(nsn),
173 . x1(nsn), x2(nsn), x3(nsn), x4(nsn),
174 . y1(nsn), y2(nsn), y3(nsn), y4(nsn),
175 . z1(nsn), z2(nsn), z3(nsn), z4(nsn),
176 . xi(nsn), xi_a(nsn),
177 . yi(nsn), yi_a(nsn),
178 . zi(nsn), zi_a(nsn),
179 . xp(nsn), n1(nsn),
180 . yp(nsn), n2(nsn),
181 . zp(nsn), n3(nsn),
182 . ans(nsn),ssc(nsn),ttc(nsn),
183 . h1(nsn),h2(nsn),h3(nsn),h4(nsn),
184 . face(nsn),face_a(nsn),
185 . stif(nsn),
186 . x0(nsn), xx1(nsn), xx2(nsn),
187 . y0(nsn), yy1(nsn), yy2(nsn),
188 . z0(nsn), zz1(nsn), zz2(nsn),
189 . xx3(nsn), xx4(nsn), xi1(nsn),
190 . yy3(nsn), yy4(nsn), yi1(nsn),
191 . zz3(nsn), zz4(nsn), zi1(nsn),
192 . xi2(nsn), xi3(nsn), xi4(nsn),
193 . yi2(nsn), yi3(nsn), yi4(nsn),
194 . zi2(nsn), zi3(nsn), zi4(nsn),
195 . xn1(nsn), xn2(nsn), xn3(nsn), xn4(nsn),
196 . yn1(nsn), yn2(nsn), yn3(nsn), yn4(nsn),
197 . zn1(nsn), zn2(nsn), zn3(nsn), zn4(nsn),
198 . thk(nsn),
area(nsn),alp(nsn),
199 . has_moved(nsn),
200 . tab_rmax(nsn),tab_rmax_uid(4,nsn),
201 . irtl_a(nsn),nsv_a(nsn),nsv2(nsn),
202 . index_in_comm(nmn),distlin(nsn))
203
204 dist = 0
205 distlin(1:nsn) = zero
206
207 nft=0
208 lft=1
209 llt=nsn
210 IF(nspmd > 1) THEN
211
212 CALL spmd_i8_index(nmn,t8%SPMD_COMM_PATTERN,index_in_comm,t8%S_COMM)
213
214 IF(t8%IS_ACTIVATED == 0) THEN
216 . intbuf_tab%ILOCS,intbuf_tab%NSV,
217 . itab,t8%BUFFER,t8%SPMD_COMM_PATTERN,index_in_comm)
218
220 . itab,t8%BUFFER,t8%SPMD_COMM_PATTERN,index_in_comm)
221 t8%IS_ACTIVATED = 1
222 ENDIF
223
224 ENDIF
225
227 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
228 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%NSEGM, xi,
229 3 yi, zi, face, itab,
230 4 distance, iflinear, distlin, nsn,
231 5 lft, llt, nft)
232 IF(nspmd > 1) THEN
233
234 CALL spmd_i8_iloc(intbuf_tab%ILOCS, intbuf_tab%MSR,itab,t8%BUFFER,
235 . distance)
236
238 . intbuf_tab%ILOCS,intbuf_tab%NSV,
239 . itab,t8%BUFFER,t8%SPMD_COMM_PATTERN,index_in_comm)
240
242 . itab,t8%BUFFER,t8%SPMD_COMM_PATTERN,index_in_comm)
243 ENDIF
245 1 x, intbuf_tab%IRECTM,intbuf_tab%LMSR, intbuf_tab%MSR,
246 2 intbuf_tab%NSV, intbuf_tab%ILOCS, intbuf_tab%IRTLM, intbuf_tab%NSEGM,
247 3 face, nsn, itab, has_moved,
248 4 tab_rmax, tab_rmax_uid, lft, llt,
249 5 nft)
250
251 IF(nspmd > 1) THEN
253 . tab_rmax,tab_rmax_uid,
254 . itab,t8%BUFFER)
255
256 ENDIF
257
258 nft=0
259 lft=1
260 llt=0
261 nsv_a(1:nsn) = 0
262 irtl_a(1:nsn) = 0
263 nsv2(1:nsn) = 0
264 xi_a(1:nsn) = 0
265 yi_a(1:nsn) = 0
266 zi_a(1:nsn) = 0
267 face_a(1:nsn) = 0
268
269
270
271
272 DO i = 1,nsn
273 IF(intbuf_tab%ILOCS(i) > -1 .AND.
274 . intbuf_tab%IRTLM(i) > 0) THEN
275 llt = llt +1
276 nsv2(llt) = i
277 nsv_a(llt) = intbuf_tab%NSV(i)
278 irtl_a(llt) = intbuf_tab%IRTLM(i)
279 xi_a(llt) = xi(i)
280 yi_a(llt) = yi(i)
281 zi_a(llt) = zi(i)
282 face_a(llt) = face(i)
283
284 ELSEIF (iform==2) THEN
285
286 intbuf_tab%FTSAVX(i) = 0
287 intbuf_tab%FTSAVY(i) = 0
288 intbuf_tab%FTSAVZ(i) = 0
289 ENDIF
290 ENDDO
291
292 ninskid = 0
293 IF(h3d_data%N_SCAL_SKID > 0) THEN
294 ninskid = h3d_data%N_SKID_INTER(nin)
295 ENDIF
296
298 1 x, intbuf_tab%IRECTM,intbuf_tab%MSR, nsv_a,
299 2 irtl_a, ix1, ix2, ix3,
300 3 ix4, x1, y1, z1,
301 4 x2, y2, z2, x3,
302 5 y3, z3, x4, y4,
303 6 z4, lft, llt, nft)
305 1 x1, y1, z1, x2,
306 2 y2, z2, x3, y3,
307 3 z3, x4, y4, z4,
308 4 xi_a, yi_a, zi_a, n1,
309 5 n2, n3, ans, ssc,
310 6 ttc, face_a, x0, y0,
311 7 z0, xx1, yy1, zz1,
312 8 xx2, yy2, zz2, xx3,
313 9 yy3, zz3, xx4, yy4,
314 a zz4, xi1, yi1, zi1,
315 b xi2, yi2, zi2, xi3,
316 c yi3, zi3, xi4, yi4,
317 d zi4, xn1, yn1, zn1,
318 e xn2, yn2, zn2, xn3,
319 f yn3, zn3, xn4, yn4,
320 g zn4,
area, lft, llt)
321
323 1 gap, thk,
area, alp,
324 2 lft, llt)
326 1 igimp, nty, dist, x1,
327 2 y1, z1, x2, y2,
328 3 z2, x3, y3, z3,
329 4 x4, y4, z4, xi_a,
330 5 yi_a, zi_a, xp, yp,
331 6 zp, n1, n2, n3,
332 7 ans, ssc, ttc, h1,
333 8 h2, h3, h4, face_a,
334 9 alp, lft, llt)
335
336 CALL i8for3(output, lft ,llt ,nft ,a ,
337 2 intbuf_tab%MSR,nsv_a,irtl_a,intbuf_tab%STFM,
338 . intbuf_tab%NSV,nsv2, intbuf_tab%ILOCS,
339 3 intbuf_tab%STFNS,ibc ,icodt ,fsav ,igimp ,
340 4 x ,v ,ms ,fric ,nsn ,
341 5 fskyi ,isky ,fcont ,rcontact ,iform ,
342 6 intbuf_tab%FTSAVX,intbuf_tab%FTSAVY,intbuf_tab%FTSAVZ,visc ,fnor ,
343 7 depth ,dist ,intbuf_tab%GAPN,intbuf_tab%STF8,
344 8 stifn ,fncont ,ftcont ,itab, ift0,
345 9 ix1 ,ix2 ,ix3 ,ix4,
346 a xi_a ,yi_a ,zi_a,
347 b n1 ,n2 ,n3,
348 c ans , ssc , ttc,
349 d h1 , h2 , h3 , h4,
350 e face_a ,stif , xx3,
351 g yy3 , zz3 , xx4,
352 h yy4 , zz4 , xi1,
353 i yi1 , zi1 , xi2,
354 j yi2 , zi2 , xi3,
355 k yi3 , zi3 , xi4,
356 l thk ,h3d_data , ninskid,
357 m h3d_data%N_SCAL_SKID, pskids,intbuf_tab%IRECTM,nin,
358 n tagncont ,kloadpinter,loadpinter ,loadp_hyd_inter,
359 o iflinear ,fric_last,fnor_last,distlin)
360
361
362
363 DEALLOCATE(
364 . distance,
365 . dist,
366 . ix1,
367 . ix2,
368 . ix3,
369 . ix4,
370 . x1, x2, x3, x4,
371 . y1, y2, y3, y4,
372 . z1, z2, z3, z4,
373 . xi, xi_a,
374 . yi, yi_a,
375 . zi, zi_a,
376 . xp, n1,
377 . yp, n2,
378 . zp, n3,
379 . ans,ssc,ttc,
380 . h1,h2,h3,h4,
381 . face,face_a,
382 . stif,
383 . x0, xx1, xx2,
384 . y0, yy1, yy2,
385 . z0, zz1, zz2,
386 . xx3, xx4, xi1,
387 . yy3, yy4, yi1,
388 . zz3, zz4, zi1,
389 . xi2, xi3, xi4,
390 . yi2, yi3, yi4,
391 . zi2, zi3, zi4,
392 . xn1, xn2, xn3, xn4,
393 . yn1, yn2, yn3, yn4,
394 . zn1, zn2, zn3, zn4,
396 . has_moved,
397 . tab_rmax,tab_rmax_uid,
398 . irtl_a,nsv_a,nsv2,
399 . index_in_comm,
400 . distlin)
401
402 ENDIF
403
404 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine i8cor3(x, irect, msr, nsv, irtl, ix1, ix2, ix3, ix4, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, lft, llt, nft)
subroutine i8cst3(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, xi, yi, zi, n1, n2, n3, ans, ssc, ttc, xface, x0, y0, z0, xx1, yy1, zz1, xx2, yy2, zz2, xx3, yy3, zz3, xx4, yy4, zz4, xi1, yi1, zi1, xi2, yi2, zi2, xi3, yi3, zi3, xi4, yi4, zi4, xn1, yn1, zn1, xn2, yn2, zn2, xn3, yn3, zn3, xn4, yn4, zn4, area, lft, llt)
subroutine i8dis3(igimp, nty, dist, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4, xi, yi, zi, xp, yp, zp, n1, n2, n3, ans, ssc, ttc, h1, h2, h3, h4, xface, alp, lft, llt)
subroutine i8for3(output, lft, llt, nft, e, msr, nsv, irtl, stf, nsvglo, nsv2, iloc, stfn, ibc, icodt, fsav, igimp, x, v, ms, fmax, nsn, fskyi, isky, fcont, rcontact, iform, ftsavx, ftsavy, ftsavz, visc, fnor, depth, dist, gapn, slopen, stifn, fncont, ftcont, itab, ift0, ix1, ix2, ix3, ix4, xi, yi, zi, n1, n2, n3, ans, ssc, ttc, h1, h2, h3, h4, xface, stif, fni, fxi, fyi, fzi, fx1, fy1, fz1, fx2, fy2, fz2, fx3, fy3, fz3, fx4, fy4, fz4, thk, h3d_data, ninskid, ninterskid, pskids, irect, nin, tagncont, kloadpinter, loadpinter, loadp_hyd_inter, iflinear, fric_last, fnor_last, distlin)
subroutine i8gap3(gap, thk, area, alp, lft, llt)
subroutine i8loc3(x, irect, lmsr, msr, nsv, iloc, nseg, xi, yi, zi, xface, itab, distance, iflinear, distlin, nsn, lft, llt, nft)
subroutine i8msr3(x, irect, lmsr, msr, nsv, iloc, irtl, nseg, xface, nbsecnds, itab, has_moved, tab_rmax, tab_rmax_uid, lft, llt, nft)