48
49
50
52 USE elbufdef_mod
53 USE multi_fvm_mod
54
55
56
57#include "implicit_f.inc"
58#include "comlock.inc"
59
60
61
62#include "mvsiz_p.inc"
63
64
65
66#include "vect01_c.inc"
67#include "com01_c.inc"
68#include "com08_c.inc"
69#include "parit_c.inc"
70#include "param_c.inc"
71#include "task_c.inc"
72
73
74
75 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP), INTENT(IN) :: ELBUF_TAB
76 INTEGER, INTENT(IN) :: NODADT_THERM
77 INTEGER, INTENT(IN) :: ITASK, IPARG(NPARG, *), IXS(NIXS, *), IXQ(NIXQ, *),
78 . IADS(8, *)
79
81 . xgrid(3, *), wgrid(3, *), veul(*), vel(3, *), timestep
84 . ms(*), msnf(*)
85 my_real,
INTENT(INOUT) :: fskym(*), stifn(*), fsky(8,lsky),
86 . condn(*), condnsky(*)
87 TYPE(MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
88
89
90
91
92 INTEGER :: I, II, K, , ISTRA, ISOLNOD, NSG, IPLA, NG, NEL, NVC
94 . pres(mvsiz)
95 my_real ::
norm(3, 6, mvsiz), surf(6, mvsiz), wfac(3, 6, mvsiz)
97 . xg(mvsiz, 8, 3)
99 . xx(3), yy(3)
101 . sti(mvsiz), fr_wav(mvsiz), them(mvsiz,8), conde(mvsiz)
103 . mx1(mvsiz),my1(mvsiz),mz1(mvsiz),
104 . mx2(mvsiz),my2(mvsiz),mz2(mvsiz),
105 . mx3(mvsiz),my3(mvsiz),mz3(mvsiz),
106 . mx4(mvsiz),my4(mvsiz),mz4(mvsiz),
107 . mx5(mvsiz),my5(mvsiz),mz5(mvsiz),
108 . mx6(mvsiz),my6(mvsiz),mz6(mvsiz),
109 . mx7(mvsiz),my7(mvsiz),mz7(mvsiz),
110 . mx8(mvsiz),my8(mvsiz),mz8(mvsiz),
111 . f11(mvsiz),f21(mvsiz),f31(mvsiz),
112 . f12(mvsiz),f22(mvsiz),f32(mvsiz),
113 . f13(mvsiz),f23(mvsiz),f33(mvsiz),
114 . f14(mvsiz),f24(mvsiz),f34(mvsiz),
115 . f15(mvsiz),f25(mvsiz),f35(mvsiz),
116 . f16(mvsiz),f26(mvsiz),f36(mvsiz),
117 . f17(mvsiz),f27(mvsiz),f37(mvsiz),
118 . f18(mvsiz),f28(mvsiz),f38(mvsiz),
119 . dmass1(mvsiz), dmass2(mvsiz), dmass3(mvsiz), dmass4(mvsiz),
120 . dmass5(mvsiz), dmass6(mvsiz), dmass7(mvsiz), dmass8(mvsiz),
121 . x(3), xc(3)
122 integer
123 . nc1(mvsiz), nc2(mvsiz), nc3(mvsiz), nc4(mvsiz),
124 . nc5(mvsiz), nc6(mvsiz), nc7(mvsiz), nc8(mvsiz)
125 INTEGER :: IBID
127 . ar, fr_wave, fthe, fthesky, ffsky, t1,t2,t3
128
129 TYPE(G_BUFEL_) ,POINTER :: GBUF
130
131
132
133
134
135 DO ng=itask+1,ngroup,nthread
136
137 IF (tt > zero .AND. iparg(76, ng) == 1) cycle
138 IF(iparg(8,ng) /= 1) THEN
139
141 2 mtn ,nel ,nft ,iad ,ity ,
142 3 npt ,jale ,ismstr ,jeul ,jtur ,
143 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
144 5 nvaux ,jpor ,jcvt ,jclose ,ipla ,
145 6 irep ,iint ,igtyp ,israt ,isrot ,
146 7 icsen ,isorth ,isorthg ,ifailure,jsms )
147 IF (mtn == 151) THEN
148 gbuf => elbuf_tab(ng)%GBUF
149 IF(jlag /= 1 .AND. ity<=2) THEN
150 nsg =iparg(10,ng)
151 nvc =iparg(19,ng)
152 isolnod=iparg(28,ng)
153 istra =iparg(44,ng)
154 jsph =0
155 jplasol=ipla
156 isph2sol = 0
157 ipartsph = iparg(69,ng)
158 lft=1
159 llt=nel
160 nf1=nft+1
161 IF (ity == 1 .AND. isolnod /= 4) THEN
162
163 gbuf => elbuf_tab(ng)%GBUF
164
165 CALL snorm3(nel, nft, jale, ixs, xgrid, wgrid,
166 .
norm(1:3, 1:6, 1:nel), wfac(1:3, 1:6, 1:nel), surf(1:6, 1:nel))
167
168 f11(:) = zero ; f21(:) = zero ; f31(:) = zero
169 f12(:) = zero ; f22(:) = zero ; f32(:) = zero
170 f13(:) = zero ; f23(:) = zero ; f33(:) = zero
171 f14(:) = zero ; f24(:) = zero ; f34(:) = zero
172 f15(:) = zero ; f25(:) = zero ; f35(:) = zero
173 f16(:) = zero ; f26(:) = zero ; f36(:) = zero
174 f17(:) = zero ; f27(:) = zero ; f37(:) = zero
175 f18(:) = zero ; f28(:) = zero ; f38(:) = zero
176
177 DO ii = lft, llt
178 i = ii + nft
179 nc1(ii) = ixs(2, i)
180 nc2(ii) = ixs(3, i)
181 nc3(ii) = ixs(4, i)
182 nc4(ii) = ixs(5, i)
183 nc5(ii) = ixs(6, i)
184 nc6(ii) = ixs(7, i)
185 nc7(ii) = ixs(8, i)
186 nc8(ii) = ixs(9, i)
187
188 pres(ii) = third * (gbuf%SIG(ii) + gbuf%SIG(ii + nel) + gbuf%SIG(ii + 2 * nel))
189
190 f11(ii) = f11(ii) - fourth * pres(ii) *
191 . (
norm(1, 1, ii) * surf(1, ii) +
norm(1, 4, ii) * surf(4, ii) +
norm(1, 6, ii) * surf(6, ii))
192 f21(ii) = f21(ii) - fourth * pres(ii) *
193 . (
norm(2, 1, ii) * surf(1, ii) +
norm(2, 4, ii) * surf(4, ii) +
norm(2, 6, ii) * surf(6, ii))
194 f31(ii) = f31(ii) - fourth * pres(ii) *
195 . (
norm(3, 1, ii) * surf(1, ii) +
norm(3, 4, ii) * surf(4, ii) +
norm(3, 6, ii) * surf(6, ii))
196
197 f12(ii) = f12(ii) - fourth * pres(ii) *
198 . (
norm(1, 1, ii) * surf(1, ii) +
norm(1, 4, ii) * surf(4, ii) +
norm(1, 5, ii) * surf(5, ii))
199 f22(ii) = f22(ii) - fourth * pres(ii) *
200 . (
norm(2, 1, ii) * surf(1, ii) +
norm(2, 4, ii) * surf(4, ii) +
norm(2, 5, ii) * surf(5, ii))
201 f32(ii) = f32(ii) - fourth * pres(ii) *
202 . (
norm(3, 1, ii) * surf(1, ii) +
norm(3, 4, ii) * surf(4, ii) +
norm(3, 5, ii) * surf(5, ii))
203
204 f13(ii) = f13(ii) - fourth * pres(ii) *
205 . (
norm(1, 1, ii) * surf(1, ii) +
norm(1, 2, ii) * surf(2, ii) +
norm(1, 5, ii) * surf(5, ii))
206 f23(ii) = f23(ii) - fourth * pres(ii) *
207 . (
norm(2, 1, ii) * surf(1, ii) +
norm(2, 2, ii) * surf(2, ii) +
norm(2, 5, ii) * surf(5, ii))
208 f33(ii) = f33(ii) - fourth * pres(ii) *
209 . (
norm(3, 1, ii) * surf(1, ii) +
norm(3, 2, ii) * surf(2, ii) +
norm(3, 5, ii) * surf(5, ii))
210
211 f14(ii) = f14(ii) - fourth * pres(ii) *
212 . (
norm(1, 1, ii) * surf(1, ii) +
norm(1, 2, ii) * surf(2, ii) +
norm(1, 6, ii) * surf(6, ii))
213 f24(ii) = f24(ii) - fourth * pres(ii) *
214 . (
norm(2, 1, ii) * surf(1, ii) +
norm(2, 2, ii) * surf(2, ii) +
norm(2, 6, ii) * surf(6, ii))
215 f34(ii) = f34(ii) - fourth * pres(ii) *
216 . (
norm(3, 1, ii) * surf(1, ii) +
norm(3, 2, ii) * surf(2, ii) +
norm(3, 6, ii) * surf(6, ii))
217
218 f15(ii) = f15(ii) - fourth * pres(ii) *
219 . (
norm(1, 3, ii) * surf(3, ii) +
norm(1, 4, ii) * surf(4, ii) +
norm(1, 6, ii) * surf(6, ii))
220 f25(ii) = f25(ii) - fourth * pres(ii) *
221 . (
norm(2, 3, ii) * surf(3, ii) +
norm(2, 4, ii) * surf(4, ii) +
norm(2, 6, ii) * surf(6, ii))
222 f35(ii) = f35(ii) - fourth * pres(ii) *
223 . (
norm(3, 3, ii) * surf(3, ii) +
norm(3, 4, ii) * surf(4, ii) +
norm(3, 6, ii) * surf(6, ii))
224
225 f16(ii) = f16(ii) - fourth * pres(ii) *
227 f26(ii) = f26(ii) - fourth * pres(ii) *
228 . (
norm(2, 3, ii) * surf(3, ii) +
norm(2, 4, ii) * surf
229 f36(ii) = f36(ii) - fourth * pres(ii) *
230 . (
norm(3, 3, ii) * surf(3, ii) +
norm(3, 4, ii) * surf(4, ii) +
norm(3, 5, ii) * surf(5, ii))
231
232 f17(ii) = f17(ii) - fourth * pres(ii) *
233 . (
norm(1, 2, ii) * surf(2, ii) +
norm
234 f27(ii) = f27(ii) - fourth * pres(ii) *
236 f37(ii) = f37(ii) - fourth * pres(ii) *
237 . (
norm(3, 2, ii) * surf(2, ii) +
norm(3, 3, ii) * surf(3, ii) +
norm(3, 5, ii) * surf(5, ii))
238
239 f18(ii) = f18(ii) - fourth * pres(ii) *
240 . (
norm(1, 2, ii) * surf(2, ii) +
norm(1, 3, ii) * surf(3, ii) +
norm(1, 6, ii) * surf(6, ii))
241 f28(ii) = f28(ii) - fourth * pres(ii) *
242 . (
norm(2, 2, ii) * surf(2, ii) +
norm(2, 3, ii) * surf(3, ii) +
norm(2, 6, ii) * surf(6, ii))
243 f38(ii) = f38(ii) - fourth * pres(ii) *
244 . (
norm(3, 2, ii) * surf(2, ii) +
norm(3, 3, ii) * surf(3, ii) +
norm(3, 6, ii) * surf(6, ii))
245 ENDDO
246
247
248
249
250 IF(iparit == 0)THEN
252 1 ms, gbuf%RHO, veul(lveul*nft+44),gbuf%TAG22,
253 2 gbuf%VOL, nc1, nc2, nc3,
254 3 nc4, nc5, nc6, nc7,
255 4 nc8, msnf, nvc, gbuf%OFF,
256 5 ixs, nel, jeul)
257 ELSE
259 1 fskym, gbuf%RHO, veul(lveul*nft+44),gbuf%TAG22,
260 2 gbuf%VOL, iads, gbuf%OFF, ixs,
261 3 nel, nft, jeul)
262 ENDIF
263
264
265 sti(:) = zero
266 fr_wav(:) = zero
267 ibid = 0
268 IF(iparit == 0)THEN
270 1 gbuf%OFF,
accele, nc1, nc2,
271 2 nc3, nc4, nc5, nc6,
272 3 nc7, nc8, stifn, sti,
273 4 f11, f21, f31, f12,
274 5 f22, f32, f13, f23,
275 6 f33, f14, f24, f34,
276 7 f15, f25, f35, f16,
277 8 f26, f36, f17, f27,
278 9 f37, f18, f28, f38,
279 a nvc, ar, fr_wave, fr_wav,
280 b mx1, my1, mz1, mx2,
281 c my2, mz2, mx3, my3,
282 d mz3, mx4, my4, mz4,
283 e mx5, my5, mz5, mx6,
284 f my6, mz6, mx7, my7,
285 g mz7, mx8, my8, mz8,
286 h them, fthe, condn, conde,
287 i nel, jthe, isrot, ipartsph,nodadt_therm)
288 ELSE
290 1 gbuf%OFF,sti, fsky, fsky,
291 2 iads, f11, f21, f31,
292 3 f12, f22, f32, f13,
293 4 f23, f33, f14, f24,
294 5 f34, f15, f25, f35,
295 6 f16, f26, f36, f17,
296 7 f27, f37, f18, f28,
297 8 f38, nc1, nc2, nc3,
298 9 nc4, nc5, nc6, nc7,
299 a nc8, ar, fr_wave, fr_wav,
300 b mx1, my1, mz1, mx2,
301 c my2, mz2, mx3, my3,
302 d mz3, mx4, my4, mz4,
303 e mx5, my5, mz5, mx6,
304 f my6, mz6, mx7, my7,
305 g mz7, mx8, my8, mz8,
306 h them, fthesky, condnsky,conde,
307 i nel, nft, jthe, isrot,
308 j ipartsph,nodadt_therm)
309 ENDIF
310 ELSE IF (ity == 1 .AND. isolnod == 4) THEN
311
312 gbuf => elbuf_tab(ng)%GBUF
313
314
315
316 CALL snorm3t(nel, nft, jale, ixs, xgrid, wgrid,
317 .
norm(1:3, 1:6, 1:nel), wfac(1:3, 1:6, 1:nel), surf(1:6, 1:nel))
318 f11(:) = zero ; f21(:) = zero ; f31(:) = zero
319 f12(:) = zero ; f22(:) = zero ; f32(:) = zero
320 f13(:) = zero ; f23(:) = zero ; f33(:) = zero
321 f14(:) = zero ; f24(:) = zero ; f34(:) = zero
322 dmass1(:) = zero ; dmass2(:) = zero ; dmass3(:) = zero ; dmass4(:) = zero
323
324
325 DO ii = lft, llt
326 i = ii + nft
327 nc1(ii) = ixs(2, i)
328 nc2(ii) = ixs(4, i)
329 nc3(ii) = ixs(7, i)
330 nc4(ii) = ixs(6, i)
331
332 pres(ii) = third * (gbuf%SIG(ii) + gbuf%SIG(ii + nel) + gbuf%SIG(ii + 2 * nel))
333
334 f11(ii) = f11(ii) - third * pres(ii) *
335 . (
norm(1, 4, ii) * surf(4, ii) +
norm(1, 5, ii) * surf(5, ii) +
norm(1, 6, ii) * surf(6, ii))
336 f21(ii) = f21(ii) - third * pres(ii) *
337 . (
norm(2, 4, ii) * surf(4, ii) +
norm(2, 5, ii) * surf(5, ii) +
norm(2, 6, ii) * surf(6, ii))
338 f31(ii) = f31(ii) - third * pres(ii) *
339 . (
norm(3, 4, ii) * surf(4, ii) +
norm(3, 5, ii) * surf(5, ii) +
norm(3, 6, ii) * surf(6, ii))
340
341 f12(ii) = f12(ii) - third * pres(ii) *
342 . (
norm(1, 2, ii) * surf(2, ii) +
norm(1, 5, ii) * surf(5, ii) +
norm(1, 6, ii) * surf(6, ii))
343 f22(ii) = f22(ii) - third * pres(ii) *
344 . (
norm(2, 2, ii) * surf(2, ii) +
norm(2, 5, ii) * surf(5, ii) +
norm(2, 6, ii) * surf(6, ii))
345 f32(ii) = f32(ii) - third * pres(ii) *
346 . (
norm(3, 2, ii) * surf(2, ii) +
norm(3, 5, ii) * surf(5, ii) +
norm(3, 6, ii) * surf(6, ii))
347
348 f13(ii) = f13(ii) - third * pres(ii) *
349 . (
norm(1, 4, ii) * surf(4, ii) +
norm(1, 5, ii) * surf(5, ii) +
norm(1, 2, ii) * surf(2, ii))
350 f23(ii) = f23(ii) - third * pres(ii)
351 . (
norm(2, 4, ii) * surf(4, ii) +
norm(2, 5, ii) * surf(5, ii) +
norm(2, 2, ii) * surf(2, ii))
352 f33(ii) = f33(ii) - third * pres(ii) *
353 . (
norm(3, 4, ii) * surf(4, ii) +
norm(3, 5, ii) * surf(5, ii) +
norm(3, 2, ii) * surf(2, ii))
354
355 f14(ii) = f14(ii) - third * pres(ii) *
356 . (
norm(1, 4, ii) * surf(4, ii) +
norm(1, 2, ii) * surf(2, ii) +
norm(1, 6, ii) * surf(6, ii))
357 f24(ii) = f24(ii) - third * pres(ii) *
358 . (
norm(2, 4, ii) * surf(4, ii) +
norm(2, 2, ii) * surf(2, ii) +
norm(2, 6, ii) * surf(6, ii))
359 f34(ii) = f34(ii) - third * pres(ii) *
360 . (
norm(3, 4, ii) * surf(4, ii) +
norm(3, 2, ii) * surf(2, ii) +
norm(3, 6, ii) * surf(6, ii))
361 ENDDO
362
363
364
365 IF (iparit == 0) THEN
367 1 ms, gbuf%RHO,gbuf%VOL,nc1,
368 2 nc2, nc3, nc4, msnf,
369 3 gbuf%OFF,nel)
370 ELSE
372 1 fskym, gbuf%RHO,gbuf%VOL,iads,
373 2 gbuf%OFF,nel, nft)
374 ENDIF
375
376
377 sti(:) = zero
378 fr_wav(:) = zero
379 ibid = 0
380 IF(iparit == 0)THEN
382 1 gbuf%OFF,
accele, nc1, nc2,
383 2 nc3, nc4, stifn, sti,
384 3 f11, f21, f31, f12,
385 4 f22, f32, f13, f23,
386 5 f33, f14, f24, f34,
387 6 them, fthe, condn, conde,
388 7 nel, jthe, nodadt_therm)
389 ELSE
391 1 gbuf%OFF,sti, fsky, fsky,
392 2 iads, f11, f21, f31,
393 3 f12, f22, f32, f13,
394 4 f23, f33, f14, f24,
395 5 f34, them, fthesky, condnsky,
396 6 conde, nel, nft, jthe, nodadt_therm)
397 ENDIF
398 ENDIF
399 ENDIF
400 ENDIF
401 ENDIF
402 ENDDO
403
404
405 RETURN
subroutine a4mass3(ms, rho, volu, nc1, nc2, nc3, nc4, msnf, off, nel)
subroutine a4mass3p(fskym, rho, volu, iads, off, nel, nft)
subroutine accele(a, ar, v, ms, in, size_nale, nale, ms_2d, size_npby, npby)
subroutine amass3(ms, rho, volgp, tag22, volu, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, msnf, nvc, off, ixs, nel, jeul)
subroutine amass3p(fskym, rho, volgp, tag22, volu, iads, off, ixs, nel, nft, jeul)
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
subroutine s4cumu3(offg, e, nc1, nc2, nc3, nc4, stifn, sti, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, them, fthe, condn, conde, nel, jthe, nodadt_therm)
subroutine s4cumu3p(offg, sti, fsky, fskyv, iads, f11, f21, f31, f12, f22, f32, f13, f23, f33, f14, f24, f34, them, fthesky, condnsky, conde, nel, nft, jthe, nodadt_therm)
subroutine scumu3(offg, e, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, 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, nvc, 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, fthe, condn, conde, nel, jthe, isrot, ipartsph, nodadt_therm)
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 snorm3(nel, nft, jale, ixs, xgrid, wgrid, norm, wfac, surf)
subroutine snorm3t(nel, nft, jale, ixs, xgrid, wgrid, norm, wfac, surf)