64
65
66
67 USE timer_mod
68 USE output_mod, ONLY : output_
70 USE mat_elem_mod
72 USE elbufdef_mod
73 use glob_therm_mod
74 USE sensor_mod
75
76
77
78#include "implicit_f.inc"
79
80
81
82#include "mvsiz_p.inc"
83
84
85
86#include "com01_c.inc"
87#include "vect01_c.inc"
88#include "parit_c.inc"
89#include "timeri_c.inc"
90#include "param_c.inc"
91
92
93
94 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
95 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
96 INTEGER,INTENT(IN) :: SNPC
97 INTEGER,INTENT(IN) :: NUMGEO
98 INTEGER,INTENT(IN) ::
99 INTEGER,INTENT(IN) :: STF
100 INTEGER,INTENT(IN) ::
101 INTEGER IXS(*), IPARG(NPARG,*), NPF(*),IADS(8,*),
102 . IPARTS(*),IPM(*),OFFSET,NEL, NELTST, ITYPTST,ITASK,
103 . GRTH(*),IGRTH(*) ,IOUTPRT, NG
104
106 . pm(*), geo(*), x(*), a(*), v(*), ms(*),
107 . veul(*), fv(*),tf(*), bufmat(*),
108 . partsav(*),stifn(*),fsky(*), dt2t,gresav(*), mssa(*), dmels(*)
109 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
110 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
111 TYPE (MAT_ELEM_) ,TARGET ,INTENT(INOUT) :: MAT_ELEM
112 TYPE(TTABLE) TABLE(*)
113 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
114 type (glob_therm_) ,intent(inout) :: glob_therm
115 type (sensors_),INTENT(INOUT) :: SENSORS
116
117
118
119 INTEGER I,LCO,IFLAG,IPT,IBI
120 INTEGER NC(8,MVSIZ),MXT(MVSIZ),NGL(MVSIZ),PID(MVSIZ)
122 . fbi
124 . xloc(mvsiz,8), yloc(mvsiz,8), zloc(mvsiz,8),
125 . vxloc(mvsiz,8),vyloc(mvsiz,8),vzloc(mvsiz,8),
126 . px1(mvsiz,8),px2(mvsiz,8),px3(mvsiz,8),px4(mvsiz,8),
127 . px5(mvsiz,8),px6(mvsiz,8),px7(mvsiz,8),px8(mvsiz,8),
128 . py1(mvsiz,8),py2(mvsiz,8),py3(mvsiz,8),py4(mvsiz,8),
129 . py5(mvsiz,8),py6(mvsiz,8),py7(mvsiz,8),py8(mvsiz,8),
130 . pz1(mvsiz,8),pz2(mvsiz,8),pz3(mvsiz,8),pz4(mvsiz,8),
131 . pz5(mvsiz,8),pz6(mvsiz,8),pz7(mvsiz,8),pz8(mvsiz,8),
132 . d1(mvsiz,8), d2(mvsiz,8), d3(mvsiz,8), d4(mvsiz,8),
133 . d5(mvsiz,8), d6(mvsiz,8),
134 . volgp(mvsiz,8), voln(mvsiz),deltax(mvsiz), vd2(mvsiz),
135 . wxx(mvsiz,8),wyy(mvsiz,8),wzz(mvsiz,8),dvol(mvsiz),
136 . rho0(mvsiz), sti(mvsiz),gama(mvsiz,6), off(mvsiz),
137 . vgxa(mvsiz),vgya(mvsiz),vgza(mvsiz), vga2(mvsiz),
138 . xgxa(mvsiz),xgya(mvsiz),xgza(mvsiz),
139 . xgxya(mvsiz),xgyza(mvsiz),xgzxa(mvsiz),
140 . xgxa2(mvsiz),xgya2(mvsiz),xgza2(mvsiz)
141
143 . r11(mvsiz),r12(mvsiz),r13(mvsiz),
144 . r21(mvsiz),r22(mvsiz),r23(mvsiz),
145 . r31(mvsiz),r32(mvsiz),r33(mvsiz)
147 my_real :: f11(mvsiz),f12(mvsiz),f13(mvsiz),f14(mvsiz),
148 . f15(mvsiz), f16(mvsiz), f17(mvsiz), f18(mvsiz), f21(mvsiz),
149 . f22(mvsiz), f23(mvsiz), f24(mvsiz), f25(mvsiz), f26(mvsiz),
150 . f27(mvsiz), f28(mvsiz), f31(mvsiz), f32(mvsiz), f33(mvsiz),
151 . f34(mvsiz), f35(mvsiz), f36(mvsiz), f37(mvsiz), f38(mvsiz)
152
153
154
156 . DIMENSION(:), POINTER :: eint
157
158 TYPE(G_BUFEL_) ,POINTER :: GBUF
159 TYPE(L_BUFEL_) ,POINTER :: LBUF
160
161 gbuf => elbuf_str%GBUF
162
163 lco=1+11*nft
164
165
166
167
168 IF (jcvt==0) THEN
170 1 gbuf%OFF,off, x, v,
171 2 ixs(lco),xloc, yloc, zloc,
172 3 vxloc, vyloc, vzloc, mxt,
173 4 nc, ngl, pid, nel)
174 ELSE
175 CALL sr8coor3(gbuf%OFF,off,x,v,ixs(lco),
176 . xloc,yloc,zloc,vxloc,vyloc,vzloc,
177 . mxt,nc,ngl,pid,
178 . r11, r12, r13, r21, r22, r23, r31, r32, r33,
179 . ioutprt,vgxa,vgya,vgza,vga2,nel,
180 . xgxa,xgya,xgza,xgxa2,xgya2,xgza2,
181 . xgxya,xgyza,xgzxa,iparg(1,ng))
182 ENDIF
183
184
185
186
188 1 xloc, yloc, zloc, px1,
189 2 px2, px3, px4, px5,
190 3 px6, px7, px8, py1,
191 4 py2, py3, py4, py5,
192 5 py6, py7, py8, pz1,
193 6 pz2, pz3, pz4, pz5,
194 7 pz6, pz7, pz8, volgp,
195 8 voln, deltax, ngl, off,
196 9 nel)
198 1 pm, gbuf%VOL, gbuf%RHO, gbuf%EINT,
199 2 mxt, voln, rho0, dvol,
200 3 vd2, nel)
201
202 DO ipt = 1,npt
203 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,ipt)
205 1 vxloc, vyloc, vzloc, px1,
206 2 px2, px3, px4, px5,
207 3 px6, px7, px8, py1,
208 4 py2, py3, py4, py5,
209 5 py6, py7, py8, pz1,
210 6 pz2, pz3, pz4, pz5,
211 7 pz6, pz7, pz8, ipt,
212 8 d1, d2, d3, d4,
213 9 d5, d6, wxx(1,ipt),wyy(1,ipt),
214 a wzz(1,ipt),nel, jcvt)
216 1 lbuf%SIG, wxx(1,ipt),wyy(1,ipt),wzz(1,ipt),
217 2 nel, jcvt)
218 ENDDO
219
220
221
222 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
223 CALL mmain8(timers, output, pm ,geo ,elbuf_str,mat_elem ,
224 2 ixs ,iparg
225 3 npf ,bufmat,sti ,x ,d1 ,
226 4 d2 ,d3 ,d4 ,d5 ,d6 ,
227 5 volgp,deltax,voln ,dvol ,vd2 ,
228 6 rho0 ,mxt ,nc ,ngl ,fv ,
229 7 nel ,wxx ,wyy ,wzz ,pid ,
230 8 dt2t ,neltst,ityptst,r11 ,r21 ,
231 9 r31 ,r12 ,r22 ,r32 ,r13 ,
232 a r23 ,r33 ,off ,ipm ,gama ,
233 b mssa ,dmels ,table ,ssp ,itask ,
234 c svis ,snpc ,numgeo ,sbufmat ,stf ,
235 d ntable)
236 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,35)
237
238
239
240 iflag=mod(ncycle,ncpri)
241 IF(ioutprt>0)THEN
242
243
244 IF (mtn == 11) THEN
245 eint => elbuf_str%GBUF%EINS(1:nel)
246 ELSE
247 eint => elbuf_str%GBUF%EINT(1:nel)
248 ENDIF
249 IF (jcvt==0)THEN
250 CALL s8bilan(partsav,eint,gbuf%RHO,gbuf%RK,gbuf%VOL,
251 . voln,vxloc,vyloc,vzloc,iparts,
252 . gresav,grth,igrth,xloc,yloc,zloc,itask,iparg(1,ng),sensors)
253 ELSE
254 CALL sr8bilan(partsav,eint,gbuf%RHO,gbuf%RK,gbuf%VOL,
255 . voln,vgxa,vgya,vgza,vga2,iparts,
256 . gresav,grth,igrth,xgxa,xgya,xgza,
257 . xgxa2,xgya2,xgza2,xgxya,xgyza,xgzxa,itask,iparg(1,ng),sensors)
258 ENDIF
259 ENDIF
260
261
262
264 1 gbuf%OFF,off, nel, ismstr)
265
266
267
268 CALL s8fint3(elbuf_str%BUFLY(1) ,volgp,gbuf%QVIS,
269 . px1,px2,px3,px4,px5,px6,px7,px8,
270 . py1,py2,py3,py4,py5,py6,py7,py8,
271 . pz1,pz2,pz3,pz4,pz5,pz6,pz7,pz8,nel,
272 . f11, f12, f13, f14,
273 . f15, f16, f17, f18, f21,
274 . f22, f23, f24, f25, f26,
275 . f27, f28, f31, f32, f33,
276 . f34, f35, f36, f37, f38,
277 . svis)
278
279
280
281
282 IF (jcvt==1) THEN
284 1 r11, r21, r31, r12,
285 2 r22, r32, r13, r23,
286 3 r33, f11, f12, f13,
287 4 f14, f15, f16, f17,
288 5 f18, f21, f22, f23,
289 6 f24, f25, f26, f27,
290 7 f28, f31, f32, f33,
291 8 f34, f35, f36, f37,
292 9 f38, nel)
293 ENDIF
294
295
296
297 IF(iparit==0)THEN
299 1 gbuf%OFF,a, nc, stifn,
300 2 sti, f11, f21, f31,
301 3 f12, f22, f32, f13,
302 4 f23, f33, f14, f24,
303 5 f34, f15, f25, f35,
304 6 f16, f26, f36, f17,
305 7 f27, f37, f18, f28,
306 8 f38, nel)
307 ELSE
308 fbi = zero
310 1 gbuf%OFF,sti, fsky, fsky,
311 2 iads, f11, f21, f31,
312 3 f12, f22, f32, f13,
313 4 f23, f33, f14, f24,
314 5 f34, f15, f25, f35,
315 6 f16, f26, f36, f17,
316 7 f27, f37, f18, f28,
317 8 f38, ibi, ibi, ibi,
318 9 ibi, ibi, ibi, ibi,
319 a ibi, fbi, fbi, fbi,
320 b fbi, fbi, fbi, fbi,
321 c fbi, fbi, fbi, fbi,
322 d fbi, fbi, fbi, fbi,
323 e fbi, fbi, fbi, fbi,
324 f fbi, fbi, fbi, fbi,
325 g fbi, fbi, fbi, fbi,
326 h fbi, fbi, fbi, fbi,
327 i nel, nft, jthe, isrot,
328 j ipartsph,glob_therm%NODADT_THERM)
329 ENDIF
330
331
332 RETURN
subroutine mmain8(timers, output, pm, geo, elbuf_str, mat_elem, ix, iparg, v, tf, npf, bufmat, stifn, x, d1, d2, d3, d4, d5, d6, volgp, deltax, voln, dvol, vd2, rho0, mat, nc, ngl, fv, nel, wxx, wyy, wzz, pid, dt2t, neltst, ityptst, rx, ry, rz, sx, sy, sz, tx, ty, tz, off, ipm, gama, mssa, dmels, table, ssp, itask, svis, snpc, numgeo, sbufmat, stf, ntable)
subroutine s8bilan(partsav, eint, rho, rk, vol, vnew, vx, vy, vz, iparts, gresav, grth, igrth, x, y, z, itask, iparg, sensors)
subroutine s8coor3(offg, off, x, v, ixs, xloc, yloc, zloc, vxloc, vyloc, vzloc, mxt, nc, ngl, pid, nel)
subroutine s8cumu3(offg, e, nc, stifn, sti, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nel)
subroutine s8defo3(vx, vy, vz, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, ipt, d1, d2, d3, d4, d5, d6, wxx, wyy, wzz, nel, jcvt)
subroutine s8deri3(x, y, z, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, vlinc, vol, deltax, ngl, off, nel)
subroutine s8fint3(bufly, volgp, qvis, px1, px2, px3, px4, px5, px6, px7, px8, py1, py2, py3, py4, py5, py6, py7, py8, pz1, pz2, pz3, pz4, pz5, pz6, pz7, pz8, nel, f11, f12, f13, f14, f15, f16, f17, f18, f21, f22, f23, f24, f25, f26, f27, f28, f31, f32, f33, f34, f35, f36, f37, f38, svis)
subroutine s8lagr3(pm, vol0, rho, eint, mxt, voln, rho0, dvol, vd2, nel)
subroutine s8rota3(sig, wxx, wyy, wzz, nel, jcvt)
subroutine scumu3p(offg, sti, fsky, fskyv, iads, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, f15, f25, f35, f16, f26, f36, f17, f27, f37, f18, f28, f38, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, ar, fr_wave, fr_wav, mx1, my1, mz1, mx2, my2, mz2, mx3, my3, mz3, mx4, my4, mz4, mx5, my5, mz5, mx6, my6, mz6, mx7, my7, mz7, mx8, my8, mz8, them, fthesky, condnsky, conde, nel, nft, jthe, isrot, ipartsph, nodadt_therm)
subroutine smallb3(offg, off, nel, ismstr)
subroutine sr8bilan(partsav, eint, rho, rk, vol, vnew, vxa, vya, vza, va2, iparts, gresav, grth, igrth, xx, yy, zz, xx2, yy2, zz2, xy, yz, zx, itask, iparg, sensors)
subroutine sr8coor3(offg, off, x, v, ixs, xloc, yloc, zloc, vxloc, vyloc, vzloc, mxt, nc, ngl, pid, r11, r12, r13, r21, r22, r23, r31, r32, r33, ioutprt, vgax, vgay, vgaz, vga2, nel, xgax, xgay, xgaz, xgxa2, xgya2, xgza2, xgxya, xgyza, xgzxa, iparg)
subroutine srrota3(r11, r12, r13, r21, r22, r23, r31, r32, r33, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8)
subroutine startime(event, itask)
subroutine stoptime(event, itask)