26 use blockpointers,
only :
nx,
il,
ie,
ny,
jl,
je,
nz,
kl,
ke, &
27 &
spectralsol,
w,
wd,
si,
sid,
sj,
sjd,
sk,
skd,
dw,
dwd,
pori,
porj, &
38 integer(kind=inttype) :: i, j, k, ind, ii
39 real(kind=realtype) :: qsp, qsm, rqsp, rqsm, porvel, porflux
40 real(kind=realtype) :: qspd, qsmd, rqspd, rqsmd
41 real(kind=realtype) :: pa, fs, sface, vnp, vnm
42 real(kind=realtype) :: pad, fsd, sfaced, vnpd, vnmd
43 real(kind=realtype) :: wwx, wwy, wwz, rvol
44 real(kind=realtype) :: wwxd, wwyd, wwzd, rvold
46 real(kind=realtype) :: temp
47 real(kind=realtype) :: tempd
49 real(kind=realtype) :: temp0
50 real(kind=realtype) :: temp1
51 real(kind=realtype) :: tempd0
63 j = mod(ii/
nx,
ny) + 2
66 tempd0 = rvol*
dwd(i, j, k,
imx)
67 temp =
w(i, j, k,
ivy)
68 temp1 =
w(i, j, k,
ivx)
69 temp0 =
w(i, j, k,
ivy)
70 rvold = (wwx*temp0-wwy*temp1)*
dwd(i, j, k,
imz)
71 tempd = rvol*
dwd(i, j, k,
imz)
72 wwxd = wwxd + temp0*tempd
73 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + wwx*tempd
74 wwyd = wwyd - temp1*tempd
75 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) - wwy*tempd
76 temp1 =
w(i, j, k,
ivz)
77 temp0 =
w(i, j, k,
ivx)
78 rvold = rvold + (wwz*temp0-wwx*temp1)*
dwd(i, j, k,
imy)
79 tempd = rvol*
dwd(i, j, k,
imy)
80 wwzd = wwzd + temp0*tempd - temp*tempd0
81 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + wwz*tempd
82 wwxd = wwxd - temp1*tempd
83 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + wwy*tempd0 - wwx*tempd
84 temp0 =
w(i, j, k,
ivz)
85 rvold = rvold + (wwy*temp0-wwz*temp)*
dwd(i, j, k,
imx)
86 wwyd = wwyd + temp0*tempd0
87 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) - wwz*tempd0
101 j = mod(ii/
nx,
ny) + 2
107 call pushcontrol1b(0)
109 call pushcontrol1b(1)
112 vnp =
w(i, j, k+1,
ivx)*
sk(i, j, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j&
113 & , k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 3)
114 vnm =
w(i, j, k,
ivx)*
sk(i, j, k, 1) +
w(i, j, k,
ivy)*
sk(i, j, k&
115 & , 2) +
w(i, j, k,
ivz)*
sk(i, j, k, 3)
132 call pushcontrol1b(0)
134 call pushcontrol1b(1)
137 porvel = porvel*porflux
140 qsp = (vnp-sface)*porvel
141 qsm = (vnm-sface)*porvel
142 rqsp = qsp*
w(i, j, k+1,
irho)
143 rqsm = qsm*
w(i, j, k,
irho)
147 pa = porflux*(
p(i, j, k+1)+
p(i, j, k))
152 qspd =
w(i, j, k+1,
irhoe)*fsd
154 qsmd =
w(i, j, k,
irhoe)*fsd
158 rqspd =
w(i, j, k+1,
ivz)*fsd
159 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) + rqsp*fsd
160 rqsmd =
w(i, j, k,
ivz)*fsd
161 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + rqsm*fsd
162 pad =
sk(i, j, k, 3)*fsd
163 skd(i, j, k, 3) =
skd(i, j, k, 3) + pa*fsd
165 rqspd = rqspd +
w(i, j, k+1,
ivy)*fsd
166 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) + rqsp*fsd
167 rqsmd = rqsmd +
w(i, j, k,
ivy)*fsd
168 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + rqsm*fsd
169 pad = pad +
sk(i, j, k, 2)*fsd
170 skd(i, j, k, 2) =
skd(i, j, k, 2) + pa*fsd
172 rqspd = rqspd +
w(i, j, k+1,
ivx)*fsd
173 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) + rqsp*fsd
174 rqsmd = rqsmd +
w(i, j, k,
ivx)*fsd
175 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + rqsm*fsd
176 pad = pad +
sk(i, j, k, 1)*fsd
177 pd(i, j, k) =
pd(i, j, k) + vnm*tempd + porflux*pad
178 pd(i, j, k+1) =
pd(i, j, k+1) + vnp*tempd + porflux*pad
179 skd(i, j, k, 1) =
skd(i, j, k, 1) + pa*fsd
183 qsmd = qsmd +
w(i, j, k,
irho)*rqsmd
184 vnmd =
p(i, j, k)*tempd + porvel*qsmd
186 qspd = qspd +
w(i, j, k+1,
irho)*rqspd
187 vnpd =
p(i, j, k+1)*tempd + porvel*qspd
189 sfaced = sfaced - porvel*qsmd - porvel*qspd
190 call popcontrol1b(branch)
191 if (branch .eq. 0)
then
192 sfaced = sfaced + vnmd + vnpd
196 skd(i, j, k, 3) =
skd(i, j, k, 3) +
w(i, j, k,
ivz)*vnmd +
w(i, j&
198 skd(i, j, k, 2) =
skd(i, j, k, 2) +
w(i, j, k,
ivy)*vnmd +
w(i, j&
200 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) +
sk(i, j, k, 1)*vnmd
201 skd(i, j, k, 1) =
skd(i, j, k, 1) +
w(i, j, k,
ivx)*vnmd +
w(i, j&
203 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) +
sk(i, j, k, 2)*vnmd
204 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) +
sk(i, j, k, 3)*vnmd
205 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) +
sk(i, j, k, 1)*vnpd
206 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) +
sk(i, j, k, 2)*vnpd
207 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) +
sk(i, j, k, 3)*vnpd
208 call popcontrol1b(branch)
209 if (branch .eq. 0)
then
220 j = mod(ii/
nx,
jl) + 1
226 call pushcontrol1b(0)
228 call pushcontrol1b(1)
231 vnp =
w(i, j+1, k,
ivx)*
sj(i, j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j&
232 & , k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 3)
233 vnm =
w(i, j, k,
ivx)*
sj(i, j, k, 1) +
w(i, j, k,
ivy)*
sj(i, j, k&
234 & , 2) +
w(i, j, k,
ivz)*
sj(i, j, k, 3)
251 call pushcontrol1b(0)
253 call pushcontrol1b(1)
256 porvel = porvel*porflux
259 qsp = (vnp-sface)*porvel
260 qsm = (vnm-sface)*porvel
261 rqsp = qsp*
w(i, j+1, k,
irho)
262 rqsm = qsm*
w(i, j, k,
irho)
266 pa = porflux*(
p(i, j+1, k)+
p(i, j, k))
271 qspd =
w(i, j+1, k,
irhoe)*fsd
273 qsmd =
w(i, j, k,
irhoe)*fsd
277 rqspd =
w(i, j+1, k,
ivz)*fsd
278 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) + rqsp*fsd
279 rqsmd =
w(i, j, k,
ivz)*fsd
280 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + rqsm*fsd
281 pad =
sj(i, j, k, 3)*fsd
282 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + pa*fsd
284 rqspd = rqspd +
w(i, j+1, k,
ivy)*fsd
285 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) + rqsp*fsd
286 rqsmd = rqsmd +
w(i, j, k,
ivy)*fsd
287 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + rqsm*fsd
288 pad = pad +
sj(i, j, k, 2)*fsd
289 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + pa*fsd
291 rqspd = rqspd +
w(i, j+1, k,
ivx)*fsd
292 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) + rqsp*fsd
293 rqsmd = rqsmd +
w(i, j, k,
ivx)*fsd
294 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + rqsm*fsd
295 pad = pad +
sj(i, j, k, 1)*fsd
296 pd(i, j, k) =
pd(i, j, k) + vnm*tempd + porflux*pad
297 pd(i, j+1, k) =
pd(i, j+1, k) + vnp*tempd + porflux*pad
298 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + pa*fsd
302 qsmd = qsmd +
w(i, j, k,
irho)*rqsmd
303 vnmd =
p(i, j, k)*tempd + porvel*qsmd
305 qspd = qspd +
w(i, j+1, k,
irho)*rqspd
306 vnpd =
p(i, j+1, k)*tempd + porvel*qspd
308 sfaced = sfaced - porvel*qsmd - porvel*qspd
309 call popcontrol1b(branch)
310 if (branch .eq. 0)
then
311 sfaced = sfaced + vnmd + vnpd
315 sjd(i, j, k, 3) =
sjd(i, j, k, 3) +
w(i, j, k,
ivz)*vnmd +
w(i, j+&
317 sjd(i, j, k, 2) =
sjd(i, j, k, 2) +
w(i, j, k,
ivy)*vnmd +
w(i, j+&
319 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) +
sj(i, j, k, 1)*vnmd
320 sjd(i, j, k, 1) =
sjd(i, j, k, 1) +
w(i, j, k,
ivx)*vnmd +
w(i, j+&
322 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) +
sj(i, j, k, 2)*vnmd
323 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) +
sj(i, j, k, 3)*vnmd
324 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) +
sj(i, j, k, 1)*vnpd
325 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) +
sj(i, j, k, 2)*vnpd
326 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) +
sj(i, j, k, 3)*vnpd
327 call popcontrol1b(branch)
328 if (branch .eq. 0)
then
341 j = mod(ii/
il,
ny) + 2
347 call pushcontrol1b(0)
349 call pushcontrol1b(1)
352 vnp =
w(i+1, j, k,
ivx)*
si(i, j, k, 1) +
w(i+1, j, k,
ivy)*
si(i, j&
353 & , k, 2) +
w(i+1, j, k,
ivz)*
si(i, j, k, 3)
354 vnm =
w(i, j, k,
ivx)*
si(i, j, k, 1) +
w(i, j, k,
ivy)*
si(i, j, k&
355 & , 2) +
w(i, j, k,
ivz)*
si(i, j, k, 3)
372 call pushcontrol1b(0)
374 call pushcontrol1b(1)
377 porvel = porvel*porflux
380 qsp = (vnp-sface)*porvel
381 qsm = (vnm-sface)*porvel
382 rqsp = qsp*
w(i+1, j, k,
irho)
383 rqsm = qsm*
w(i, j, k,
irho)
387 pa = porflux*(
p(i+1, j, k)+
p(i, j, k))
392 qspd =
w(i+1, j, k,
irhoe)*fsd
394 qsmd =
w(i, j, k,
irhoe)*fsd
398 rqspd =
w(i+1, j, k,
ivz)*fsd
399 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) + rqsp*fsd
400 rqsmd =
w(i, j, k,
ivz)*fsd
401 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + rqsm*fsd
402 pad =
si(i, j, k, 3)*fsd
403 sid(i, j, k, 3) =
sid(i, j, k, 3) + pa*fsd
405 rqspd = rqspd +
w(i+1, j, k,
ivy)*fsd
406 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) + rqsp*fsd
407 rqsmd = rqsmd +
w(i, j, k,
ivy)*fsd
408 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + rqsm*fsd
409 pad = pad +
si(i, j, k, 2)*fsd
410 sid(i, j, k, 2) =
sid(i, j, k, 2) + pa*fsd
412 rqspd = rqspd +
w(i+1, j, k,
ivx)*fsd
413 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) + rqsp*fsd
414 rqsmd = rqsmd +
w(i, j, k,
ivx)*fsd
415 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + rqsm*fsd
416 pad = pad +
si(i, j, k, 1)*fsd
417 pd(i, j, k) =
pd(i, j, k) + vnm*tempd + porflux*pad
418 pd(i+1, j, k) =
pd(i+1, j, k) + vnp*tempd + porflux*pad
419 sid(i, j, k, 1) =
sid(i, j, k, 1) + pa*fsd
423 qsmd = qsmd +
w(i, j, k,
irho)*rqsmd
424 vnmd =
p(i, j, k)*tempd + porvel*qsmd
426 qspd = qspd +
w(i+1, j, k,
irho)*rqspd
427 vnpd =
p(i+1, j, k)*tempd + porvel*qspd
429 sfaced = sfaced - porvel*qsmd - porvel*qspd
430 call popcontrol1b(branch)
431 if (branch .eq. 0)
then
432 sfaced = sfaced + vnmd + vnpd
436 sid(i, j, k, 3) =
sid(i, j, k, 3) +
w(i, j, k,
ivz)*vnmd +
w(i+1, &
438 sid(i, j, k, 2) =
sid(i, j, k, 2) +
w(i, j, k,
ivy)*vnmd +
w(i+1, &
440 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) +
si(i, j, k, 1)*vnmd
441 sid(i, j, k, 1) =
sid(i, j, k, 1) +
w(i, j, k,
ivx)*vnmd +
w(i+1, &
443 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) +
si(i, j, k, 2)*vnmd
444 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) +
si(i, j, k, 3)*vnmd
445 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) +
si(i, j, k, 1)*vnpd
446 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) +
si(i, j, k, 2)*vnpd
447 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) +
si(i, j, k, 3)*vnpd
448 call popcontrol1b(branch)
449 if (branch .eq. 0)
then
464 use blockpointers,
only :
nx,
il,
ie,
ny,
jl,
je,
nz,
kl,
ke, &
465 &
spectralsol,
w,
si,
sj,
sk,
dw,
pori,
porj,
pork,
indfamilyi, &
476 integer(kind=inttype) :: i, j, k, ind, ii
477 real(kind=realtype) :: qsp, qsm, rqsp, rqsm, porvel, porflux
478 real(kind=realtype) :: pa, fs, sface, vnp, vnm
479 real(kind=realtype) :: wwx, wwy, wwz, rvol
491 j = mod(ii/
il,
ny) + 2
497 vnp =
w(i+1, j, k,
ivx)*
si(i, j, k, 1) +
w(i+1, j, k,
ivy)*
si(i, j&
498 & , k, 2) +
w(i+1, j, k,
ivz)*
si(i, j, k, 3)
499 vnm =
w(i, j, k,
ivx)*
si(i, j, k, 1) +
w(i, j, k,
ivy)*
si(i, j, k&
500 & , 2) +
w(i, j, k,
ivz)*
si(i, j, k, 3)
519 porvel = porvel*porflux
522 qsp = (vnp-sface)*porvel
523 qsm = (vnm-sface)*porvel
524 rqsp = qsp*
w(i+1, j, k,
irho)
525 rqsm = qsm*
w(i, j, k,
irho)
529 pa = porflux*(
p(i+1, j, k)+
p(i, j, k))
536 fs = rqsp*
w(i+1, j, k,
ivx) + rqsm*
w(i, j, k,
ivx) + pa*
si(i, j, k&
540 fs = rqsp*
w(i+1, j, k,
ivy) + rqsm*
w(i, j, k,
ivy) + pa*
si(i, j, k&
544 fs = rqsp*
w(i+1, j, k,
ivz) + rqsm*
w(i, j, k,
ivz) + pa*
si(i, j, k&
548 fs = qsp*
w(i+1, j, k,
irhoe) + qsm*
w(i, j, k,
irhoe) + porflux*(&
549 & vnp*
p(i+1, j, k)+vnm*
p(i, j, k))
563 j = mod(ii/
nx,
jl) + 1
569 vnp =
w(i, j+1, k,
ivx)*
sj(i, j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j&
570 & , k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 3)
571 vnm =
w(i, j, k,
ivx)*
sj(i, j, k, 1) +
w(i, j, k,
ivy)*
sj(i, j, k&
572 & , 2) +
w(i, j, k,
ivz)*
sj(i, j, k, 3)
591 porvel = porvel*porflux
594 qsp = (vnp-sface)*porvel
595 qsm = (vnm-sface)*porvel
596 rqsp = qsp*
w(i, j+1, k,
irho)
597 rqsm = qsm*
w(i, j, k,
irho)
601 pa = porflux*(
p(i, j+1, k)+
p(i, j, k))
608 fs = rqsp*
w(i, j+1, k,
ivx) + rqsm*
w(i, j, k,
ivx) + pa*
sj(i, j, k&
612 fs = rqsp*
w(i, j+1, k,
ivy) + rqsm*
w(i, j, k,
ivy) + pa*
sj(i, j, k&
616 fs = rqsp*
w(i, j+1, k,
ivz) + rqsm*
w(i, j, k,
ivz) + pa*
sj(i, j, k&
620 fs = qsp*
w(i, j+1, k,
irhoe) + qsm*
w(i, j, k,
irhoe) + porflux*(&
621 & vnp*
p(i, j+1, k)+vnm*
p(i, j, k))
634 j = mod(ii/
nx,
ny) + 2
640 vnp =
w(i, j, k+1,
ivx)*
sk(i, j, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j&
641 & , k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 3)
642 vnm =
w(i, j, k,
ivx)*
sk(i, j, k, 1) +
w(i, j, k,
ivy)*
sk(i, j, k&
643 & , 2) +
w(i, j, k,
ivz)*
sk(i, j, k, 3)
662 porvel = porvel*porflux
665 qsp = (vnp-sface)*porvel
666 qsm = (vnm-sface)*porvel
667 rqsp = qsp*
w(i, j, k+1,
irho)
668 rqsm = qsm*
w(i, j, k,
irho)
672 pa = porflux*(
p(i, j, k+1)+
p(i, j, k))
679 fs = rqsp*
w(i, j, k+1,
ivx) + rqsm*
w(i, j, k,
ivx) + pa*
sk(i, j, k&
683 fs = rqsp*
w(i, j, k+1,
ivy) + rqsm*
w(i, j, k,
ivy) + pa*
sk(i, j, k&
687 fs = rqsp*
w(i, j, k+1,
ivz) + rqsm*
w(i, j, k,
ivz) + pa*
sk(i, j, k&
691 fs = qsp*
w(i, j, k+1,
irhoe) + qsm*
w(i, j, k,
irhoe) + porflux*(&
692 & vnp*
p(i, j, k+1)+vnm*
p(i, j, k))
715 j = mod(ii/
nx,
ny) + 2
717 rvol =
w(i, j, k,
irho)*
vol(i, j, k)
719 & wwz*
w(i, j, k,
ivy))
721 & wwx*
w(i, j, k,
ivz))
723 & wwy*
w(i, j, k,
ivx))
750 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,
ib, &
751 &
jb,
kb,
w,
wd,
p,
pd,
pori,
porj,
pork,
fw,
fwd,
gamma,
si,
sid,
sj,&
765 real(kind=realtype),
parameter :: dpmax=0.25_realtype
766 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
767 real(kind=realtype),
parameter :: epsshear=0.025_realtype
768 real(kind=realtype),
parameter :: omega=0.5_realtype
769 real(kind=realtype),
parameter :: oneminomega=
one-omega
773 integer(kind=inttype) :: i, j, k, ind, ii
774 real(kind=realtype) :: plim, sface
775 real(kind=realtype) :: plimd, sfaced
776 real(kind=realtype) :: sfil, fis2, fis4
777 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
778 real(kind=realtype) :: ppor, rrad, dis2, dis4
779 real(kind=realtype) :: rradd, dis2d, dis4d
780 real(kind=realtype) :: dp1, dp2, tmp, fs
781 real(kind=realtype) :: tmpd, fsd
782 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, ddw6
783 real(kind=realtype) :: ddw1d, ddw2d, ddw3d, ddw4d, ddw5d, ddw6d
784 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
785 real(kind=realtype) :: drd, drud, drvd, drwd, dred, drkd, sxd, syd, &
787 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
788 real(kind=realtype) :: uavgd, vavgd, wavgd, a2avgd, aavgd, havgd
789 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
790 real(kind=realtype) :: alphaavgd, unavgd, ovaavgd, ova2avgd
791 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
792 real(kind=realtype) :: kavgd, lam1d, lam2d, lam3d, aread
793 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
794 real(kind=realtype) :: abv1d, abv2d, abv3d, abv4d, abv5d, abv6d, &
796 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
797 real(kind=realtype),
dimension(ie, je, ke, 3) :: dssd
798 logical :: correctfork
804 real(kind=realtype) :: x1
805 real(kind=realtype) :: x1d
806 real(kind=realtype) :: x2
807 real(kind=realtype) :: x2d
808 real(kind=realtype) :: x3
809 real(kind=realtype) :: x3d
810 real(kind=realtype) :: y1
811 real(kind=realtype) :: y1d
812 real(kind=realtype) :: y2
813 real(kind=realtype) :: y2d
814 real(kind=realtype) :: y3
815 real(kind=realtype) :: y3d
816 real(kind=realtype) :: abs0
817 real(kind=realtype) :: min1
818 real(kind=realtype) :: min1d
819 real(realtype) :: max1
820 real(realtype) :: max1d
821 real(kind=realtype) :: max2
822 real(kind=realtype) :: max2d
823 real(kind=realtype) :: max3
824 real(kind=realtype) :: max3d
825 real(kind=realtype) :: max4
826 real(kind=realtype) :: max4d
827 real(kind=realtype) :: min2
828 real(kind=realtype) :: min2d
829 real(realtype) :: max5
830 real(realtype) :: max5d
831 real(kind=realtype) :: max6
832 real(kind=realtype) :: max6d
833 real(kind=realtype) :: max7
834 real(kind=realtype) :: max7d
835 real(kind=realtype) :: max8
836 real(kind=realtype) :: max8d
837 real(kind=realtype) :: min3
838 real(kind=realtype) :: min3d
839 real(realtype) :: max9
840 real(realtype) :: max9d
841 real(kind=realtype) :: max10
842 real(kind=realtype) :: max10d
843 real(kind=realtype) :: max11
844 real(kind=realtype) :: max11d
845 real(kind=realtype) :: max12
846 real(kind=realtype) :: max12d
847 real(kind=realtype) :: abs1
848 real(kind=realtype) :: abs1d
849 real(kind=realtype) :: abs2
850 real(kind=realtype) :: abs2d
851 real(kind=realtype) :: abs3
852 real(kind=realtype) :: abs3d
853 real(kind=realtype) :: abs4
854 real(kind=realtype) :: abs4d
855 real(kind=realtype) :: abs5
856 real(kind=realtype) :: abs5d
857 real(kind=realtype) :: abs6
858 real(kind=realtype) :: abs6d
859 real(kind=realtype) :: arg1
860 real(kind=realtype) :: arg1d
861 real(kind=realtype) :: temp
862 real(kind=realtype) :: temp0
863 real(kind=realtype) :: tempd
864 real(kind=realtype) :: tempd0
865 real(kind=realtype) :: temp1
866 real(kind=realtype) :: tempd1
868 real(kind=realtype) :: temp2
869 real(kind=realtype) :: temp3
870 real(kind=realtype) :: tempd2
871 real(kind=realtype) :: tempd3
872 if (
rfil .ge. 0.)
then
900 j = mod(ii/
ie,
je) + 1
902 if (
p(i+1, j, k) -
p(i, j, k) .ge. 0.)
then
903 abs1 =
p(i+1, j, k) -
p(i, j, k)
905 abs1 = -(
p(i+1, j, k)-
p(i, j, k))
907 if (
p(i, j, k) -
p(i-1, j, k) .ge. 0.)
then
908 abs4 =
p(i, j, k) -
p(i-1, j, k)
910 abs4 = -(
p(i, j, k)-
p(i-1, j, k))
912 x1 = (
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))/(omega*(
p(i+1, j&
913 & , k)+
two*
p(i, j, k)+
p(i-1, j, k))+oneminomega*(abs1+abs4)+plim&
918 dss(i, j, k, 1) = -x1
920 if (
p(i, j+1, k) -
p(i, j, k) .ge. 0.)
then
921 abs2 =
p(i, j+1, k) -
p(i, j, k)
923 abs2 = -(
p(i, j+1, k)-
p(i, j, k))
925 if (
p(i, j, k) -
p(i, j-1, k) .ge. 0.)
then
926 abs5 =
p(i, j, k) -
p(i, j-1, k)
928 abs5 = -(
p(i, j, k)-
p(i, j-1, k))
930 x2 = (
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))/(omega*(
p(i, j+1&
931 & , k)+
two*
p(i, j, k)+
p(i, j-1, k))+oneminomega*(abs2+abs5)+plim&
936 dss(i, j, k, 2) = -x2
938 if (
p(i, j, k+1) -
p(i, j, k) .ge. 0.)
then
939 abs3 =
p(i, j, k+1) -
p(i, j, k)
941 abs3 = -(
p(i, j, k+1)-
p(i, j, k))
943 if (
p(i, j, k) -
p(i, j, k-1) .ge. 0.)
then
944 abs6 =
p(i, j, k) -
p(i, j, k-1)
946 abs6 = -(
p(i, j, k)-
p(i, j, k-1))
948 x3 = (
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))/(omega*(
p(i, j, &
949 & k+1)+
two*
p(i, j, k)+
p(i, j, k-1))+oneminomega*(abs3+abs6)+plim&
954 dss(i, j, k, 3) = -x3
957 call pushreal8(sface)
964 j = mod(ii/
il,
ny) + 2
969 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
970 y1 = dss(i+1, j, k, 1)
974 if (dpmax .gt. y1)
then
979 dis2 = ppor*fis2*min1
981 dis4 =
mydim(arg1, dis2)
985 dr = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
989 dru = dis2*ddw2 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivx)-
w(i&
993 drv = dis2*ddw3 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivy)-
w(i&
997 drw = dis2*ddw4 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivz)-
w(i&
1000 dre = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)-
w(i-1, j, k,
irhoe)-&
1006 if (correctfork)
then
1008 & )*
w(i, j, k,
itu1)
1009 drk = dis2*ddw6 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
itu1)-&
1019 gm1 = gammaavg -
one
1028 area = sqrt(
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 +
si(i, j, k, &
1030 if (1.e-25_realtype .lt. area)
then
1033 max1 = 1.e-25_realtype
1036 sx =
si(i, j, k, 1)*tmp
1037 sy =
si(i, j, k, 2)*tmp
1038 sz =
si(i, j, k, 3)*tmp
1039 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1040 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1042 unavg = uavg*sx + vavg*sy + wavg*sz
1048 if (unavg - sface + aavg .ge. 0.)
then
1049 lam1 = unavg - sface + aavg
1051 lam1 = -(unavg-sface+aavg)
1053 if (unavg - sface - aavg .ge. 0.)
then
1054 lam2 = unavg - sface - aavg
1056 lam2 = -(unavg-sface-aavg)
1058 if (unavg - sface .ge. 0.)
then
1059 lam3 = unavg - sface
1061 lam3 = -(unavg-sface)
1064 if (lam1 .lt. epsacoustic*rrad)
then
1065 max2 = epsacoustic*rrad
1072 if (lam2 .lt. epsacoustic*rrad)
then
1073 max3 = epsacoustic*rrad
1078 if (lam3 .lt. epsshear*rrad)
then
1079 max4 = epsshear*rrad
1086 abv1 =
half*(lam1+lam2)
1087 abv2 =
half*(lam1-lam2)
1089 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1091 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1092 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1093 abv7 = abv2*abv4*ovaavg + abv3*abv5
1100 fs = lam3*dru + uavg*abv6 + sx*abv7
1104 fs = lam3*drv + vavg*abv6 + sy*abv7
1108 fs = lam3*drw + wavg*abv6 + sz*abv7
1112 fs = lam3*dre + havg*abv6 + unavg*abv7
1116 call pushreal8(sface)
1123 j = mod(ii/
nx,
jl) + 1
1128 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
1129 y2 = dss(i, j+1, k, 2)
1131 y2 = dss(i, j, k, 2)
1133 if (dpmax .gt. y2)
then
1138 dis2 = ppor*fis2*min2
1140 dis4 =
mydim(arg1, dis2)
1144 dr = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
1148 dru = dis2*ddw2 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivx)-
w(i&
1152 drv = dis2*ddw3 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivy)-
w(i&
1156 drw = dis2*ddw4 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivz)-
w(i&
1159 dre = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)-
w(i, j-1, k,
irhoe)-&
1165 if (correctfork)
then
1167 & )*
w(i, j, k,
itu1)
1168 drk = dis2*ddw6 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
itu1)-&
1178 gm1 = gammaavg -
one
1187 area = sqrt(
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 +
sj(i, j, k, &
1189 if (1.e-25_realtype .lt. area)
then
1192 max5 = 1.e-25_realtype
1195 sx =
sj(i, j, k, 1)*tmp
1196 sy =
sj(i, j, k, 2)*tmp
1197 sz =
sj(i, j, k, 3)*tmp
1198 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1199 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1201 unavg = uavg*sx + vavg*sy + wavg*sz
1207 if (unavg - sface + aavg .ge. 0.)
then
1208 lam1 = unavg - sface + aavg
1210 lam1 = -(unavg-sface+aavg)
1212 if (unavg - sface - aavg .ge. 0.)
then
1213 lam2 = unavg - sface - aavg
1215 lam2 = -(unavg-sface-aavg)
1217 if (unavg - sface .ge. 0.)
then
1218 lam3 = unavg - sface
1220 lam3 = -(unavg-sface)
1223 if (lam1 .lt. epsacoustic*rrad)
then
1224 max6 = epsacoustic*rrad
1231 if (lam2 .lt. epsacoustic*rrad)
then
1232 max7 = epsacoustic*rrad
1237 if (lam3 .lt. epsshear*rrad)
then
1238 max8 = epsshear*rrad
1245 abv1 =
half*(lam1+lam2)
1246 abv2 =
half*(lam1-lam2)
1248 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1250 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1251 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1252 abv7 = abv2*abv4*ovaavg + abv3*abv5
1259 fs = lam3*dru + uavg*abv6 + sx*abv7
1263 fs = lam3*drv + vavg*abv6 + sy*abv7
1267 fs = lam3*drw + wavg*abv6 + sz*abv7
1271 fs = lam3*dre + havg*abv6 + unavg*abv7
1280 j = mod(ii/
nx,
ny) + 2
1285 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
1286 y3 = dss(i, j, k+1, 3)
1287 call pushcontrol1b(0)
1289 y3 = dss(i, j, k, 3)
1290 call pushcontrol1b(1)
1292 if (dpmax .gt. y3)
then
1294 call pushcontrol1b(0)
1297 call pushcontrol1b(1)
1299 dis2 = ppor*fis2*min3
1301 dis4 =
mydim(arg1, dis2)
1305 dr = dis2*ddw1 - dis4*(
w(i, j, k+2,
irho)-
w(i, j, k-1,
irho)-&
1309 dru = dis2*ddw2 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivx)-
w(i&
1313 drv = dis2*ddw3 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivy)-
w(i&
1317 drw = dis2*ddw4 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivz)-
w(i&
1320 dre = dis2*ddw5 - dis4*(
w(i, j, k+2,
irhoe)-
w(i, j, k-1,
irhoe)-&
1326 if (correctfork)
then
1328 & )*
w(i, j, k,
itu1)
1329 drk = dis2*ddw6 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
itu1)-&
1332 call pushcontrol1b(1)
1336 call pushcontrol1b(0)
1341 gm1 = gammaavg -
one
1350 area = sqrt(
sk(i, j, k, 1)**2 +
sk(i, j, k, 2)**2 +
sk(i, j, k, &
1352 if (1.e-25_realtype .lt. area)
then
1354 call pushcontrol1b(0)
1356 call pushcontrol1b(1)
1357 max9 = 1.e-25_realtype
1360 sx =
sk(i, j, k, 1)*tmp
1361 sy =
sk(i, j, k, 2)*tmp
1362 sz =
sk(i, j, k, 3)*tmp
1363 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1364 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1366 unavg = uavg*sx + vavg*sy + wavg*sz
1372 sface =
sfacek(i, j, k)*tmp
1373 call pushcontrol1b(1)
1375 call pushcontrol1b(0)
1377 if (unavg - sface + aavg .ge. 0.)
then
1378 lam1 = unavg - sface + aavg
1379 call pushcontrol1b(0)
1381 lam1 = -(unavg-sface+aavg)
1382 call pushcontrol1b(1)
1384 if (unavg - sface - aavg .ge. 0.)
then
1385 lam2 = unavg - sface - aavg
1386 call pushcontrol1b(0)
1388 lam2 = -(unavg-sface-aavg)
1389 call pushcontrol1b(1)
1391 if (unavg - sface .ge. 0.)
then
1392 lam3 = unavg - sface
1393 call pushcontrol1b(0)
1395 lam3 = -(unavg-sface)
1396 call pushcontrol1b(1)
1399 if (lam1 .lt. epsacoustic*rrad)
then
1400 max10 = epsacoustic*rrad
1401 call pushcontrol1b(0)
1404 call pushcontrol1b(1)
1409 if (lam2 .lt. epsacoustic*rrad)
then
1410 max11 = epsacoustic*rrad
1411 call pushcontrol1b(0)
1414 call pushcontrol1b(1)
1417 if (lam3 .lt. epsshear*rrad)
then
1418 max12 = epsshear*rrad
1419 call pushcontrol1b(0)
1422 call pushcontrol1b(1)
1427 abv1 =
half*(lam1+lam2)
1428 abv2 =
half*(lam1-lam2)
1430 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1432 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1433 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1434 abv7 = abv2*abv4*ovaavg + abv3*abv5
1449 lam3d = lam3d + drw*fsd
1452 abv6d = abv6d + wavg*fsd
1454 abv7d = abv7d + sz*fsd
1456 lam3d = lam3d + drv*fsd
1459 abv6d = abv6d + vavg*fsd
1461 abv7d = abv7d + sy*fsd
1463 lam3d = lam3d + dru*fsd
1466 abv6d = abv6d + uavg*fsd
1468 abv7d = abv7d + sx*fsd
1471 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
1472 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
1473 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
1474 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
1475 lam3d = lam3d + dr*fsd - abv3d
1476 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
1477 ova2avgd = abv3*abv4*abv6d
1478 sxd = sxd + dru*abv5d
1479 syd = syd + drv*abv5d
1480 szd = szd + drw*abv5d
1481 unavgd = unavgd - dr*abv5d
1483 drd = lam3*fsd + alphaavg*tempd2 - unavg*abv5d
1484 drud = drud + sx*abv5d - uavg*tempd2
1485 drvd = drvd + sy*abv5d - vavg*tempd2
1486 drwd = drwd + sz*abv5d - wavg*tempd2
1487 drkd = -(gm53*abv4d)
1488 alphaavgd = dr*tempd2
1489 uavgd = uavgd - dru*tempd2
1490 vavgd = vavgd - drv*tempd2
1491 dred = dred + tempd2
1492 wavgd = wavgd - drw*tempd2
1498 call popcontrol1b(branch)
1499 if (branch .eq. 0)
then
1500 rradd = epsshear*max12d
1507 aread = aread + max11*lam2d
1508 call popcontrol1b(branch)
1509 if (branch .eq. 0)
then
1510 rradd = rradd + epsacoustic*max11d
1516 aread = aread + max10*lam1d
1517 call popcontrol1b(branch)
1518 if (branch .eq. 0)
then
1519 rradd = rradd + epsacoustic*max10d
1524 lam3d = lam3d + rradd
1526 call popcontrol1b(branch)
1527 if (branch .eq. 0)
then
1528 unavgd = unavgd + lam3d
1529 sfaced = sfaced - lam3d
1531 sfaced = sfaced + lam3d
1532 unavgd = unavgd - lam3d
1534 call popcontrol1b(branch)
1535 if (branch .eq. 0)
then
1536 unavgd = unavgd + lam2d
1537 sfaced = sfaced - lam2d
1538 aavgd = aavgd - lam2d
1540 sfaced = sfaced + lam2d
1541 unavgd = unavgd - lam2d
1542 aavgd = aavgd + lam2d
1544 call popcontrol1b(branch)
1545 if (branch .eq. 0)
then
1546 unavgd = unavgd + lam1d
1547 sfaced = sfaced - lam1d
1548 aavgd = aavgd + lam1d
1550 sfaced = sfaced + lam1d
1551 unavgd = unavgd - lam1d
1552 aavgd = aavgd - lam1d
1554 call popcontrol1b(branch)
1555 if (branch .eq. 0)
then
1559 tmpd =
sfacek(i, j, k)*sfaced
1562 alphaavgd = alphaavgd + havgd
1563 tempd2 =
half*alphaavgd
1564 aavgd = aavgd -
one*ovaavgd/aavg**2
1565 if (a2avg .eq. 0.0_8)
then
1566 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
1568 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 + &
1571 uavgd = uavgd + sx*unavgd + 2*uavg*tempd2
1572 sxd = sxd + uavg*unavgd
1573 vavgd = vavgd + sy*unavgd + 2*vavg*tempd2
1574 syd = syd + vavg*unavgd
1575 wavgd = wavgd + sz*unavgd + 2*wavg*tempd2
1576 szd = szd + wavg*unavgd
1577 kavgd = -(gm53*ovgm1*havgd)
1578 skd(i, j, k, 3) =
skd(i, j, k, 3) + tmp*szd
1579 tmpd = tmpd +
sk(i, j, k, 3)*szd +
sk(i, j, k, 2)*syd +
sk(i, j&
1581 skd(i, j, k, 2) =
skd(i, j, k, 2) + tmp*syd
1582 skd(i, j, k, 1) =
skd(i, j, k, 1) + tmp*sxd
1583 max9d = -(
one*tmpd/max9**2)
1584 call popcontrol1b(branch)
1585 if (branch .eq. 0) aread = aread + max9d
1586 temp3 =
sk(i, j, k, 3)
1587 temp2 =
sk(i, j, k, 2)
1588 temp1 =
sk(i, j, k, 1)
1589 if (temp1**2 + temp2**2 + temp3**2 .eq. 0.0_8)
then
1592 tempd = aread/(2.0*sqrt(temp1**2+temp2**2+temp3**2))
1594 skd(i, j, k, 1) =
skd(i, j, k, 1) + 2*temp1*tempd
1595 skd(i, j, k, 2) =
skd(i, j, k, 2) + 2*temp2*tempd
1596 skd(i, j, k, 3) =
skd(i, j, k, 3) + 2*temp3*tempd
1597 temp3 =
w(i, j, k+1,
irho)
1598 temp1 =
w(i, j, k,
irho)
1599 tempd3 =
gamma(i, j, k+1)*
half*a2avgd/temp3
1600 tempd =
gamma(i, j, k)*
half*a2avgd/temp1
1601 pd(i, j, k) =
pd(i, j, k) + tempd
1602 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd/temp1
1603 pd(i, j, k+1) =
pd(i, j, k+1) + tempd3
1604 wd(i, j, k+1,
irho) =
wd(i, j, k+1,
irho) -
p(i, j, k+1)*tempd3/&
1612 call popcontrol1b(branch)
1613 if (branch .eq. 0)
then
1617 tempd0 = -(dis4*drkd)
1620 temp3 =
w(i, j, k-1,
itu1)
1621 temp2 =
w(i, j, k-1,
irho)
1622 temp1 =
w(i, j, k+2,
itu1)
1623 temp0 =
w(i, j, k+2,
irho)
1625 ddw6d = dis2*drkd -
three*tempd0
1626 dis4d = -((temp0*temp1-temp2*temp3-
three*ddw6)*drkd)
1627 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1628 wd(i, j, k+2,
itu1) =
wd(i, j, k+2,
itu1) + temp0*tempd0
1629 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1630 wd(i, j, k-1,
itu1) =
wd(i, j, k-1,
itu1) - temp2*tempd0
1638 tempd0 = -(dis4*drwd)
1639 temp0 =
w(i, j, k+2,
irho)
1640 temp1 =
w(i, j, k+2,
ivz)
1641 temp2 =
w(i, j, k-1,
irho)
1642 temp3 =
w(i, j, k-1,
ivz)
1643 tempd2 = -(dis4*dred)
1644 dis2d = dis2d + ddw5*dred + ddw4*drwd + ddw3*drvd + ddw2*drud + &
1646 ddw5d = dis2*dred -
three*tempd2
1648 & ddw5)*dred - (temp0*temp1-temp2*temp3-
three*ddw4)*drwd
1653 ddw4d = dis2*drwd -
three*tempd0
1654 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1655 wd(i, j, k+2,
ivz) =
wd(i, j, k+2,
ivz) + temp0*tempd0
1656 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1657 wd(i, j, k-1,
ivz) =
wd(i, j, k-1,
ivz) - temp2*tempd0
1664 temp3 =
w(i, j, k-1,
ivy)
1665 temp2 =
w(i, j, k-1,
irho)
1666 temp1 =
w(i, j, k+2,
ivy)
1667 temp0 =
w(i, j, k+2,
irho)
1668 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*drvd
1669 tempd0 = -(dis4*drvd)
1670 ddw3d = dis2*drvd -
three*tempd0
1671 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1672 wd(i, j, k+2,
ivy) =
wd(i, j, k+2,
ivy) + temp0*tempd0
1673 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1674 wd(i, j, k-1,
ivy) =
wd(i, j, k-1,
ivy) - temp2*tempd0
1681 temp3 =
w(i, j, k-1,
ivx)
1682 temp2 =
w(i, j, k-1,
irho)
1683 temp1 =
w(i, j, k+2,
ivx)
1684 temp0 =
w(i, j, k+2,
irho)
1685 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*drud - (
w(i&
1687 tempd0 = -(dis4*drud)
1688 ddw2d = dis2*drud -
three*tempd0
1689 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1690 wd(i, j, k+2,
ivx) =
wd(i, j, k+2,
ivx) + temp0*tempd0
1691 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1692 wd(i, j, k-1,
ivx) =
wd(i, j, k-1,
ivx) - temp2*tempd0
1699 tempd2 = -(dis4*drd)
1700 ddw1d = dis2*drd -
three*tempd2
1706 call mydim_b(arg1, arg1d, dis2, dis2d, dis4d)
1707 min3d = ppor*fis2*dis2d
1708 call popcontrol1b(branch)
1709 if (branch .eq. 0)
then
1714 call popcontrol1b(branch)
1715 if (branch .eq. 0)
then
1716 dssd(i, j, k+1, 3) = dssd(i, j, k+1, 3) + y3d
1718 dssd(i, j, k, 3) = dssd(i, j, k, 3) + y3d
1721 call popreal8(sface)
1725 j = mod(ii/
nx,
jl) + 1
1730 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
1731 y2 = dss(i, j+1, k, 2)
1732 call pushcontrol1b(0)
1734 y2 = dss(i, j, k, 2)
1735 call pushcontrol1b(1)
1737 if (dpmax .gt. y2)
then
1739 call pushcontrol1b(0)
1742 call pushcontrol1b(1)
1744 dis2 = ppor*fis2*min2
1746 dis4 =
mydim(arg1, dis2)
1750 dr = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
1754 dru = dis2*ddw2 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivx)-
w(i&
1758 drv = dis2*ddw3 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivy)-
w(i&
1762 drw = dis2*ddw4 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivz)-
w(i&
1765 dre = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)-
w(i, j-1, k,
irhoe)-&
1771 if (correctfork)
then
1773 & )*
w(i, j, k,
itu1)
1774 drk = dis2*ddw6 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
itu1)-&
1777 call pushcontrol1b(1)
1781 call pushcontrol1b(0)
1786 gm1 = gammaavg -
one
1795 area = sqrt(
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 +
sj(i, j, k, &
1797 if (1.e-25_realtype .lt. area)
then
1799 call pushcontrol1b(0)
1801 call pushcontrol1b(1)
1802 max5 = 1.e-25_realtype
1805 sx =
sj(i, j, k, 1)*tmp
1806 sy =
sj(i, j, k, 2)*tmp
1807 sz =
sj(i, j, k, 3)*tmp
1808 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1809 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1811 unavg = uavg*sx + vavg*sy + wavg*sz
1817 sface =
sfacej(i, j, k)*tmp
1818 call pushcontrol1b(1)
1820 call pushcontrol1b(0)
1822 if (unavg - sface + aavg .ge. 0.)
then
1823 lam1 = unavg - sface + aavg
1824 call pushcontrol1b(0)
1826 lam1 = -(unavg-sface+aavg)
1827 call pushcontrol1b(1)
1829 if (unavg - sface - aavg .ge. 0.)
then
1830 lam2 = unavg - sface - aavg
1831 call pushcontrol1b(0)
1833 lam2 = -(unavg-sface-aavg)
1834 call pushcontrol1b(1)
1836 if (unavg - sface .ge. 0.)
then
1837 lam3 = unavg - sface
1838 call pushcontrol1b(0)
1840 lam3 = -(unavg-sface)
1841 call pushcontrol1b(1)
1844 if (lam1 .lt. epsacoustic*rrad)
then
1845 max6 = epsacoustic*rrad
1846 call pushcontrol1b(0)
1849 call pushcontrol1b(1)
1854 if (lam2 .lt. epsacoustic*rrad)
then
1855 max7 = epsacoustic*rrad
1856 call pushcontrol1b(0)
1859 call pushcontrol1b(1)
1862 if (lam3 .lt. epsshear*rrad)
then
1863 max8 = epsshear*rrad
1864 call pushcontrol1b(0)
1867 call pushcontrol1b(1)
1872 abv1 =
half*(lam1+lam2)
1873 abv2 =
half*(lam1-lam2)
1875 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1877 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1878 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1879 abv7 = abv2*abv4*ovaavg + abv3*abv5
1894 lam3d = lam3d + drw*fsd
1897 abv6d = abv6d + wavg*fsd
1899 abv7d = abv7d + sz*fsd
1901 lam3d = lam3d + drv*fsd
1904 abv6d = abv6d + vavg*fsd
1906 abv7d = abv7d + sy*fsd
1908 lam3d = lam3d + dru*fsd
1911 abv6d = abv6d + uavg*fsd
1913 abv7d = abv7d + sx*fsd
1916 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
1917 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
1918 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
1919 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
1920 lam3d = lam3d + dr*fsd - abv3d
1921 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
1922 ova2avgd = abv3*abv4*abv6d
1923 sxd = sxd + dru*abv5d
1924 syd = syd + drv*abv5d
1925 szd = szd + drw*abv5d
1926 unavgd = unavgd - dr*abv5d
1928 drd = lam3*fsd + alphaavg*tempd2 - unavg*abv5d
1929 drud = drud + sx*abv5d - uavg*tempd2
1930 drvd = drvd + sy*abv5d - vavg*tempd2
1931 drwd = drwd + sz*abv5d - wavg*tempd2
1932 drkd = -(gm53*abv4d)
1933 alphaavgd = dr*tempd2
1934 uavgd = uavgd - dru*tempd2
1935 vavgd = vavgd - drv*tempd2
1936 dred = dred + tempd2
1937 wavgd = wavgd - drw*tempd2
1943 call popcontrol1b(branch)
1944 if (branch .eq. 0)
then
1945 rradd = epsshear*max8d
1952 aread = aread + max7*lam2d
1953 call popcontrol1b(branch)
1954 if (branch .eq. 0)
then
1955 rradd = rradd + epsacoustic*max7d
1961 aread = aread + max6*lam1d
1962 call popcontrol1b(branch)
1963 if (branch .eq. 0)
then
1964 rradd = rradd + epsacoustic*max6d
1969 lam3d = lam3d + rradd
1971 call popcontrol1b(branch)
1972 if (branch .eq. 0)
then
1973 unavgd = unavgd + lam3d
1974 sfaced = sfaced - lam3d
1976 sfaced = sfaced + lam3d
1977 unavgd = unavgd - lam3d
1979 call popcontrol1b(branch)
1980 if (branch .eq. 0)
then
1981 unavgd = unavgd + lam2d
1982 sfaced = sfaced - lam2d
1983 aavgd = aavgd - lam2d
1985 sfaced = sfaced + lam2d
1986 unavgd = unavgd - lam2d
1987 aavgd = aavgd + lam2d
1989 call popcontrol1b(branch)
1990 if (branch .eq. 0)
then
1991 unavgd = unavgd + lam1d
1992 sfaced = sfaced - lam1d
1993 aavgd = aavgd + lam1d
1995 sfaced = sfaced + lam1d
1996 unavgd = unavgd - lam1d
1997 aavgd = aavgd - lam1d
1999 call popcontrol1b(branch)
2000 if (branch .eq. 0)
then
2004 tmpd =
sfacej(i, j, k)*sfaced
2007 alphaavgd = alphaavgd + havgd
2008 tempd2 =
half*alphaavgd
2009 aavgd = aavgd -
one*ovaavgd/aavg**2
2010 if (a2avg .eq. 0.0_8)
then
2011 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
2013 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 + &
2016 uavgd = uavgd + sx*unavgd + 2*uavg*tempd2
2017 sxd = sxd + uavg*unavgd
2018 vavgd = vavgd + sy*unavgd + 2*vavg*tempd2
2019 syd = syd + vavg*unavgd
2020 wavgd = wavgd + sz*unavgd + 2*wavg*tempd2
2021 szd = szd + wavg*unavgd
2022 kavgd = -(gm53*ovgm1*havgd)
2023 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + tmp*szd
2024 tmpd = tmpd +
sj(i, j, k, 3)*szd +
sj(i, j, k, 2)*syd +
sj(i, j&
2026 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + tmp*syd
2027 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + tmp*sxd
2028 max5d = -(
one*tmpd/max5**2)
2029 call popcontrol1b(branch)
2030 if (branch .eq. 0) aread = aread + max5d
2031 temp3 =
sj(i, j, k, 3)
2032 temp2 =
sj(i, j, k, 2)
2033 temp1 =
sj(i, j, k, 1)
2034 if (temp1**2 + temp2**2 + temp3**2 .eq. 0.0_8)
then
2037 tempd = aread/(2.0*sqrt(temp1**2+temp2**2+temp3**2))
2039 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + 2*temp1*tempd
2040 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + 2*temp2*tempd
2041 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + 2*temp3*tempd
2042 temp3 =
w(i, j+1, k,
irho)
2043 temp1 =
w(i, j, k,
irho)
2044 tempd3 =
gamma(i, j+1, k)*
half*a2avgd/temp3
2045 tempd =
gamma(i, j, k)*
half*a2avgd/temp1
2046 pd(i, j, k) =
pd(i, j, k) + tempd
2047 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd/temp1
2048 pd(i, j+1, k) =
pd(i, j+1, k) + tempd3
2049 wd(i, j+1, k,
irho) =
wd(i, j+1, k,
irho) -
p(i, j+1, k)*tempd3/&
2057 call popcontrol1b(branch)
2058 if (branch .eq. 0)
then
2062 tempd0 = -(dis4*drkd)
2065 temp3 =
w(i, j-1, k,
itu1)
2066 temp2 =
w(i, j-1, k,
irho)
2067 temp1 =
w(i, j+2, k,
itu1)
2068 temp0 =
w(i, j+2, k,
irho)
2070 ddw6d = dis2*drkd -
three*tempd0
2071 dis4d = -((temp0*temp1-temp2*temp3-
three*ddw6)*drkd)
2072 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
2073 wd(i, j+2, k,
itu1) =
wd(i, j+2, k,
itu1) + temp0*tempd0
2074 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
2075 wd(i, j-1, k,
itu1) =
wd(i, j-1, k,
itu1) - temp2*tempd0
2083 tempd0 = -(dis4*drwd)
2084 temp0 =
w(i, j+2, k,
irho)
2085 temp1 =
w(i, j+2, k,
ivz)
2086 temp2 =
w(i, j-1, k,
irho)
2087 temp3 =
w(i, j-1, k,
ivz)
2088 tempd2 = -(dis4*dred)
2089 dis2d = dis2d + ddw5*dred + ddw4*drwd + ddw3*drvd + ddw2*drud + &
2091 ddw5d = dis2*dred -
three*tempd2
2093 & ddw5)*dred - (temp0*temp1-temp2*temp3-
three*ddw4)*drwd
2098 ddw4d = dis2*drwd -
three*tempd0
2099 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
2100 wd(i, j+2, k,
ivz) =
wd(i, j+2, k,
ivz) + temp0*tempd0
2101 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
2102 wd(i, j-1, k,
ivz) =
wd(i, j-1, k,
ivz) - temp2*tempd0
2109 temp3 =
w(i, j-1, k,
ivy)
2110 temp2 =
w(i, j-1, k,
irho)
2111 temp1 =
w(i, j+2, k,
ivy)
2112 temp0 =
w(i, j+2, k,
irho)
2113 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*drvd
2114 tempd0 = -(dis4*drvd)
2115 ddw3d = dis2*drvd -
three*tempd0
2116 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
2117 wd(i, j+2, k,
ivy) =
wd(i, j+2, k,
ivy) + temp0*tempd0
2118 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
2119 wd(i, j-1, k,
ivy) =
wd(i, j-1, k,
ivy) - temp2*tempd0
2126 temp3 =
w(i, j-1, k,
ivx)
2127 temp2 =
w(i, j-1, k,
irho)
2128 temp1 =
w(i, j+2, k,
ivx)
2129 temp0 =
w(i, j+2, k,
irho)
2130 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*drud - (
w(i&
2132 tempd0 = -(dis4*drud)
2133 ddw2d = dis2*drud -
three*tempd0
2134 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
2135 wd(i, j+2, k,
ivx) =
wd(i, j+2, k,
ivx) + temp0*tempd0
2136 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
2137 wd(i, j-1, k,
ivx) =
wd(i, j-1, k,
ivx) - temp2*tempd0
2144 tempd2 = -(dis4*drd)
2145 ddw1d = dis2*drd -
three*tempd2
2151 call mydim_b(arg1, arg1d, dis2, dis2d, dis4d)
2152 min2d = ppor*fis2*dis2d
2153 call popcontrol1b(branch)
2154 if (branch .eq. 0)
then
2159 call popcontrol1b(branch)
2160 if (branch .eq. 0)
then
2161 dssd(i, j+1, k, 2) = dssd(i, j+1, k, 2) + y2d
2163 dssd(i, j, k, 2) = dssd(i, j, k, 2) + y2d
2166 call popreal8(sface)
2170 j = mod(ii/
il,
ny) + 2
2175 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
2176 y1 = dss(i+1, j, k, 1)
2177 call pushcontrol1b(0)
2179 y1 = dss(i, j, k, 1)
2180 call pushcontrol1b(1)
2182 if (dpmax .gt. y1)
then
2184 call pushcontrol1b(0)
2187 call pushcontrol1b(1)
2189 dis2 = ppor*fis2*min1
2191 dis4 =
mydim(arg1, dis2)
2195 dr = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
2199 dru = dis2*ddw2 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivx)-
w(i&
2203 drv = dis2*ddw3 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivy)-
w(i&
2207 drw = dis2*ddw4 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivz)-
w(i&
2210 dre = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)-
w(i-1, j, k,
irhoe)-&
2216 if (correctfork)
then
2218 & )*
w(i, j, k,
itu1)
2219 drk = dis2*ddw6 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
itu1)-&
2222 call pushcontrol1b(1)
2226 call pushcontrol1b(0)
2231 gm1 = gammaavg -
one
2240 area = sqrt(
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 +
si(i, j, k, &
2242 if (1.e-25_realtype .lt. area)
then
2244 call pushcontrol1b(0)
2246 call pushcontrol1b(1)
2247 max1 = 1.e-25_realtype
2250 sx =
si(i, j, k, 1)*tmp
2251 sy =
si(i, j, k, 2)*tmp
2252 sz =
si(i, j, k, 3)*tmp
2253 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
2254 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
2256 unavg = uavg*sx + vavg*sy + wavg*sz
2262 sface =
sfacei(i, j, k)*tmp
2263 call pushcontrol1b(1)
2265 call pushcontrol1b(0)
2267 if (unavg - sface + aavg .ge. 0.)
then
2268 lam1 = unavg - sface + aavg
2269 call pushcontrol1b(0)
2271 lam1 = -(unavg-sface+aavg)
2272 call pushcontrol1b(1)
2274 if (unavg - sface - aavg .ge. 0.)
then
2275 lam2 = unavg - sface - aavg
2276 call pushcontrol1b(0)
2278 lam2 = -(unavg-sface-aavg)
2279 call pushcontrol1b(1)
2281 if (unavg - sface .ge. 0.)
then
2282 lam3 = unavg - sface
2283 call pushcontrol1b(0)
2285 lam3 = -(unavg-sface)
2286 call pushcontrol1b(1)
2289 if (lam1 .lt. epsacoustic*rrad)
then
2290 max2 = epsacoustic*rrad
2291 call pushcontrol1b(0)
2294 call pushcontrol1b(1)
2299 if (lam2 .lt. epsacoustic*rrad)
then
2300 max3 = epsacoustic*rrad
2301 call pushcontrol1b(0)
2304 call pushcontrol1b(1)
2307 if (lam3 .lt. epsshear*rrad)
then
2308 max4 = epsshear*rrad
2309 call pushcontrol1b(0)
2312 call pushcontrol1b(1)
2317 abv1 =
half*(lam1+lam2)
2318 abv2 =
half*(lam1-lam2)
2320 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
2322 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
2323 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
2324 abv7 = abv2*abv4*ovaavg + abv3*abv5
2339 lam3d = lam3d + drw*fsd
2342 abv6d = abv6d + wavg*fsd
2344 abv7d = abv7d + sz*fsd
2346 lam3d = lam3d + drv*fsd
2349 abv6d = abv6d + vavg*fsd
2351 abv7d = abv7d + sy*fsd
2353 lam3d = lam3d + dru*fsd
2356 abv6d = abv6d + uavg*fsd
2358 abv7d = abv7d + sx*fsd
2361 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
2362 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
2363 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
2364 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
2365 lam3d = lam3d + dr*fsd - abv3d
2366 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
2367 ova2avgd = abv3*abv4*abv6d
2368 sxd = sxd + dru*abv5d
2369 syd = syd + drv*abv5d
2370 szd = szd + drw*abv5d
2371 unavgd = unavgd - dr*abv5d
2373 drd = lam3*fsd + alphaavg*tempd2 - unavg*abv5d
2374 drud = drud + sx*abv5d - uavg*tempd2
2375 drvd = drvd + sy*abv5d - vavg*tempd2
2376 drwd = drwd + sz*abv5d - wavg*tempd2
2377 drkd = -(gm53*abv4d)
2378 alphaavgd = dr*tempd2
2379 uavgd = uavgd - dru*tempd2
2380 vavgd = vavgd - drv*tempd2
2381 dred = dred + tempd2
2382 wavgd = wavgd - drw*tempd2
2388 call popcontrol1b(branch)
2389 if (branch .eq. 0)
then
2390 rradd = epsshear*max4d
2397 aread = aread + max3*lam2d
2398 call popcontrol1b(branch)
2399 if (branch .eq. 0)
then
2400 rradd = rradd + epsacoustic*max3d
2406 aread = aread + max2*lam1d
2407 call popcontrol1b(branch)
2408 if (branch .eq. 0)
then
2409 rradd = rradd + epsacoustic*max2d
2414 lam3d = lam3d + rradd
2416 call popcontrol1b(branch)
2417 if (branch .eq. 0)
then
2418 unavgd = unavgd + lam3d
2419 sfaced = sfaced - lam3d
2421 sfaced = sfaced + lam3d
2422 unavgd = unavgd - lam3d
2424 call popcontrol1b(branch)
2425 if (branch .eq. 0)
then
2426 unavgd = unavgd + lam2d
2427 sfaced = sfaced - lam2d
2428 aavgd = aavgd - lam2d
2430 sfaced = sfaced + lam2d
2431 unavgd = unavgd - lam2d
2432 aavgd = aavgd + lam2d
2434 call popcontrol1b(branch)
2435 if (branch .eq. 0)
then
2436 unavgd = unavgd + lam1d
2437 sfaced = sfaced - lam1d
2438 aavgd = aavgd + lam1d
2440 sfaced = sfaced + lam1d
2441 unavgd = unavgd - lam1d
2442 aavgd = aavgd - lam1d
2444 call popcontrol1b(branch)
2445 if (branch .eq. 0)
then
2449 tmpd =
sfacei(i, j, k)*sfaced
2452 alphaavgd = alphaavgd + havgd
2453 tempd2 =
half*alphaavgd
2454 aavgd = aavgd -
one*ovaavgd/aavg**2
2455 if (a2avg .eq. 0.0_8)
then
2456 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
2458 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 + &
2461 uavgd = uavgd + sx*unavgd + 2*uavg*tempd2
2462 sxd = sxd + uavg*unavgd
2463 vavgd = vavgd + sy*unavgd + 2*vavg*tempd2
2464 syd = syd + vavg*unavgd
2465 wavgd = wavgd + sz*unavgd + 2*wavg*tempd2
2466 szd = szd + wavg*unavgd
2467 kavgd = -(gm53*ovgm1*havgd)
2468 sid(i, j, k, 3) =
sid(i, j, k, 3) + tmp*szd
2469 tmpd = tmpd +
si(i, j, k, 3)*szd +
si(i, j, k, 2)*syd +
si(i, j&
2471 sid(i, j, k, 2) =
sid(i, j, k, 2) + tmp*syd
2472 sid(i, j, k, 1) =
sid(i, j, k, 1) + tmp*sxd
2473 max1d = -(
one*tmpd/max1**2)
2474 call popcontrol1b(branch)
2475 if (branch .eq. 0) aread = aread + max1d
2476 temp3 =
si(i, j, k, 3)
2477 temp2 =
si(i, j, k, 2)
2478 temp1 =
si(i, j, k, 1)
2479 if (temp1**2 + temp2**2 + temp3**2 .eq. 0.0_8)
then
2482 tempd = aread/(2.0*sqrt(temp1**2+temp2**2+temp3**2))
2484 sid(i, j, k, 1) =
sid(i, j, k, 1) + 2*temp1*tempd
2485 sid(i, j, k, 2) =
sid(i, j, k, 2) + 2*temp2*tempd
2486 sid(i, j, k, 3) =
sid(i, j, k, 3) + 2*temp3*tempd
2487 temp3 =
w(i+1, j, k,
irho)
2488 temp1 =
w(i, j, k,
irho)
2489 tempd3 =
gamma(i+1, j, k)*
half*a2avgd/temp3
2490 tempd =
gamma(i, j, k)*
half*a2avgd/temp1
2491 pd(i, j, k) =
pd(i, j, k) + tempd
2492 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd/temp1
2493 pd(i+1, j, k) =
pd(i+1, j, k) + tempd3
2494 wd(i+1, j, k,
irho) =
wd(i+1, j, k,
irho) -
p(i+1, j, k)*tempd3/&
2502 call popcontrol1b(branch)
2503 if (branch .eq. 0)
then
2507 tempd0 = -(dis4*drkd)
2510 temp3 =
w(i-1, j, k,
itu1)
2511 temp2 =
w(i-1, j, k,
irho)
2512 temp1 =
w(i+2, j, k,
itu1)
2513 temp0 =
w(i+2, j, k,
irho)
2515 ddw6d = dis2*drkd -
three*tempd0
2516 dis4d = -((temp0*temp1-temp2*temp3-
three*ddw6)*drkd)
2517 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp1*tempd0
2518 wd(i+2, j, k,
itu1) =
wd(i+2, j, k,
itu1) + temp0*tempd0
2519 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp3*tempd0
2520 wd(i-1, j, k,
itu1) =
wd(i-1, j, k,
itu1) - temp2*tempd0
2528 tempd1 = -(dis4*drd)
2529 tempd0 = -(dis4*drwd)
2530 temp0 =
w(i+2, j, k,
irho)
2531 temp1 =
w(i+2, j, k,
ivz)
2532 temp2 =
w(i-1, j, k,
irho)
2533 temp3 =
w(i-1, j, k,
ivz)
2534 tempd2 = -(dis4*dred)
2535 dis2d = dis2d + ddw5*dred + ddw4*drwd + ddw3*drvd + ddw2*drud + &
2537 ddw5d = dis2*dred -
three*tempd2
2539 & ddw5)*dred - (temp0*temp1-temp2*temp3-
three*ddw4)*drwd
2544 ddw4d = dis2*drwd -
three*tempd0
2545 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp1*tempd0
2546 wd(i+2, j, k,
ivz) =
wd(i+2, j, k,
ivz) + temp0*tempd0
2547 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp3*tempd0
2548 wd(i-1, j, k,
ivz) =
wd(i-1, j, k,
ivz) - temp2*tempd0
2555 temp3 =
w(i-1, j, k,
ivy)
2556 temp2 =
w(i-1, j, k,
irho)
2557 temp1 =
w(i+2, j, k,
ivy)
2558 temp0 =
w(i+2, j, k,
irho)
2559 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*drvd
2560 tempd0 = -(dis4*drvd)
2561 ddw3d = dis2*drvd -
three*tempd0
2562 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp1*tempd0
2563 wd(i+2, j, k,
ivy) =
wd(i+2, j, k,
ivy) + temp0*tempd0
2564 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp3*tempd0
2565 wd(i-1, j, k,
ivy) =
wd(i-1, j, k,
ivy) - temp2*tempd0
2572 temp1 =
w(i-1, j, k,
ivx)
2573 temp0 =
w(i-1, j, k,
irho)
2574 temp =
w(i+2, j, k,
ivx)
2575 temp2 =
w(i+2, j, k,
irho)
2576 dis4d = dis4d - (temp2*temp-temp0*temp1-
three*ddw2)*drud - (
w(i+&
2578 tempd2 = -(dis4*drud)
2579 ddw2d = dis2*drud -
three*tempd2
2580 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp*tempd2
2581 wd(i+2, j, k,
ivx) =
wd(i+2, j, k,
ivx) + temp2*tempd2
2582 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp1*tempd2
2583 wd(i-1, j, k,
ivx) =
wd(i-1, j, k,
ivx) - temp0*tempd2
2590 ddw1d = dis2*drd -
three*tempd1
2596 call mydim_b(arg1, arg1d, dis2, dis2d, dis4d)
2597 min1d = ppor*fis2*dis2d
2598 call popcontrol1b(branch)
2599 if (branch .eq. 0)
then
2604 call popcontrol1b(branch)
2605 if (branch .eq. 0)
then
2606 dssd(i+1, j, k, 1) = dssd(i+1, j, k, 1) + y1d
2608 dssd(i, j, k, 1) = dssd(i, j, k, 1) + y1d
2615 j = mod(ii/
ie,
je) + 1
2617 if (
p(i+1, j, k) -
p(i, j, k) .ge. 0.)
then
2618 abs1 =
p(i+1, j, k) -
p(i, j, k)
2619 call pushcontrol1b(1)
2621 abs1 = -(
p(i+1, j, k)-
p(i, j, k))
2622 call pushcontrol1b(0)
2624 if (
p(i, j, k) -
p(i-1, j, k) .ge. 0.)
then
2625 abs4 =
p(i, j, k) -
p(i-1, j, k)
2626 call pushcontrol1b(0)
2628 abs4 = -(
p(i, j, k)-
p(i-1, j, k))
2629 call pushcontrol1b(1)
2631 x1 = (
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))/(omega*(
p(i+1, j&
2632 & , k)+
two*
p(i, j, k)+
p(i-1, j, k))+oneminomega*(abs1+abs4)+plim&
2634 if (x1 .ge. 0.)
then
2635 call pushcontrol1b(0)
2637 call pushcontrol1b(1)
2639 if (
p(i, j+1, k) -
p(i, j, k) .ge. 0.)
then
2640 abs2 =
p(i, j+1, k) -
p(i, j, k)
2641 call pushcontrol1b(1)
2643 abs2 = -(
p(i, j+1, k)-
p(i, j, k))
2644 call pushcontrol1b(0)
2646 if (
p(i, j, k) -
p(i, j-1, k) .ge. 0.)
then
2647 abs5 =
p(i, j, k) -
p(i, j-1, k)
2648 call pushcontrol1b(0)
2650 abs5 = -(
p(i, j, k)-
p(i, j-1, k))
2651 call pushcontrol1b(1)
2653 x2 = (
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))/(omega*(
p(i, j+1&
2654 & , k)+
two*
p(i, j, k)+
p(i, j-1, k))+oneminomega*(abs2+abs5)+plim&
2656 if (x2 .ge. 0.)
then
2657 call pushcontrol1b(0)
2659 call pushcontrol1b(1)
2661 if (
p(i, j, k+1) -
p(i, j, k) .ge. 0.)
then
2662 abs3 =
p(i, j, k+1) -
p(i, j, k)
2663 call pushcontrol1b(1)
2665 abs3 = -(
p(i, j, k+1)-
p(i, j, k))
2666 call pushcontrol1b(0)
2668 if (
p(i, j, k) -
p(i, j, k-1) .ge. 0.)
then
2669 abs6 =
p(i, j, k) -
p(i, j, k-1)
2670 call pushcontrol1b(0)
2672 abs6 = -(
p(i, j, k)-
p(i, j, k-1))
2673 call pushcontrol1b(1)
2675 x3 = (
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))/(omega*(
p(i, j, &
2676 & k+1)+
two*
p(i, j, k)+
p(i, j, k-1))+oneminomega*(abs3+abs6)+plim&
2678 if (x3 .ge. 0.)
then
2679 x3d = dssd(i, j, k, 3)
2680 dssd(i, j, k, 3) = 0.0_8
2682 x3d = -dssd(i, j, k, 3)
2683 dssd(i, j, k, 3) = 0.0_8
2685 temp1 = omega*(
p(i, j, k+1)+
two*
p(i, j, k)+
p(i, j, k-1)) + &
2686 & oneminomega*(abs3+abs6) + plim
2688 tempd1 = -((
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))*tempd/&
2690 tempd0 = omega*tempd1
2691 pd(i, j, k+1) =
pd(i, j, k+1) + tempd + tempd0
2692 pd(i, j, k) =
pd(i, j, k) +
two*tempd0 -
two*tempd
2693 pd(i, j, k-1) =
pd(i, j, k-1) + tempd + tempd0
2694 abs3d = oneminomega*tempd1
2695 abs6d = oneminomega*tempd1
2696 plimd = plimd + tempd1
2697 call popcontrol1b(branch)
2698 if (branch .eq. 0)
then
2699 pd(i, j, k) =
pd(i, j, k) + abs6d
2700 pd(i, j, k-1) =
pd(i, j, k-1) - abs6d
2702 pd(i, j, k-1) =
pd(i, j, k-1) + abs6d
2703 pd(i, j, k) =
pd(i, j, k) - abs6d
2705 call popcontrol1b(branch)
2706 if (branch .eq. 0)
then
2707 pd(i, j, k) =
pd(i, j, k) + abs3d
2708 pd(i, j, k+1) =
pd(i, j, k+1) - abs3d
2710 pd(i, j, k+1) =
pd(i, j, k+1) + abs3d
2711 pd(i, j, k) =
pd(i, j, k) - abs3d
2713 call popcontrol1b(branch)
2714 if (branch .eq. 0)
then
2715 x2d = dssd(i, j, k, 2)
2716 dssd(i, j, k, 2) = 0.0_8
2718 x2d = -dssd(i, j, k, 2)
2719 dssd(i, j, k, 2) = 0.0_8
2721 temp1 = omega*(
p(i, j+1, k)+
two*
p(i, j, k)+
p(i, j-1, k)) + &
2722 & oneminomega*(abs2+abs5) + plim
2724 tempd1 = -((
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))*tempd/&
2726 tempd0 = omega*tempd1
2727 pd(i, j+1, k) =
pd(i, j+1, k) + tempd + tempd0
2728 pd(i, j, k) =
pd(i, j, k) +
two*tempd0 -
two*tempd
2729 pd(i, j-1, k) =
pd(i, j-1, k) + tempd + tempd0
2730 abs2d = oneminomega*tempd1
2731 abs5d = oneminomega*tempd1
2732 plimd = plimd + tempd1
2733 call popcontrol1b(branch)
2734 if (branch .eq. 0)
then
2735 pd(i, j, k) =
pd(i, j, k) + abs5d
2736 pd(i, j-1, k) =
pd(i, j-1, k) - abs5d
2738 pd(i, j-1, k) =
pd(i, j-1, k) + abs5d
2739 pd(i, j, k) =
pd(i, j, k) - abs5d
2741 call popcontrol1b(branch)
2742 if (branch .eq. 0)
then
2743 pd(i, j, k) =
pd(i, j, k) + abs2d
2744 pd(i, j+1, k) =
pd(i, j+1, k) - abs2d
2746 pd(i, j+1, k) =
pd(i, j+1, k) + abs2d
2747 pd(i, j, k) =
pd(i, j, k) - abs2d
2749 call popcontrol1b(branch)
2750 if (branch .eq. 0)
then
2751 x1d = dssd(i, j, k, 1)
2752 dssd(i, j, k, 1) = 0.0_8
2754 x1d = -dssd(i, j, k, 1)
2755 dssd(i, j, k, 1) = 0.0_8
2757 temp = omega*(
p(i+1, j, k)+
two*
p(i, j, k)+
p(i-1, j, k)) + &
2758 & oneminomega*(abs1+abs4) + plim
2760 tempd0 = -((
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))*tempd/temp&
2762 tempd1 = omega*tempd0
2763 pd(i+1, j, k) =
pd(i+1, j, k) + tempd + tempd1
2764 pd(i, j, k) =
pd(i, j, k) +
two*tempd1 -
two*tempd
2765 pd(i-1, j, k) =
pd(i-1, j, k) + tempd + tempd1
2766 abs1d = oneminomega*tempd0
2767 abs4d = oneminomega*tempd0
2768 plimd = plimd + tempd0
2769 call popcontrol1b(branch)
2770 if (branch .eq. 0)
then
2771 pd(i, j, k) =
pd(i, j, k) + abs4d
2772 pd(i-1, j, k) =
pd(i-1, j, k) - abs4d
2774 pd(i-1, j, k) =
pd(i-1, j, k) + abs4d
2775 pd(i, j, k) =
pd(i, j, k) - abs4d
2777 call popcontrol1b(branch)
2778 if (branch .eq. 0)
then
2779 pd(i, j, k) =
pd(i, j, k) + abs1d
2780 pd(i+1, j, k) =
pd(i+1, j, k) - abs1d
2782 pd(i+1, j, k) =
pd(i+1, j, k) + abs1d
2783 pd(i, j, k) =
pd(i, j, k) - abs1d
2801 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,
ib, &
2802 &
jb,
kb,
w,
p,
pori,
porj,
pork,
fw,
gamma,
si,
sj,
sk,
indfamilyi, &
2815 real(kind=realtype),
parameter :: dpmax=0.25_realtype
2816 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
2817 real(kind=realtype),
parameter :: epsshear=0.025_realtype
2818 real(kind=realtype),
parameter :: omega=0.5_realtype
2819 real(kind=realtype),
parameter :: oneminomega=
one-omega
2823 integer(kind=inttype) :: i, j, k, ind, ii
2824 real(kind=realtype) :: plim, sface
2825 real(kind=realtype) :: sfil, fis2, fis4
2826 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
2827 real(kind=realtype) :: ppor, rrad, dis2, dis4
2828 real(kind=realtype) :: dp1, dp2, tmp, fs
2829 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, ddw6
2830 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
2831 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
2832 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
2833 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
2834 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
2835 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
2836 logical :: correctfork
2842 real(kind=realtype) :: x1
2843 real(kind=realtype) :: x2
2844 real(kind=realtype) :: x3
2845 real(kind=realtype) :: y1
2846 real(kind=realtype) :: y2
2847 real(kind=realtype) :: y3
2848 real(kind=realtype) :: abs0
2849 real(kind=realtype) :: min1
2850 real(realtype) :: max1
2851 real(kind=realtype) :: max2
2852 real(kind=realtype) :: max3
2853 real(kind=realtype) :: max4
2854 real(kind=realtype) :: min2
2855 real(realtype) :: max5
2856 real(kind=realtype) :: max6
2857 real(kind=realtype) :: max7
2858 real(kind=realtype) :: max8
2859 real(kind=realtype) :: min3
2860 real(realtype) :: max9
2861 real(kind=realtype) :: max10
2862 real(kind=realtype) :: max11
2863 real(kind=realtype) :: max12
2864 real(kind=realtype) :: abs1
2865 real(kind=realtype) :: abs2
2866 real(kind=realtype) :: abs3
2867 real(kind=realtype) :: abs4
2868 real(kind=realtype) :: abs5
2869 real(kind=realtype) :: abs6
2870 real(kind=realtype) :: arg1
2871 if (
rfil .ge. 0.)
then
2902 j = mod(ii/
ie,
je) + 1
2904 if (
p(i+1, j, k) -
p(i, j, k) .ge. 0.)
then
2905 abs1 =
p(i+1, j, k) -
p(i, j, k)
2907 abs1 = -(
p(i+1, j, k)-
p(i, j, k))
2909 if (
p(i, j, k) -
p(i-1, j, k) .ge. 0.)
then
2910 abs4 =
p(i, j, k) -
p(i-1, j, k)
2912 abs4 = -(
p(i, j, k)-
p(i-1, j, k))
2914 x1 = (
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))/(omega*(
p(i+1, j&
2915 & , k)+
two*
p(i, j, k)+
p(i-1, j, k))+oneminomega*(abs1+abs4)+plim&
2917 if (x1 .ge. 0.)
then
2918 dss(i, j, k, 1) = x1
2920 dss(i, j, k, 1) = -x1
2922 if (
p(i, j+1, k) -
p(i, j, k) .ge. 0.)
then
2923 abs2 =
p(i, j+1, k) -
p(i, j, k)
2925 abs2 = -(
p(i, j+1, k)-
p(i, j, k))
2927 if (
p(i, j, k) -
p(i, j-1, k) .ge. 0.)
then
2928 abs5 =
p(i, j, k) -
p(i, j-1, k)
2930 abs5 = -(
p(i, j, k)-
p(i, j-1, k))
2932 x2 = (
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))/(omega*(
p(i, j+1&
2933 & , k)+
two*
p(i, j, k)+
p(i, j-1, k))+oneminomega*(abs2+abs5)+plim&
2935 if (x2 .ge. 0.)
then
2936 dss(i, j, k, 2) = x2
2938 dss(i, j, k, 2) = -x2
2940 if (
p(i, j, k+1) -
p(i, j, k) .ge. 0.)
then
2941 abs3 =
p(i, j, k+1) -
p(i, j, k)
2943 abs3 = -(
p(i, j, k+1)-
p(i, j, k))
2945 if (
p(i, j, k) -
p(i, j, k-1) .ge. 0.)
then
2946 abs6 =
p(i, j, k) -
p(i, j, k-1)
2948 abs6 = -(
p(i, j, k)-
p(i, j, k-1))
2950 x3 = (
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))/(omega*(
p(i, j, &
2951 & k+1)+
two*
p(i, j, k)+
p(i, j, k-1))+oneminomega*(abs3+abs6)+plim&
2953 if (x3 .ge. 0.)
then
2954 dss(i, j, k, 3) = x3
2956 dss(i, j, k, 3) = -x3
2965 j = mod(ii/
il,
ny) + 2
2970 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
2971 y1 = dss(i+1, j, k, 1)
2973 y1 = dss(i, j, k, 1)
2975 if (dpmax .gt. y1)
then
2980 dis2 = ppor*fis2*min1
2982 dis4 =
mydim(arg1, dis2)
2986 dr = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
2990 dru = dis2*ddw2 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivx)-
w(i&
2994 drv = dis2*ddw3 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivy)-
w(i&
2998 drw = dis2*ddw4 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivz)-
w(i&
3001 dre = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)-
w(i-1, j, k,
irhoe)-&
3007 if (correctfork)
then
3009 & )*
w(i, j, k,
itu1)
3010 drk = dis2*ddw6 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
itu1)-&
3020 gm1 = gammaavg -
one
3029 area = sqrt(
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 +
si(i, j, k, &
3031 if (1.e-25_realtype .lt. area)
then
3034 max1 = 1.e-25_realtype
3037 sx =
si(i, j, k, 1)*tmp
3038 sy =
si(i, j, k, 2)*tmp
3039 sz =
si(i, j, k, 3)*tmp
3040 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
3041 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
3043 unavg = uavg*sx + vavg*sy + wavg*sz
3049 if (unavg - sface + aavg .ge. 0.)
then
3050 lam1 = unavg - sface + aavg
3052 lam1 = -(unavg-sface+aavg)
3054 if (unavg - sface - aavg .ge. 0.)
then
3055 lam2 = unavg - sface - aavg
3057 lam2 = -(unavg-sface-aavg)
3059 if (unavg - sface .ge. 0.)
then
3060 lam3 = unavg - sface
3062 lam3 = -(unavg-sface)
3065 if (lam1 .lt. epsacoustic*rrad)
then
3066 max2 = epsacoustic*rrad
3073 if (lam2 .lt. epsacoustic*rrad)
then
3074 max3 = epsacoustic*rrad
3079 if (lam3 .lt. epsshear*rrad)
then
3080 max4 = epsshear*rrad
3087 abv1 =
half*(lam1+lam2)
3088 abv2 =
half*(lam1-lam2)
3090 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
3092 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
3093 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
3094 abv7 = abv2*abv4*ovaavg + abv3*abv5
3101 fs = lam3*dru + uavg*abv6 + sx*abv7
3105 fs = lam3*drv + vavg*abv6 + sy*abv7
3109 fs = lam3*drw + wavg*abv6 + sz*abv7
3113 fs = lam3*dre + havg*abv6 + unavg*abv7
3123 j = mod(ii/
nx,
jl) + 1
3128 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
3129 y2 = dss(i, j+1, k, 2)
3131 y2 = dss(i, j, k, 2)
3133 if (dpmax .gt. y2)
then
3138 dis2 = ppor*fis2*min2
3140 dis4 =
mydim(arg1, dis2)
3144 dr = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
3148 dru = dis2*ddw2 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivx)-
w(i&
3152 drv = dis2*ddw3 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivy)-
w(i&
3156 drw = dis2*ddw4 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivz)-
w(i&
3159 dre = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)-
w(i, j-1, k,
irhoe)-&
3165 if (correctfork)
then
3167 & )*
w(i, j, k,
itu1)
3168 drk = dis2*ddw6 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
itu1)-&
3178 gm1 = gammaavg -
one
3187 area = sqrt(
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 +
sj(i, j, k, &
3189 if (1.e-25_realtype .lt. area)
then
3192 max5 = 1.e-25_realtype
3195 sx =
sj(i, j, k, 1)*tmp
3196 sy =
sj(i, j, k, 2)*tmp
3197 sz =
sj(i, j, k, 3)*tmp
3198 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
3199 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
3201 unavg = uavg*sx + vavg*sy + wavg*sz
3207 if (unavg - sface + aavg .ge. 0.)
then
3208 lam1 = unavg - sface + aavg
3210 lam1 = -(unavg-sface+aavg)
3212 if (unavg - sface - aavg .ge. 0.)
then
3213 lam2 = unavg - sface - aavg
3215 lam2 = -(unavg-sface-aavg)
3217 if (unavg - sface .ge. 0.)
then
3218 lam3 = unavg - sface
3220 lam3 = -(unavg-sface)
3223 if (lam1 .lt. epsacoustic*rrad)
then
3224 max6 = epsacoustic*rrad
3231 if (lam2 .lt. epsacoustic*rrad)
then
3232 max7 = epsacoustic*rrad
3237 if (lam3 .lt. epsshear*rrad)
then
3238 max8 = epsshear*rrad
3245 abv1 =
half*(lam1+lam2)
3246 abv2 =
half*(lam1-lam2)
3248 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
3250 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
3251 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
3252 abv7 = abv2*abv4*ovaavg + abv3*abv5
3259 fs = lam3*dru + uavg*abv6 + sx*abv7
3263 fs = lam3*drv + vavg*abv6 + sy*abv7
3267 fs = lam3*drw + wavg*abv6 + sz*abv7
3271 fs = lam3*dre + havg*abv6 + unavg*abv7
3281 j = mod(ii/
nx,
ny) + 2
3286 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
3287 y3 = dss(i, j, k+1, 3)
3289 y3 = dss(i, j, k, 3)
3291 if (dpmax .gt. y3)
then
3296 dis2 = ppor*fis2*min3
3298 dis4 =
mydim(arg1, dis2)
3302 dr = dis2*ddw1 - dis4*(
w(i, j, k+2,
irho)-
w(i, j, k-1,
irho)-&
3306 dru = dis2*ddw2 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivx)-
w(i&
3310 drv = dis2*ddw3 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivy)-
w(i&
3314 drw = dis2*ddw4 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivz)-
w(i&
3317 dre = dis2*ddw5 - dis4*(
w(i, j, k+2,
irhoe)-
w(i, j, k-1,
irhoe)-&
3323 if (correctfork)
then
3325 & )*
w(i, j, k,
itu1)
3326 drk = dis2*ddw6 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
itu1)-&
3336 gm1 = gammaavg -
one
3345 area = sqrt(
sk(i, j, k, 1)**2 +
sk(i, j, k, 2)**2 +
sk(i, j, k, &
3347 if (1.e-25_realtype .lt. area)
then
3350 max9 = 1.e-25_realtype
3353 sx =
sk(i, j, k, 1)*tmp
3354 sy =
sk(i, j, k, 2)*tmp
3355 sz =
sk(i, j, k, 3)*tmp
3356 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
3357 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
3359 unavg = uavg*sx + vavg*sy + wavg*sz
3365 if (unavg - sface + aavg .ge. 0.)
then
3366 lam1 = unavg - sface + aavg
3368 lam1 = -(unavg-sface+aavg)
3370 if (unavg - sface - aavg .ge. 0.)
then
3371 lam2 = unavg - sface - aavg
3373 lam2 = -(unavg-sface-aavg)
3375 if (unavg - sface .ge. 0.)
then
3376 lam3 = unavg - sface
3378 lam3 = -(unavg-sface)
3381 if (lam1 .lt. epsacoustic*rrad)
then
3382 max10 = epsacoustic*rrad
3389 if (lam2 .lt. epsacoustic*rrad)
then
3390 max11 = epsacoustic*rrad
3395 if (lam3 .lt. epsshear*rrad)
then
3396 max12 = epsshear*rrad
3403 abv1 =
half*(lam1+lam2)
3404 abv2 =
half*(lam1-lam2)
3406 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
3408 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
3409 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
3410 abv7 = abv2*abv4*ovaavg + abv3*abv5
3417 fs = lam3*dru + uavg*abv6 + sx*abv7
3421 fs = lam3*drv + vavg*abv6 + sy*abv7
3425 fs = lam3*drw + wavg*abv6 + sz*abv7
3429 fs = lam3*dre + havg*abv6 + unavg*abv7
3453 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,
ib, &
3454 &
jb,
kb,
w,
wd,
p,
pd,
pori,
porj,
pork,
fw,
fwd,
radi,
radid,
radj, &
3468 real(kind=realtype),
parameter :: dssmax=0.25_realtype
3472 integer(kind=inttype) :: i, j, k, ind, ii
3473 real(kind=realtype) :: sslim, rhoi
3474 real(kind=realtype) :: sslimd
3475 real(kind=realtype) :: sfil, fis2, fis4
3476 real(kind=realtype) :: ppor, rrad, dis2, dis4
3477 real(kind=realtype) :: rradd, dis2d, dis4d
3478 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, fs
3479 real(kind=realtype) :: ddw1d, ddw2d, ddw3d, ddw4d, ddw5d, fsd
3480 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
3481 real(kind=realtype),
dimension(ie, je, ke, 3) :: dssd
3482 real(kind=realtype),
dimension(0:ib, 0:jb, 0:kb) :: ss
3483 real(kind=realtype),
dimension(0:ib, 0:jb, 0:kb) :: ssd
3490 real(kind=realtype) :: x1
3491 real(kind=realtype) :: x1d
3492 real(kind=realtype) :: x2
3493 real(kind=realtype) :: x2d
3494 real(kind=realtype) :: x3
3495 real(kind=realtype) :: x3d
3496 real(kind=realtype) :: y1
3497 real(kind=realtype) :: y1d
3498 real(kind=realtype) :: y2
3499 real(kind=realtype) :: y2d
3500 real(kind=realtype) :: y3
3501 real(kind=realtype) :: y3d
3502 real(kind=realtype) :: abs0
3503 real(kind=realtype) :: min1
3504 real(kind=realtype) :: min1d
3505 real(kind=realtype) :: min2
3506 real(kind=realtype) :: min2d
3507 real(kind=realtype) :: min3
3508 real(kind=realtype) :: min3d
3509 real(kind=realtype) :: arg1
3510 real(kind=realtype) :: arg1d
3511 real(kind=realtype) :: temp
3512 real(kind=realtype) :: temp0
3513 real(kind=realtype) :: tempd
3514 real(kind=realtype) :: temp1
3515 real(kind=realtype) :: tempd0
3517 real(kind=realtype) :: temp2
3518 real(kind=realtype) :: temp3
3519 real(kind=realtype) :: tempd1
3520 real(kind=realtype) :: tempd2
3521 if (
rfil .ge. 0.)
then
3544 call pushcontrol2b(1)
3553 do ii=0,(
ib+1)*(
jb+1)*(
kb+1)-1
3555 j = mod(ii/(
ib+1),
jb + 1)
3556 k = ii/((
ib+1)*(
jb+1))
3557 ss(i, j, k) =
p(i, j, k)/
w(i, j, k,
irho)**
gamma(i, j, k)
3559 call pushcontrol2b(2)
3561 call pushcontrol2b(0)
3567 j = mod(ii/
ie,
je) + 1
3569 x1 = (ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))/(ss(i+1, j, k&
3570 & )+
two*ss(i, j, k)+ss(i-1, j, k)+sslim)
3571 if (x1 .ge. 0.)
then
3572 dss(i, j, k, 1) = x1
3574 dss(i, j, k, 1) = -x1
3576 x2 = (ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))/(ss(i, j+1, k&
3577 & )+
two*ss(i, j, k)+ss(i, j-1, k)+sslim)
3578 if (x2 .ge. 0.)
then
3579 dss(i, j, k, 2) = x2
3581 dss(i, j, k, 2) = -x2
3583 x3 = (ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))/(ss(i, j, k+1&
3584 & )+
two*ss(i, j, k)+ss(i, j, k-1)+sslim)
3585 if (x3 .ge. 0.)
then
3586 dss(i, j, k, 3) = x3
3588 dss(i, j, k, 3) = -x3
3600 call pushcontrol1b(0)
3604 call pushcontrol1b(0)
3609 call pushcontrol1b(1)
3621 j = mod(ii/
nx,
ny) + 2
3626 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
3627 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
3628 y3 = dss(i, j, k+1, 3)
3629 call pushcontrol1b(0)
3631 y3 = dss(i, j, k, 3)
3632 call pushcontrol1b(1)
3634 if (dssmax .gt. y3)
then
3636 call pushcontrol1b(0)
3639 call pushcontrol1b(1)
3641 dis2 = fis2*rrad*min3
3643 dis4 =
mydim(arg1, dis2)
3649 ddw2 =
w(i, j, k+1,
ivx)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivx)*
w(&
3652 ddw3 =
w(i, j, k+1,
ivy)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivy)*
w(&
3655 ddw4 =
w(i, j, k+1,
ivz)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivz)*
w(&
3658 ddw5 =
w(i, j, k+1,
irhoe) +
p(i, j, k+1) - (
w(i, j, k,
irhoe)+
p&
3662 dis4d = -((
w(i, j, k+2,
irhoe)+
p(i, j, k+2)-
w(i, j, k-1,
irhoe)-&
3663 &
p(i, j, k-1)-
three*ddw5)*fsd)
3664 tempd1 = -(dis4*fsd)
3665 ddw5d = dis2*fsd -
three*tempd1
3667 pd(i, j, k+2) =
pd(i, j, k+2) + tempd1
3669 pd(i, j, k-1) =
pd(i, j, k-1) - tempd1
3671 pd(i, j, k+1) =
pd(i, j, k+1) + ddw5d
3673 pd(i, j, k) =
pd(i, j, k) - ddw5d
3675 temp3 =
w(i, j, k-1,
irho)
3676 temp2 =
w(i, j, k-1,
ivz)
3677 temp1 =
w(i, j, k+2,
irho)
3678 temp0 =
w(i, j, k+2,
ivz)
3679 dis2d = dis2d + ddw4*fsd
3680 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw4)*fsd
3681 tempd2 = -(dis4*fsd)
3682 ddw4d = dis2*fsd -
three*tempd2
3683 wd(i, j, k+2,
ivz) =
wd(i, j, k+2,
ivz) + temp1*tempd2
3684 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp0*tempd2
3685 wd(i, j, k-1,
ivz) =
wd(i, j, k-1,
ivz) - temp3*tempd2
3686 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp2*tempd2
3694 temp3 =
w(i, j, k-1,
irho)
3695 temp2 =
w(i, j, k-1,
ivy)
3696 temp1 =
w(i, j, k+2,
irho)
3697 temp0 =
w(i, j, k+2,
ivy)
3698 dis2d = dis2d + ddw3*fsd
3699 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*fsd
3700 tempd2 = -(dis4*fsd)
3701 ddw3d = dis2*fsd -
three*tempd2
3702 wd(i, j, k+2,
ivy) =
wd(i, j, k+2,
ivy) + temp1*tempd2
3703 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp0*tempd2
3704 wd(i, j, k-1,
ivy) =
wd(i, j, k-1,
ivy) - temp3*tempd2
3705 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp2*tempd2
3713 temp3 =
w(i, j, k-1,
irho)
3714 temp2 =
w(i, j, k-1,
ivx)
3715 temp1 =
w(i, j, k+2,
irho)
3716 temp0 =
w(i, j, k+2,
ivx)
3717 dis2d = dis2d + ddw2*fsd
3718 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*fsd
3719 tempd2 = -(dis4*fsd)
3720 ddw2d = dis2*fsd -
three*tempd2
3721 wd(i, j, k+2,
ivx) =
wd(i, j, k+2,
ivx) + temp1*tempd2
3722 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp0*tempd2
3723 wd(i, j, k-1,
ivx) =
wd(i, j, k-1,
ivx) - temp3*tempd2
3724 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp2*tempd2
3732 dis2d = dis2d + ddw1*fsd
3735 tempd1 = -(dis4*fsd)
3736 ddw1d = dis2*fsd -
three*tempd1
3742 call mydim_b(arg1, arg1d, dis2, dis2d, dis4d)
3743 rradd = fis4*arg1d + min3*fis2*dis2d
3744 min3d = rrad*fis2*dis2d
3745 call popcontrol1b(branch)
3746 if (branch .eq. 0)
then
3751 call popcontrol1b(branch)
3752 if (branch .eq. 0)
then
3753 dssd(i, j, k+1, 3) = dssd(i, j, k+1, 3) + y3d
3755 dssd(i, j, k, 3) = dssd(i, j, k, 3) + y3d
3758 radkd(i, j, k+1) =
radkd(i, j, k+1) + ppor*rradd
3763 j = mod(ii/
nx,
jl) + 1
3768 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
3769 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
3770 y2 = dss(i, j+1, k, 2)
3771 call pushcontrol1b(0)
3773 y2 = dss(i, j, k, 2)
3774 call pushcontrol1b(1)
3776 if (dssmax .gt. y2)
then
3778 call pushcontrol1b(0)
3781 call pushcontrol1b(1)
3783 dis2 = fis2*rrad*min2
3785 dis4 =
mydim(arg1, dis2)
3791 ddw2 =
w(i, j+1, k,
ivx)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivx)*
w(&
3794 ddw3 =
w(i, j+1, k,
ivy)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivy)*
w(&
3797 ddw4 =
w(i, j+1, k,
ivz)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivz)*
w(&
3800 ddw5 =
w(i, j+1, k,
irhoe) +
p(i, j+1, k) - (
w(i, j, k,
irhoe)+
p&
3804 dis4d = -((
w(i, j+2, k,
irhoe)+
p(i, j+2, k)-
w(i, j-1, k,
irhoe)-&
3805 &
p(i, j-1, k)-
three*ddw5)*fsd)
3806 tempd1 = -(dis4*fsd)
3807 ddw5d = dis2*fsd -
three*tempd1
3809 pd(i, j+2, k) =
pd(i, j+2, k) + tempd1
3811 pd(i, j-1, k) =
pd(i, j-1, k) - tempd1
3813 pd(i, j+1, k) =
pd(i, j+1, k) + ddw5d
3815 pd(i, j, k) =
pd(i, j, k) - ddw5d
3817 temp3 =
w(i, j-1, k,
irho)
3818 temp2 =
w(i, j-1, k,
ivz)
3819 temp1 =
w(i, j+2, k,
irho)
3820 temp0 =
w(i, j+2, k,
ivz)
3821 dis2d = dis2d + ddw4*fsd
3822 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw4)*fsd
3823 tempd2 = -(dis4*fsd)
3824 ddw4d = dis2*fsd -
three*tempd2
3825 wd(i, j+2, k,
ivz) =
wd(i, j+2, k,
ivz) + temp1*tempd2
3826 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp0*tempd2
3827 wd(i, j-1, k,
ivz) =
wd(i, j-1, k,
ivz) - temp3*tempd2
3828 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp2*tempd2
3836 temp3 =
w(i, j-1, k,
irho)
3837 temp2 =
w(i, j-1, k,
ivy)
3838 temp1 =
w(i, j+2, k,
irho)
3839 temp0 =
w(i, j+2, k,
ivy)
3840 dis2d = dis2d + ddw3*fsd
3841 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*fsd
3842 tempd2 = -(dis4*fsd)
3843 ddw3d = dis2*fsd -
three*tempd2
3844 wd(i, j+2, k,
ivy) =
wd(i, j+2, k,
ivy) + temp1*tempd2
3845 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp0*tempd2
3846 wd(i, j-1, k,
ivy) =
wd(i, j-1, k,
ivy) - temp3*tempd2
3847 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp2*tempd2
3855 temp3 =
w(i, j-1, k,
irho)
3856 temp2 =
w(i, j-1, k,
ivx)
3857 temp1 =
w(i, j+2, k,
irho)
3858 temp0 =
w(i, j+2, k,
ivx)
3859 dis2d = dis2d + ddw2*fsd
3860 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*fsd
3861 tempd2 = -(dis4*fsd)
3862 ddw2d = dis2*fsd -
three*tempd2
3863 wd(i, j+2, k,
ivx) =
wd(i, j+2, k,
ivx) + temp1*tempd2
3864 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp0*tempd2
3865 wd(i, j-1, k,
ivx) =
wd(i, j-1, k,
ivx) - temp3*tempd2
3866 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp2*tempd2
3874 dis2d = dis2d + ddw1*fsd
3877 tempd1 = -(dis4*fsd)
3878 ddw1d = dis2*fsd -
three*tempd1
3884 call mydim_b(arg1, arg1d, dis2, dis2d, dis4d)
3885 rradd = fis4*arg1d + min2*fis2*dis2d
3886 min2d = rrad*fis2*dis2d
3887 call popcontrol1b(branch)
3888 if (branch .eq. 0)
then
3893 call popcontrol1b(branch)
3894 if (branch .eq. 0)
then
3895 dssd(i, j+1, k, 2) = dssd(i, j+1, k, 2) + y2d
3897 dssd(i, j, k, 2) = dssd(i, j, k, 2) + y2d
3900 radjd(i, j+1, k) =
radjd(i, j+1, k) + ppor*rradd
3905 j = mod(ii/
il,
ny) + 2
3910 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
3911 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
3912 y1 = dss(i+1, j, k, 1)
3913 call pushcontrol1b(0)
3915 y1 = dss(i, j, k, 1)
3916 call pushcontrol1b(1)
3918 if (dssmax .gt. y1)
then
3920 call pushcontrol1b(0)
3923 call pushcontrol1b(1)
3925 dis2 = fis2*rrad*min1
3927 dis4 =
mydim(arg1, dis2)
3933 ddw2 =
w(i+1, j, k,
ivx)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivx)*
w(&
3936 ddw3 =
w(i+1, j, k,
ivy)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivy)*
w(&
3939 ddw4 =
w(i+1, j, k,
ivz)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivz)*
w(&
3942 ddw5 =
w(i+1, j, k,
irhoe) +
p(i+1, j, k) - (
w(i, j, k,
irhoe)+
p&
3946 dis4d = -((
w(i+2, j, k,
irhoe)+
p(i+2, j, k)-
w(i-1, j, k,
irhoe)-&
3947 &
p(i-1, j, k)-
three*ddw5)*fsd)
3948 tempd1 = -(dis4*fsd)
3949 ddw5d = dis2*fsd -
three*tempd1
3951 pd(i+2, j, k) =
pd(i+2, j, k) + tempd1
3953 pd(i-1, j, k) =
pd(i-1, j, k) - tempd1
3955 pd(i+1, j, k) =
pd(i+1, j, k) + ddw5d
3957 pd(i, j, k) =
pd(i, j, k) - ddw5d
3959 temp3 =
w(i-1, j, k,
irho)
3960 temp2 =
w(i-1, j, k,
ivz)
3961 temp1 =
w(i+2, j, k,
irho)
3962 temp0 =
w(i+2, j, k,
ivz)
3963 dis2d = dis2d + ddw4*fsd
3964 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw4)*fsd
3965 tempd2 = -(dis4*fsd)
3966 ddw4d = dis2*fsd -
three*tempd2
3967 wd(i+2, j, k,
ivz) =
wd(i+2, j, k,
ivz) + temp1*tempd2
3968 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp0*tempd2
3969 wd(i-1, j, k,
ivz) =
wd(i-1, j, k,
ivz) - temp3*tempd2
3970 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp2*tempd2
3978 temp3 =
w(i-1, j, k,
irho)
3979 temp2 =
w(i-1, j, k,
ivy)
3980 temp1 =
w(i+2, j, k,
irho)
3981 temp0 =
w(i+2, j, k,
ivy)
3982 dis2d = dis2d + ddw3*fsd
3983 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*fsd
3984 tempd2 = -(dis4*fsd)
3985 ddw3d = dis2*fsd -
three*tempd2
3986 wd(i+2, j, k,
ivy) =
wd(i+2, j, k,
ivy) + temp1*tempd2
3987 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp0*tempd2
3988 wd(i-1, j, k,
ivy) =
wd(i-1, j, k,
ivy) - temp3*tempd2
3989 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp2*tempd2
3997 temp1 =
w(i-1, j, k,
irho)
3998 temp0 =
w(i-1, j, k,
ivx)
3999 temp =
w(i+2, j, k,
irho)
4000 temp2 =
w(i+2, j, k,
ivx)
4001 dis2d = dis2d + ddw2*fsd
4002 dis4d = dis4d - (temp2*temp-temp0*temp1-
three*ddw2)*fsd
4003 tempd1 = -(dis4*fsd)
4004 ddw2d = dis2*fsd -
three*tempd1
4005 wd(i+2, j, k,
ivx) =
wd(i+2, j, k,
ivx) + temp*tempd1
4006 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp2*tempd1
4007 wd(i-1, j, k,
ivx) =
wd(i-1, j, k,
ivx) - temp1*tempd1
4008 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp0*tempd1
4016 dis2d = dis2d + ddw1*fsd
4019 tempd0 = -(dis4*fsd)
4020 ddw1d = dis2*fsd -
three*tempd0
4026 call mydim_b(arg1, arg1d, dis2, dis2d, dis4d)
4027 rradd = fis4*arg1d + min1*fis2*dis2d
4028 min1d = rrad*fis2*dis2d
4029 call popcontrol1b(branch)
4030 if (branch .eq. 0)
then
4035 call popcontrol1b(branch)
4036 if (branch .eq. 0)
then
4037 dssd(i+1, j, k, 1) = dssd(i+1, j, k, 1) + y1d
4039 dssd(i, j, k, 1) = dssd(i, j, k, 1) + y1d
4042 radid(i+1, j, k) =
radid(i+1, j, k) + ppor*rradd
4045 call popcontrol1b(branch)
4051 j = mod(ii/
ie,
je) + 1
4053 x1 = (ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))/(ss(i+1, j, k&
4054 & )+
two*ss(i, j, k)+ss(i-1, j, k)+sslim)
4055 if (x1 .ge. 0.)
then
4056 call pushcontrol1b(0)
4058 call pushcontrol1b(1)
4060 x2 = (ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))/(ss(i, j+1, k&
4061 & )+
two*ss(i, j, k)+ss(i, j-1, k)+sslim)
4062 if (x2 .ge. 0.)
then
4063 call pushcontrol1b(0)
4065 call pushcontrol1b(1)
4067 x3 = (ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))/(ss(i, j, k+1&
4068 & )+
two*ss(i, j, k)+ss(i, j, k-1)+sslim)
4069 if (x3 .ge. 0.)
then
4070 x3d = dssd(i, j, k, 3)
4071 dssd(i, j, k, 3) = 0.0_8
4073 x3d = -dssd(i, j, k, 3)
4074 dssd(i, j, k, 3) = 0.0_8
4076 temp1 = ss(i, j, k+1) +
two*ss(i, j, k) + ss(i, j, k-1) + sslim
4078 tempd0 = -((ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))*tempd/&
4080 ssd(i, j, k+1) = ssd(i, j, k+1) + tempd + tempd0
4081 ssd(i, j, k) = ssd(i, j, k) +
two*tempd0 -
two*tempd
4082 ssd(i, j, k-1) = ssd(i, j, k-1) + tempd + tempd0
4083 sslimd = sslimd + tempd0
4084 call popcontrol1b(branch)
4085 if (branch .eq. 0)
then
4086 x2d = dssd(i, j, k, 2)
4087 dssd(i, j, k, 2) = 0.0_8
4089 x2d = -dssd(i, j, k, 2)
4090 dssd(i, j, k, 2) = 0.0_8
4092 temp1 = ss(i, j+1, k) +
two*ss(i, j, k) + ss(i, j-1, k) + sslim
4094 tempd0 = -((ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))*tempd/&
4096 ssd(i, j+1, k) = ssd(i, j+1, k) + tempd + tempd0
4097 ssd(i, j, k) = ssd(i, j, k) +
two*tempd0 -
two*tempd
4098 ssd(i, j-1, k) = ssd(i, j-1, k) + tempd + tempd0
4099 sslimd = sslimd + tempd0
4100 call popcontrol1b(branch)
4101 if (branch .eq. 0)
then
4102 x1d = dssd(i, j, k, 1)
4103 dssd(i, j, k, 1) = 0.0_8
4105 x1d = -dssd(i, j, k, 1)
4106 dssd(i, j, k, 1) = 0.0_8
4108 temp1 = ss(i+1, j, k) +
two*ss(i, j, k) + ss(i-1, j, k) + sslim
4110 tempd0 = -((ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))*tempd/&
4112 ssd(i+1, j, k) = ssd(i+1, j, k) + tempd + tempd0
4113 ssd(i, j, k) = ssd(i, j, k) +
two*tempd0 -
two*tempd
4114 ssd(i-1, j, k) = ssd(i-1, j, k) + tempd + tempd0
4115 sslimd = sslimd + tempd0
4117 call popcontrol2b(branch)
4118 if (branch .ne. 0)
then
4119 if (branch .eq. 1)
then
4124 do ii=0,(
ib+1)*(
jb+1)*(
kb+1)-1
4126 j = mod(ii/(
ib+1),
jb + 1)
4127 k = ii/((
ib+1)*(
jb+1))
4128 temp0 =
gamma(i, j, k)
4129 temp =
w(i, j, k,
irho)
4131 pd(i, j, k) =
pd(i, j, k) + ssd(i, j, k)/temp1
4132 if (.not.(temp .le. 0.0_8 .and. (temp0 .eq. 0.0_8 .or. temp0&
4133 & .ne. int(temp0))))
wd(i, j, k,
irho) =
wd(i, j, k,
irho)&
4134 & - temp0*temp**(temp0-1)*
p(i, j, k)*ssd(i, j, k)/temp1**2
4135 ssd(i, j, k) = 0.0_8
4138 tempd = 0.001_realtype*sslimd/temp
4156 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,
ib, &
4157 &
jb,
kb,
w,
p,
pori,
porj,
pork,
fw,
radi,
radj,
radk,
gamma
4169 real(kind=realtype),
parameter :: dssmax=0.25_realtype
4173 integer(kind=inttype) :: i, j, k, ind, ii
4174 real(kind=realtype) :: sslim, rhoi
4175 real(kind=realtype) :: sfil, fis2, fis4
4176 real(kind=realtype) :: ppor, rrad, dis2, dis4
4177 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, fs
4178 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
4179 real(kind=realtype),
dimension(0:ib, 0:jb, 0:kb) :: ss
4186 real(kind=realtype) :: x1
4187 real(kind=realtype) :: x2
4188 real(kind=realtype) :: x3
4189 real(kind=realtype) :: y1
4190 real(kind=realtype) :: y2
4191 real(kind=realtype) :: y3
4192 real(kind=realtype) :: abs0
4193 real(kind=realtype) :: min1
4194 real(kind=realtype) :: min2
4195 real(kind=realtype) :: min3
4196 real(kind=realtype) :: arg1
4197 if (
rfil .ge. 0.)
then
4230 do ii=0,(
ib+1)*(
jb+1)*(
kb+1)-1
4232 j = mod(ii/(
ib+1),
jb + 1)
4233 k = ii/((
ib+1)*(
jb+1))
4234 ss(i, j, k) =
p(i, j, k)/
w(i, j, k,
irho)**
gamma(i, j, k)
4241 j = mod(ii/
ie,
je) + 1
4243 x1 = (ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))/(ss(i+1, j, k&
4244 & )+
two*ss(i, j, k)+ss(i-1, j, k)+sslim)
4245 if (x1 .ge. 0.)
then
4246 dss(i, j, k, 1) = x1
4248 dss(i, j, k, 1) = -x1
4250 x2 = (ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))/(ss(i, j+1, k&
4251 & )+
two*ss(i, j, k)+ss(i, j-1, k)+sslim)
4252 if (x2 .ge. 0.)
then
4253 dss(i, j, k, 2) = x2
4255 dss(i, j, k, 2) = -x2
4257 x3 = (ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))/(ss(i, j, k+1&
4258 & )+
two*ss(i, j, k)+ss(i, j, k-1)+sslim)
4259 if (x3 .ge. 0.)
then
4260 dss(i, j, k, 3) = x3
4262 dss(i, j, k, 3) = -x3
4295 j = mod(ii/
il,
ny) + 2
4300 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
4301 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
4302 y1 = dss(i+1, j, k, 1)
4304 y1 = dss(i, j, k, 1)
4306 if (dssmax .gt. y1)
then
4311 dis2 = fis2*rrad*min1
4313 dis4 =
mydim(arg1, dis2)
4318 fs = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
4323 ddw2 =
w(i+1, j, k,
ivx)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivx)*
w(&
4325 fs = dis2*ddw2 - dis4*(
w(i+2, j, k,
ivx)*
w(i+2, j, k,
irho)-
w(i-&
4330 ddw3 =
w(i+1, j, k,
ivy)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivy)*
w(&
4332 fs = dis2*ddw3 - dis4*(
w(i+2, j, k,
ivy)*
w(i+2, j, k,
irho)-
w(i-&
4337 ddw4 =
w(i+1, j, k,
ivz)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivz)*
w(&
4339 fs = dis2*ddw4 - dis4*(
w(i+2, j, k,
ivz)*
w(i+2, j, k,
irho)-
w(i-&
4344 ddw5 =
w(i+1, j, k,
irhoe) +
p(i+1, j, k) - (
w(i, j, k,
irhoe)+
p&
4346 fs = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)+
p(i+2, j, k)-(
w(i-1, &
4357 j = mod(ii/
nx,
jl) + 1
4362 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
4363 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
4364 y2 = dss(i, j+1, k, 2)
4366 y2 = dss(i, j, k, 2)
4368 if (dssmax .gt. y2)
then
4373 dis2 = fis2*rrad*min2
4375 dis4 =
mydim(arg1, dis2)
4380 fs = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
4385 ddw2 =
w(i, j+1, k,
ivx)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivx)*
w(&
4387 fs = dis2*ddw2 - dis4*(
w(i, j+2, k,
ivx)*
w(i, j+2, k,
irho)-
w(i&
4392 ddw3 =
w(i, j+1, k,
ivy)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivy)*
w(&
4394 fs = dis2*ddw3 - dis4*(
w(i, j+2, k,
ivy)*
w(i, j+2, k,
irho)-
w(i&
4399 ddw4 =
w(i, j+1, k,
ivz)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivz)*
w(&
4401 fs = dis2*ddw4 - dis4*(
w(i, j+2, k,
ivz)*
w(i, j+2, k,
irho)-
w(i&
4406 ddw5 =
w(i, j+1, k,
irhoe) +
p(i, j+1, k) - (
w(i, j, k,
irhoe)+
p&
4408 fs = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)+
p(i, j+2, k)-(
w(i, j-&
4419 j = mod(ii/
nx,
ny) + 2
4424 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
4425 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
4426 y3 = dss(i, j, k+1, 3)
4428 y3 = dss(i, j, k, 3)
4430 if (dssmax .gt. y3)
then
4435 dis2 = fis2*rrad*min3
4437 dis4 =
mydim(arg1, dis2)
4442 fs = dis2*ddw1 - dis4*(
w(i, j, k+2,
irho)-
w(i, j, k-1,
irho)-&
4447 ddw2 =
w(i, j, k+1,
ivx)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivx)*
w(&
4449 fs = dis2*ddw2 - dis4*(
w(i, j, k+2,
ivx)*
w(i, j, k+2,
irho)-
w(i&
4454 ddw3 =
w(i, j, k+1,
ivy)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivy)*
w(&
4456 fs = dis2*ddw3 - dis4*(
w(i, j, k+2,
ivy)*
w(i, j, k+2,
irho)-
w(i&
4461 ddw4 =
w(i, j, k+1,
ivz)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivz)*
w(&
4463 fs = dis2*ddw4 - dis4*(
w(i, j, k+2,
ivz)*
w(i, j, k+2,
irho)-
w(i&
4468 ddw5 =
w(i, j, k+1,
irhoe) +
p(i, j, k+1) - (
w(i, j, k,
irhoe)+
p&
4470 fs = dis2*ddw5 - dis4*(
w(i, j, k+2,
irhoe)+
p(i, j, k+2)-(
w(i, j&
4501 use blockpointers,
only :
il,
jl,
kl,
ie,
je,
ke,
ib,
jb,
kb,
w, &
4502 &
wd,
p,
pd,
pori,
porj,
pork,
fw,
fwd,
gamma,
si,
sid,
sj,
sjd,
sk, &
4520 logical,
intent(in) :: finegrid
4524 integer(kind=portype) :: por
4525 integer(kind=inttype) :: nwint
4526 integer(kind=inttype) :: i, j, k, ind
4527 integer(kind=inttype) :: limused, riemannused
4528 real(kind=realtype) :: sx, sy, sz, omk, opk, sfil, gammaface
4529 real(kind=realtype) :: sxd, syd, szd
4530 real(kind=realtype) :: factminmod, sface
4531 real(kind=realtype) :: sfaced
4532 real(kind=realtype),
dimension(nw) :: left, right
4533 real(kind=realtype),
dimension(nw) :: leftd, rightd
4534 real(kind=realtype),
dimension(nw) :: du1, du2, du3
4535 real(kind=realtype),
dimension(nw) :: du1d, du2d, du3d
4536 real(kind=realtype),
dimension(nwf) :: flux
4537 real(kind=realtype),
dimension(nwf) :: fluxd
4538 logical :: firstorderk, correctfork, rotationalperiodic
4540 intrinsic associated
4542 real(kind=realtype) :: abs0
4543 real(realtype) :: max1
4545 if (
rfil .ge. 0.)
then
4557 rotationalperiodic = .true.
4559 rotationalperiodic = .false.
4571 max1 = 1.e-10_realtype
4579 if (finegrid) limused =
limiter
4584 if (finegrid) riemannused =
riemann
4596 if (correctfork)
then
4598 call pushcontrol1b(0)
4600 firstorderk = .true.
4602 call pushcontrol1b(0)
4604 firstorderk = .false.
4607 call pushcontrol1b(1)
4609 firstorderk = .false.
4634 call pushreal8(sface)
4636 call pushcontrol1b(0)
4638 call pushcontrol1b(1)
4641 call pushreal8(left(
irho))
4643 call pushreal8(left(
ivx))
4645 call pushreal8(left(
ivy))
4647 call pushreal8(left(
ivz))
4649 call pushreal8(left(
irhoe))
4651 if (correctfork)
then
4652 call pushreal8(left(
itu1))
4654 call pushcontrol1b(0)
4656 call pushcontrol1b(1)
4658 call pushreal8(right(
irho))
4660 call pushreal8(right(
ivx))
4661 right(
ivx) =
w(i+1, j, k,
ivx)
4662 call pushreal8(right(
ivy))
4663 right(
ivy) =
w(i+1, j, k,
ivy)
4664 call pushreal8(right(
ivz))
4665 right(
ivz) =
w(i+1, j, k,
ivz)
4666 call pushreal8(right(
irhoe))
4667 right(
irhoe) =
p(i+1, j, k)
4668 if (correctfork)
then
4669 call pushreal8(right(
itu1))
4671 call pushcontrol1b(0)
4673 call pushcontrol1b(1)
4691 call pushreal8(sface)
4693 call pushcontrol1b(0)
4695 call pushcontrol1b(1)
4698 call pushreal8(left(
irho))
4700 call pushreal8(left(
ivx))
4702 call pushreal8(left(
ivy))
4704 call pushreal8(left(
ivz))
4706 call pushreal8(left(
irhoe))
4708 if (correctfork)
then
4709 call pushreal8(left(
itu1))
4711 call pushcontrol1b(0)
4713 call pushcontrol1b(1)
4715 call pushreal8(right(
irho))
4717 call pushreal8(right(
ivx))
4718 right(
ivx) =
w(i, j+1, k,
ivx)
4719 call pushreal8(right(
ivy))
4720 right(
ivy) =
w(i, j+1, k,
ivy)
4721 call pushreal8(right(
ivz))
4722 right(
ivz) =
w(i, j+1, k,
ivz)
4723 call pushreal8(right(
irhoe))
4724 right(
irhoe) =
p(i, j+1, k)
4725 if (correctfork)
then
4726 call pushreal8(right(
itu1))
4728 call pushcontrol1b(0)
4730 call pushcontrol1b(1)
4748 call pushreal8(sface)
4750 call pushcontrol1b(0)
4752 call pushcontrol1b(1)
4755 call pushreal8(left(
irho))
4757 call pushreal8(left(
ivx))
4759 call pushreal8(left(
ivy))
4761 call pushreal8(left(
ivz))
4763 call pushreal8(left(
irhoe))
4765 if (correctfork)
then
4766 call pushreal8(left(
itu1))
4768 call pushcontrol1b(0)
4770 call pushcontrol1b(1)
4772 call pushreal8(right(
irho))
4774 call pushreal8(right(
ivx))
4775 right(
ivx) =
w(i, j, k+1,
ivx)
4776 call pushreal8(right(
ivy))
4777 right(
ivy) =
w(i, j, k+1,
ivy)
4778 call pushreal8(right(
ivz))
4779 right(
ivz) =
w(i, j, k+1,
ivz)
4780 call pushreal8(right(
irhoe))
4781 right(
irhoe) =
p(i, j, k+1)
4782 if (correctfork)
then
4783 call pushreal8(right(
itu1))
4785 call pushcontrol1b(0)
4787 call pushcontrol1b(1)
4813 call popcontrol1b(branch)
4814 if (branch .eq. 0)
then
4815 call popreal8(right(
itu1))
4817 rightd(
itu1) = 0.0_8
4819 call popreal8(right(
irhoe))
4820 pd(i, j, k+1) =
pd(i, j, k+1) + rightd(
irhoe)
4821 rightd(
irhoe) = 0.0_8
4822 call popreal8(right(
ivz))
4825 call popreal8(right(
ivy))
4828 call popreal8(right(
ivx))
4831 call popreal8(right(
irho))
4833 rightd(
irho) = 0.0_8
4834 call popcontrol1b(branch)
4835 if (branch .eq. 0)
then
4836 call popreal8(left(
itu1))
4840 call popreal8(left(
irhoe))
4841 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
4842 leftd(
irhoe) = 0.0_8
4843 call popreal8(left(
ivz))
4846 call popreal8(left(
ivy))
4849 call popreal8(left(
ivx))
4852 call popreal8(left(
irho))
4855 call popcontrol1b(branch)
4856 if (branch .eq. 0)
then
4857 call popreal8(sface)
4862 skd(i, j, k, 3) =
skd(i, j, k, 3) + szd
4864 skd(i, j, k, 2) =
skd(i, j, k, 2) + syd
4866 skd(i, j, k, 1) =
skd(i, j, k, 1) + sxd
4887 call popcontrol1b(branch)
4888 if (branch .eq. 0)
then
4889 call popreal8(right(
itu1))
4891 rightd(
itu1) = 0.0_8
4893 call popreal8(right(
irhoe))
4894 pd(i, j+1, k) =
pd(i, j+1, k) + rightd(
irhoe)
4895 rightd(
irhoe) = 0.0_8
4896 call popreal8(right(
ivz))
4899 call popreal8(right(
ivy))
4902 call popreal8(right(
ivx))
4905 call popreal8(right(
irho))
4907 rightd(
irho) = 0.0_8
4908 call popcontrol1b(branch)
4909 if (branch .eq. 0)
then
4910 call popreal8(left(
itu1))
4914 call popreal8(left(
irhoe))
4915 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
4916 leftd(
irhoe) = 0.0_8
4917 call popreal8(left(
ivz))
4920 call popreal8(left(
ivy))
4923 call popreal8(left(
ivx))
4926 call popreal8(left(
irho))
4929 call popcontrol1b(branch)
4930 if (branch .eq. 0)
then
4931 call popreal8(sface)
4936 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + szd
4938 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + syd
4940 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + sxd
4961 call popcontrol1b(branch)
4962 if (branch .eq. 0)
then
4963 call popreal8(right(
itu1))
4965 rightd(
itu1) = 0.0_8
4967 call popreal8(right(
irhoe))
4968 pd(i+1, j, k) =
pd(i+1, j, k) + rightd(
irhoe)
4969 rightd(
irhoe) = 0.0_8
4970 call popreal8(right(
ivz))
4973 call popreal8(right(
ivy))
4976 call popreal8(right(
ivx))
4979 call popreal8(right(
irho))
4981 rightd(
irho) = 0.0_8
4982 call popcontrol1b(branch)
4983 if (branch .eq. 0)
then
4984 call popreal8(left(
itu1))
4988 call popreal8(left(
irhoe))
4989 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
4990 leftd(
irhoe) = 0.0_8
4991 call popreal8(left(
ivz))
4994 call popreal8(left(
ivy))
4997 call popreal8(left(
ivx))
5000 call popreal8(left(
irho))
5003 call popcontrol1b(branch)
5004 if (branch .eq. 0)
then
5005 call popreal8(sface)
5010 sid(i, j, k, 3) =
sid(i, j, k, 3) + szd
5012 sid(i, j, k, 2) =
sid(i, j, k, 2) + syd
5014 sid(i, j, k, 1) =
sid(i, j, k, 1) + sxd
5047 du1(
irhoe) =
p(i, j, k) -
p(i-1, j, k)
5048 du2(
irhoe) =
p(i+1, j, k) -
p(i, j, k)
5049 du3(
irhoe) =
p(i+2, j, k) -
p(i+1, j, k)
5050 if (correctfork)
then
5054 call pushcontrol1b(0)
5056 call pushcontrol1b(1)
5059 call pushreal8array(right,
nw)
5060 call pushreal8array(left,
nw)
5061 call pushreal8array(du3,
nw)
5062 call pushreal8array(du2,
nw)
5063 call pushreal8array(du1,
nw)
5079 if (correctfork)
then
5082 call pushcontrol1b(0)
5084 call pushcontrol1b(1)
5095 call pushreal8(sface)
5097 call pushcontrol1b(0)
5099 call pushcontrol1b(1)
5122 du1(
irhoe) =
p(i, j, k) -
p(i, j-1, k)
5123 du2(
irhoe) =
p(i, j+1, k) -
p(i, j, k)
5124 du3(
irhoe) =
p(i, j+2, k) -
p(i, j+1, k)
5125 if (correctfork)
then
5129 call pushcontrol1b(0)
5131 call pushcontrol1b(1)
5134 call pushreal8array(right,
nw)
5135 call pushreal8array(left,
nw)
5136 call pushreal8array(du3,
nw)
5137 call pushreal8array(du2,
nw)
5138 call pushreal8array(du1,
nw)
5154 if (correctfork)
then
5157 call pushcontrol1b(0)
5159 call pushcontrol1b(1)
5170 call pushreal8(sface)
5172 call pushcontrol1b(0)
5174 call pushcontrol1b(1)
5197 du1(
irhoe) =
p(i, j, k) -
p(i, j, k-1)
5198 du2(
irhoe) =
p(i, j, k+1) -
p(i, j, k)
5199 du3(
irhoe) =
p(i, j, k+2) -
p(i, j, k+1)
5200 if (correctfork)
then
5204 call pushcontrol1b(0)
5206 call pushcontrol1b(1)
5209 call pushreal8array(right,
nw)
5210 call pushreal8array(left,
nw)
5211 call pushreal8array(du3,
nw)
5212 call pushreal8array(du2,
nw)
5213 call pushreal8array(du1,
nw)
5229 if (correctfork)
then
5232 call pushcontrol1b(0)
5234 call pushcontrol1b(1)
5245 call pushreal8(sface)
5247 call pushcontrol1b(0)
5249 call pushcontrol1b(1)
5278 call popcontrol1b(branch)
5279 if (branch .eq. 0)
then
5280 call popreal8(sface)
5285 skd(i, j, k, 3) =
skd(i, j, k, 3) + szd
5287 skd(i, j, k, 2) =
skd(i, j, k, 2) + syd
5289 skd(i, j, k, 1) =
skd(i, j, k, 1) + sxd
5290 call popcontrol1b(branch)
5291 if (branch .eq. 0)
then
5295 pd(i, j, k+1) =
pd(i, j, k+1) + rightd(
irhoe)
5300 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
5305 call popreal8array(du1,
nw)
5306 call popreal8array(du2,
nw)
5307 call popreal8array(du3,
nw)
5308 call popreal8array(left,
nw)
5309 call popreal8array(right,
nw)
5312 call popcontrol1b(branch)
5313 if (branch .eq. 0)
then
5324 pd(i, j, k+2) =
pd(i, j, k+2) + du3d(
irhoe)
5329 pd(i, j, k-1) =
pd(i, j, k-1) - du1d(
irhoe)
5387 call popcontrol1b(branch)
5388 if (branch .eq. 0)
then
5389 call popreal8(sface)
5394 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + szd
5396 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + syd
5398 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + sxd
5399 call popcontrol1b(branch)
5400 if (branch .eq. 0)
then
5404 pd(i, j+1, k) =
pd(i, j+1, k) + rightd(
irhoe)
5409 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
5414 call popreal8array(du1,
nw)
5415 call popreal8array(du2,
nw)
5416 call popreal8array(du3,
nw)
5417 call popreal8array(left,
nw)
5418 call popreal8array(right,
nw)
5421 call popcontrol1b(branch)
5422 if (branch .eq. 0)
then
5433 pd(i, j+2, k) =
pd(i, j+2, k) + du3d(
irhoe)
5438 pd(i, j-1, k) =
pd(i, j-1, k) - du1d(
irhoe)
5496 call popcontrol1b(branch)
5497 if (branch .eq. 0)
then
5498 call popreal8(sface)
5503 sid(i, j, k, 3) =
sid(i, j, k, 3) + szd
5505 sid(i, j, k, 2) =
sid(i, j, k, 2) + syd
5507 sid(i, j, k, 1) =
sid(i, j, k, 1) + sxd
5508 call popcontrol1b(branch)
5509 if (branch .eq. 0)
then
5513 pd(i+1, j, k) =
pd(i+1, j, k) + rightd(
irhoe)
5518 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
5523 call popreal8array(du1,
nw)
5524 call popreal8array(du2,
nw)
5525 call popreal8array(du3,
nw)
5526 call popreal8array(left,
nw)
5527 call popreal8array(right,
nw)
5530 call popcontrol1b(branch)
5531 if (branch .eq. 0)
then
5542 pd(i+2, j, k) =
pd(i+2, j, k) + du3d(
irhoe)
5547 pd(i-1, j, k) =
pd(i-1, j, k) - du1d(
irhoe)
5589 call popcontrol1b(branch)
5609 & rotmatrix, left, leftd, right, rightd)
5614 real(kind=realtype),
parameter :: epslim=1.e-10_realtype
5618 real(kind=realtype),
dimension(:),
intent(inout) :: du1, du2, du3
5619 real(kind=realtype),
dimension(:),
intent(inout) :: du1d, du2d, &
5621 real(kind=realtype),
dimension(:) :: left, right
5622 real(kind=realtype),
dimension(:) :: leftd, rightd
5623 real(kind=realtype),
dimension(:, :, :, :, :),
pointer :: &
5628 integer(kind=inttype) :: l
5629 real(kind=realtype) :: rl1, rl2, rr1, rr2, tmp, dvx, dvy, dvz
5630 real(kind=realtype) :: rl1d, rl2d, rr1d, rr2d, tmpd, dvxd, dvyd, &
5632 real(kind=realtype),
dimension(3, 3) :: rot
5637 real(kind=realtype) :: x1
5638 real(kind=realtype) :: x1d
5639 real(kind=realtype) :: y1
5640 real(kind=realtype) :: y1d
5641 real(kind=realtype) :: y2
5642 real(kind=realtype) :: y2d
5643 real(kind=realtype) :: x2
5644 real(kind=realtype) :: x2d
5645 real(kind=realtype) :: y3
5646 real(kind=realtype) :: y3d
5647 real(kind=realtype) :: y4
5648 real(kind=realtype) :: y4d
5649 real(kind=realtype) :: x3
5650 real(kind=realtype) :: x3d
5651 real(kind=realtype) :: x4
5652 real(kind=realtype) :: x4d
5653 real(kind=realtype) :: x5
5654 real(kind=realtype) :: x5d
5655 real(kind=realtype) :: x6
5656 real(kind=realtype) :: x6d
5657 real(kind=realtype) :: max2
5658 real(kind=realtype) :: max2d
5659 real(kind=realtype) :: max3
5660 real(kind=realtype) :: max3d
5661 real(kind=realtype) :: max4
5662 real(kind=realtype) :: max4d
5663 real(kind=realtype) :: max5
5664 real(kind=realtype) :: max5d
5665 real(kind=realtype) :: max6
5666 real(kind=realtype) :: max6d
5667 real(kind=realtype) :: max7
5668 real(kind=realtype) :: max7d
5669 real(kind=realtype) :: temp
5670 real(kind=realtype) :: tempd
5674 if (rotationalperiodic)
then
5677 rot(1, 1) = rotmatrix(i, j, k, 1, 1)
5678 rot(1, 2) = rotmatrix(i, j, k, 1, 2)
5679 rot(1, 3) = rotmatrix(i, j, k, 1, 3)
5680 rot(2, 1) = rotmatrix(i, j, k, 2, 1)
5681 rot(2, 2) = rotmatrix(i, j, k, 2, 2)
5682 rot(2, 3) = rotmatrix(i, j, k, 2, 3)
5683 rot(3, 1) = rotmatrix(i, j, k, 3, 1)
5684 rot(3, 2) = rotmatrix(i, j, k, 3, 2)
5685 rot(3, 3) = rotmatrix(i, j, k, 3, 3)
5691 du1(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
5692 du1(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
5693 du1(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
5697 du2(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
5698 du2(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
5699 du2(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
5703 du3(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
5704 du3(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
5705 du3(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
5706 call pushcontrol1b(0)
5708 call pushcontrol1b(1)
5711 select case (limused)
5713 call pushcontrol2b(1)
5719 if (du2(l) .ge. 0.)
then
5721 call pushcontrol1b(0)
5724 call pushcontrol1b(1)
5726 if (x1 .lt. epslim)
then
5727 call pushreal8(max2)
5729 call pushcontrol1b(0)
5731 call pushreal8(max2)
5733 call pushcontrol1b(1)
5738 tmp =
one/sign(max2, du2(l))
5739 if (du1(l) .ge. 0.)
then
5741 call pushcontrol1b(0)
5744 call pushcontrol1b(1)
5746 if (x3 .lt. epslim)
then
5747 call pushreal8(max4)
5749 call pushcontrol1b(0)
5751 call pushreal8(max4)
5753 call pushcontrol1b(1)
5755 y1 = du2(l)/sign(max4, du1(l))
5756 if (
zero .lt. y1)
then
5759 call pushcontrol1b(0)
5763 call pushcontrol1b(1)
5765 if (
zero .lt. du1(l)*tmp)
then
5768 call pushcontrol1b(0)
5772 call pushcontrol1b(1)
5774 if (
zero .lt. du3(l)*tmp)
then
5777 call pushcontrol1b(0)
5781 call pushcontrol1b(1)
5783 if (du3(l) .ge. 0.)
then
5785 call pushcontrol1b(0)
5788 call pushcontrol1b(1)
5790 if (x4 .lt. epslim)
then
5791 call pushreal8(max5)
5793 call pushcontrol1b(0)
5795 call pushreal8(max5)
5797 call pushcontrol1b(1)
5799 y2 = du2(l)/sign(max5, du3(l))
5800 if (
zero .lt. y2)
then
5803 call pushcontrol1b(0)
5807 call pushcontrol1b(1)
5811 rl1 = rl1*(rl1+
one)/(rl1*rl1+
one)
5813 rl2 = rl2*(rl2+
one)/(rl2*rl2+
one)
5815 rr1 = rr1*(rr1+
one)/(rr1*rr1+
one)
5817 rr2 = rr2*(rr2+
one)/(rr2*rr2+
one)
5821 call pushcontrol2b(2)
5827 if (du2(l) .ge. 0.)
then
5829 call pushcontrol1b(0)
5832 call pushcontrol1b(1)
5834 if (x2 .lt. epslim)
then
5835 call pushreal8(max3)
5837 call pushcontrol1b(0)
5839 call pushreal8(max3)
5841 call pushcontrol1b(1)
5846 tmp =
one/sign(max3, du2(l))
5847 if (du1(l) .ge. 0.)
then
5849 call pushcontrol1b(0)
5852 call pushcontrol1b(1)
5854 if (x5 .lt. epslim)
then
5855 call pushreal8(max6)
5857 call pushcontrol1b(0)
5859 call pushreal8(max6)
5861 call pushcontrol1b(1)
5863 y3 = du2(l)/sign(max6, du1(l))
5864 if (
zero .lt. y3)
then
5867 call pushcontrol1b(0)
5871 call pushcontrol1b(1)
5873 if (
zero .lt. du1(l)*tmp)
then
5876 call pushcontrol1b(0)
5880 call pushcontrol1b(1)
5882 if (
zero .lt. du3(l)*tmp)
then
5885 call pushcontrol1b(0)
5889 call pushcontrol1b(1)
5891 if (du3(l) .ge. 0.)
then
5893 call pushcontrol1b(0)
5896 call pushcontrol1b(1)
5898 if (x6 .lt. epslim)
then
5899 call pushreal8(max7)
5901 call pushcontrol1b(0)
5903 call pushreal8(max7)
5905 call pushcontrol1b(1)
5907 y4 = du2(l)/sign(max7, du3(l))
5908 if (
zero .lt. y4)
then
5911 call pushcontrol1b(0)
5915 call pushcontrol1b(1)
5917 if (
one .gt. factminmod*rl1)
then
5918 rl1 = factminmod*rl1
5919 call pushcontrol1b(0)
5922 call pushcontrol1b(1)
5924 if (
one .gt. factminmod*rl2)
then
5925 rl2 = factminmod*rl2
5926 call pushcontrol1b(0)
5929 call pushcontrol1b(1)
5931 if (
one .gt. factminmod*rr1)
then
5932 rr1 = factminmod*rr1
5933 call pushcontrol1b(0)
5936 call pushcontrol1b(1)
5938 if (
one .gt. factminmod*rr2)
then
5939 rr2 = factminmod*rr2
5940 call pushcontrol1b(0)
5943 call pushcontrol1b(1)
5946 call pushcontrol2b(3)
5948 call pushcontrol2b(0)
5953 if (firstorderk)
then
5954 call pushcontrol1b(0)
5956 call pushcontrol1b(1)
5961 if (rotationalperiodic)
then
5962 dvxd = rot(1, 3)*rightd(
ivz)
5963 dvyd = rot(2, 3)*rightd(
ivz)
5964 dvzd = rot(3, 3)*rightd(
ivz)
5966 dvxd = dvxd + rot(1, 2)*rightd(
ivy)
5967 dvyd = dvyd + rot(2, 2)*rightd(
ivy)
5968 dvzd = dvzd + rot(3, 2)*rightd(
ivy)
5970 dvxd = dvxd + rot(1, 1)*rightd(
ivx)
5971 dvyd = dvyd + rot(2, 1)*rightd(
ivx)
5972 dvzd = dvzd + rot(3, 1)*rightd(
ivx)
5974 rightd(
ivz) = rightd(
ivz) + dvzd
5975 rightd(
ivy) = rightd(
ivy) + dvyd
5976 rightd(
ivx) = rightd(
ivx) + dvxd
5977 dvxd = rot(1, 3)*leftd(
ivz)
5978 dvyd = rot(2, 3)*leftd(
ivz)
5979 dvzd = rot(3, 3)*leftd(
ivz)
5981 dvxd = dvxd + rot(1, 2)*leftd(
ivy)
5982 dvyd = dvyd + rot(2, 2)*leftd(
ivy)
5983 dvzd = dvzd + rot(3, 2)*leftd(
ivy)
5985 dvxd = dvxd + rot(1, 1)*leftd(
ivx)
5986 dvyd = dvyd + rot(2, 1)*leftd(
ivx)
5987 dvzd = dvzd + rot(3, 1)*leftd(
ivx)
5989 leftd(
ivz) = leftd(
ivz) + dvzd
5990 leftd(
ivy) = leftd(
ivy) + dvyd
5991 leftd(
ivx) = leftd(
ivx) + dvxd
5993 call popcontrol1b(branch)
5994 if (branch .eq. 0)
then
5995 rightd(
itu1) = 0.0_8
5998 call popcontrol2b(branch)
5999 if (branch .lt. 2)
then
6000 if (branch .ne. 0)
then
6002 du3d(l) = du3d(l) - omk*rightd(l)
6003 du2d(l) = du2d(l) + opk*leftd(l) - opk*rightd(l)
6005 du1d(l) = du1d(l) + omk*leftd(l)
6009 else if (branch .eq. 2)
then
6011 rr1d = -(du2(l)*opk*rightd(l))
6012 du2d(l) = du2d(l) + rl2*opk*leftd(l) - rr1*opk*rightd(l)
6013 rr2d = -(du3(l)*omk*rightd(l))
6014 du3d(l) = du3d(l) - rr2*omk*rightd(l)
6016 rl1d = du1(l)*omk*leftd(l)
6017 du1d(l) = du1d(l) + rl1*omk*leftd(l)
6018 rl2d = du2(l)*opk*leftd(l)
6021 tempd = rr2d/(
one+rr2**2)
6022 rr2d = (
one+2*rr2-2*rr2**2*(
one+rr2)/(
one+rr2**2))*tempd
6024 tempd = rr1d/(
one+rr1**2)
6025 rr1d = (
one+2*rr1-2*rr1**2*(
one+rr1)/(
one+rr1**2))*tempd
6027 tempd = rl2d/(
one+rl2**2)
6028 rl2d = (
one+2*rl2-2*rl2**2*(
one+rl2)/(
one+rl2**2))*tempd
6030 tempd = rl1d/(
one+rl1**2)
6031 rl1d = (
one+2*rl1-2*rl1**2*(
one+rl1)/(
one+rl1**2))*tempd
6032 call popcontrol1b(branch)
6033 if (branch .eq. 0)
then
6040 temp = sign(max5, du3(l))
6041 du2d(l) = du2d(l) + y2d/temp
6042 tempd = -(du2(l)*y2d/temp**2)
6043 max5d = sign(1.d0, max5*du3(l))*tempd
6044 call popcontrol1b(branch)
6045 if (branch .eq. 0)
then
6052 call popcontrol1b(branch)
6053 if (branch .eq. 0)
then
6054 du3d(l) = du3d(l) + x4d
6056 du3d(l) = du3d(l) - x4d
6058 call popcontrol1b(branch)
6059 if (branch .eq. 0)
then
6061 du3d(l) = du3d(l) + tmp*rr1d
6067 call popcontrol1b(branch)
6068 if (branch .eq. 0)
then
6070 du1d(l) = du1d(l) + tmp*rl2d
6071 tmpd = tmpd + du1(l)*rl2d
6075 call popcontrol1b(branch)
6076 if (branch .eq. 0)
then
6083 temp = sign(max4, du1(l))
6084 du2d(l) = du2d(l) + y1d/temp
6085 tempd = -(du2(l)*y1d/temp**2)
6086 max4d = sign(1.d0, max4*du1(l))*tempd
6087 call popcontrol1b(branch)
6088 if (branch .eq. 0)
then
6095 call popcontrol1b(branch)
6096 if (branch .eq. 0)
then
6097 du1d(l) = du1d(l) + x3d
6099 du1d(l) = du1d(l) - x3d
6102 temp = sign(max2, du2(l))
6103 tempd = -(
one*tmpd/temp**2)
6104 max2d = sign(1.d0, max2*du2(l))*tempd
6105 call popcontrol1b(branch)
6106 if (branch .eq. 0)
then
6113 call popcontrol1b(branch)
6114 if (branch .eq. 0)
then
6115 du2d(l) = du2d(l) + x1d
6117 du2d(l) = du2d(l) - x1d
6122 rr1d = -(du2(l)*opk*rightd(l))
6123 du2d(l) = du2d(l) + rl2*opk*leftd(l) - rr1*opk*rightd(l)
6124 rr2d = -(du3(l)*omk*rightd(l))
6125 du3d(l) = du3d(l) - rr2*omk*rightd(l)
6127 rl1d = du1(l)*omk*leftd(l)
6128 du1d(l) = du1d(l) + rl1*omk*leftd(l)
6129 rl2d = du2(l)*opk*leftd(l)
6131 call popcontrol1b(branch)
6132 if (branch .eq. 0)
then
6133 rr2d = factminmod*rr2d
6137 call popcontrol1b(branch)
6138 if (branch .eq. 0)
then
6139 rr1d = factminmod*rr1d
6143 call popcontrol1b(branch)
6144 if (branch .eq. 0)
then
6145 rl2d = factminmod*rl2d
6149 call popcontrol1b(branch)
6150 if (branch .eq. 0)
then
6151 rl1d = factminmod*rl1d
6155 call popcontrol1b(branch)
6156 if (branch .eq. 0)
then
6163 temp = sign(max7, du3(l))
6164 du2d(l) = du2d(l) + y4d/temp
6165 tempd = -(du2(l)*y4d/temp**2)
6166 max7d = sign(1.d0, max7*du3(l))*tempd
6167 call popcontrol1b(branch)
6168 if (branch .eq. 0)
then
6175 call popcontrol1b(branch)
6176 if (branch .eq. 0)
then
6177 du3d(l) = du3d(l) + x6d
6179 du3d(l) = du3d(l) - x6d
6181 call popcontrol1b(branch)
6182 if (branch .eq. 0)
then
6184 du3d(l) = du3d(l) + tmp*rr1d
6190 call popcontrol1b(branch)
6191 if (branch .eq. 0)
then
6193 du1d(l) = du1d(l) + tmp*rl2d
6194 tmpd = tmpd + du1(l)*rl2d
6198 call popcontrol1b(branch)
6199 if (branch .eq. 0)
then
6206 temp = sign(max6, du1(l))
6207 du2d(l) = du2d(l) + y3d/temp
6208 tempd = -(du2(l)*y3d/temp**2)
6209 max6d = sign(1.d0, max6*du1(l))*tempd
6210 call popcontrol1b(branch)
6211 if (branch .eq. 0)
then
6218 call popcontrol1b(branch)
6219 if (branch .eq. 0)
then
6220 du1d(l) = du1d(l) + x5d
6222 du1d(l) = du1d(l) - x5d
6225 temp = sign(max3, du2(l))
6226 tempd = -(
one*tmpd/temp**2)
6227 max3d = sign(1.d0, max3*du2(l))*tempd
6228 call popcontrol1b(branch)
6229 if (branch .eq. 0)
then
6236 call popcontrol1b(branch)
6237 if (branch .eq. 0)
then
6238 du2d(l) = du2d(l) + x2d
6240 du2d(l) = du2d(l) - x2d
6244 call popcontrol1b(branch)
6245 if (branch .eq. 0)
then
6246 dvxd = rot(3, 1)*du3d(
ivz)
6247 dvyd = rot(3, 2)*du3d(
ivz)
6248 dvzd = rot(3, 3)*du3d(
ivz)
6250 dvxd = dvxd + rot(2, 1)*du3d(
ivy)
6251 dvyd = dvyd + rot(2, 2)*du3d(
ivy)
6252 dvzd = dvzd + rot(2, 3)*du3d(
ivy)
6254 dvxd = dvxd + rot(1, 1)*du3d(
ivx)
6255 dvyd = dvyd + rot(1, 2)*du3d(
ivx)
6256 dvzd = dvzd + rot(1, 3)*du3d(
ivx)
6258 du3d(
ivz) = du3d(
ivz) + dvzd
6259 du3d(
ivy) = du3d(
ivy) + dvyd
6260 du3d(
ivx) = du3d(
ivx) + dvxd
6261 dvxd = rot(3, 1)*du2d(
ivz)
6262 dvyd = rot(3, 2)*du2d(
ivz)
6263 dvzd = rot(3, 3)*du2d(
ivz)
6265 dvxd = dvxd + rot(2, 1)*du2d(
ivy)
6266 dvyd = dvyd + rot(2, 2)*du2d(
ivy)
6267 dvzd = dvzd + rot(2, 3)*du2d(
ivy)
6269 dvxd = dvxd + rot(1, 1)*du2d(
ivx)
6270 dvyd = dvyd + rot(1, 2)*du2d(
ivx)
6271 dvzd = dvzd + rot(1, 3)*du2d(
ivx)
6273 du2d(
ivz) = du2d(
ivz) + dvzd
6274 du2d(
ivy) = du2d(
ivy) + dvyd
6275 du2d(
ivx) = du2d(
ivx) + dvxd
6276 dvxd = rot(3, 1)*du1d(
ivz)
6277 dvyd = rot(3, 2)*du1d(
ivz)
6278 dvzd = rot(3, 3)*du1d(
ivz)
6280 dvxd = dvxd + rot(2, 1)*du1d(
ivy)
6281 dvyd = dvyd + rot(2, 2)*du1d(
ivy)
6282 dvzd = dvzd + rot(2, 3)*du1d(
ivy)
6284 dvxd = dvxd + rot(1, 1)*du1d(
ivx)
6285 dvyd = dvyd + rot(1, 2)*du1d(
ivx)
6286 dvzd = dvzd + rot(1, 3)*du1d(
ivx)
6288 du1d(
ivz) = du1d(
ivz) + dvzd
6289 du1d(
ivy) = du1d(
ivy) + dvyd
6290 du1d(
ivx) = du1d(
ivx) + dvxd
6300 real(kind=realtype),
parameter :: epslim=1.e-10_realtype
6304 real(kind=realtype),
dimension(:),
intent(inout) :: du1, du2, du3
6305 real(kind=realtype),
dimension(:),
intent(out) :: left, right
6306 real(kind=realtype),
dimension(:, :, :, :, :),
pointer :: &
6311 integer(kind=inttype) :: l
6312 real(kind=realtype) :: rl1, rl2, rr1, rr2, tmp, dvx, dvy, dvz
6313 real(kind=realtype),
dimension(3, 3) :: rot
6318 real(kind=realtype) :: x1
6319 real(kind=realtype) :: y1
6320 real(kind=realtype) :: y2
6321 real(kind=realtype) :: x2
6322 real(kind=realtype) :: y3
6323 real(kind=realtype) :: y4
6324 real(kind=realtype) :: x3
6325 real(kind=realtype) :: x4
6326 real(kind=realtype) :: x5
6327 real(kind=realtype) :: x6
6328 real(kind=realtype) :: max2
6329 real(kind=realtype) :: max3
6330 real(kind=realtype) :: max4
6331 real(kind=realtype) :: max5
6332 real(kind=realtype) :: max6
6333 real(kind=realtype) :: max7
6336 if (rotationalperiodic)
then
6339 rot(1, 1) = rotmatrix(i, j, k, 1, 1)
6340 rot(1, 2) = rotmatrix(i, j, k, 1, 2)
6341 rot(1, 3) = rotmatrix(i, j, k, 1, 3)
6342 rot(2, 1) = rotmatrix(i, j, k, 2, 1)
6343 rot(2, 2) = rotmatrix(i, j, k, 2, 2)
6344 rot(2, 3) = rotmatrix(i, j, k, 2, 3)
6345 rot(3, 1) = rotmatrix(i, j, k, 3, 1)
6346 rot(3, 2) = rotmatrix(i, j, k, 3, 2)
6347 rot(3, 3) = rotmatrix(i, j, k, 3, 3)
6353 du1(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
6354 du1(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
6355 du1(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
6359 du2(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
6360 du2(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
6361 du2(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
6365 du3(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
6366 du3(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
6367 du3(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
6370 select case (limused)
6375 left(l) = omk*du1(l) + opk*du2(l)
6376 right(l) = -(omk*du3(l)) - opk*du2(l)
6383 if (du2(l) .ge. 0.)
then
6388 if (x1 .lt. epslim)
then
6395 tmp =
one/sign(max2, du2(l))
6396 if (du1(l) .ge. 0.)
then
6401 if (x3 .lt. epslim)
then
6406 y1 = du2(l)/sign(max4, du1(l))
6407 if (
zero .lt. y1)
then
6412 if (
zero .lt. du1(l)*tmp)
then
6417 if (
zero .lt. du3(l)*tmp)
then
6422 if (du3(l) .ge. 0.)
then
6427 if (x4 .lt. epslim)
then
6432 y2 = du2(l)/sign(max5, du3(l))
6433 if (
zero .lt. y2)
then
6439 rl1 = rl1*(rl1+
one)/(rl1*rl1+
one)
6440 rl2 = rl2*(rl2+
one)/(rl2*rl2+
one)
6441 rr1 = rr1*(rr1+
one)/(rr1*rr1+
one)
6442 rr2 = rr2*(rr2+
one)/(rr2*rr2+
one)
6445 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
6446 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
6453 if (du2(l) .ge. 0.)
then
6458 if (x2 .lt. epslim)
then
6465 tmp =
one/sign(max3, du2(l))
6466 if (du1(l) .ge. 0.)
then
6471 if (x5 .lt. epslim)
then
6476 y3 = du2(l)/sign(max6, du1(l))
6477 if (
zero .lt. y3)
then
6482 if (
zero .lt. du1(l)*tmp)
then
6487 if (
zero .lt. du3(l)*tmp)
then
6492 if (du3(l) .ge. 0.)
then
6497 if (x6 .lt. epslim)
then
6502 y4 = du2(l)/sign(max7, du3(l))
6503 if (
zero .lt. y4)
then
6508 if (
one .gt. factminmod*rl1)
then
6509 rl1 = factminmod*rl1
6513 if (
one .gt. factminmod*rl2)
then
6514 rl2 = factminmod*rl2
6518 if (
one .gt. factminmod*rr1)
then
6519 rr1 = factminmod*rr1
6523 if (
one .gt. factminmod*rr2)
then
6524 rr2 = factminmod*rr2
6530 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
6531 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
6537 if (firstorderk)
then
6544 if (rotationalperiodic)
then
6549 left(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
6550 left(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
6551 left(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
6556 right(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
6557 right(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
6558 right(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
6571 real(kind=realtype),
dimension(*),
intent(in) :: left, right
6572 real(kind=realtype),
dimension(*) :: leftd, rightd
6573 real(kind=realtype),
dimension(*) :: flux
6574 real(kind=realtype),
dimension(*) :: fluxd
6578 real(kind=realtype) :: porflux, rface
6579 real(kind=realtype) :: rfaced
6580 real(kind=realtype) :: etl, etr, z1l, z1r, tmp
6581 real(kind=realtype) :: etld, etrd, z1ld, z1rd, tmpd
6582 real(kind=realtype) :: dr, dru, drv, drw, dre, drk
6583 real(kind=realtype) :: drd, drud, drvd, drwd, dred, drkd
6584 real(kind=realtype) :: ravg, uavg, vavg, wavg, havg, kavg
6585 real(kind=realtype) :: uavgd, vavgd, wavgd, havgd, kavgd
6586 real(kind=realtype) :: alphaavg, a2avg, aavg, unavg
6587 real(kind=realtype) :: alphaavgd, a2avgd, aavgd, unavgd
6588 real(kind=realtype) :: ovaavg, ova2avg, area, eta
6589 real(kind=realtype) :: ovaavgd, ova2avgd, aread, etad
6590 real(kind=realtype) :: gm1, gm53
6591 real(kind=realtype) :: lam1, lam2, lam3
6592 real(kind=realtype) :: lam1d, lam2d, lam3d
6593 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
6594 real(kind=realtype) :: abv1d, abv2d, abv3d, abv4d, abv5d, abv6d, &
6596 real(kind=realtype),
dimension(2) :: ktmp
6597 real(kind=realtype),
dimension(2) :: ktmpd
6601 real(kind=realtype) :: x1
6602 real(kind=realtype) :: x1d
6603 real(kind=realtype) :: x2
6604 real(kind=realtype) :: x2d
6605 real(realtype) :: max2
6606 real(realtype) :: max2d
6607 real(kind=realtype) :: abs1
6608 real(kind=realtype) :: abs1d
6609 real(kind=realtype) :: abs2
6610 real(kind=realtype) :: abs2d
6611 real(kind=realtype) :: temp
6612 real(kind=realtype) :: tempd
6613 real(kind=realtype) :: temp0
6614 real(kind=realtype) :: temp1
6615 real(kind=realtype) :: tempd0
6616 real(kind=realtype) :: tempd1
6623 gm1 = gammaface -
one
6626 select case (riemannused)
6635 z1l = sqrt(left(
irho))
6636 z1r = sqrt(right(
irho))
6640 if (correctfork)
then
6643 ktmp(1) = left(
itu1)
6644 ktmp(2) = right(
itu1)
6650 kavg = tmp*(z1l*left(
itu1)+z1r*right(
itu1))
6651 call pushcontrol1b(1)
6653 call pushcontrol1b(0)
6663 &
irhoe), ktmp(1), etl, correctfork)
6666 & right(
irhoe), ktmp(2), etr, correctfork)
6676 uavg = tmp*(z1l*left(
ivx)+z1r*right(
ivx))
6677 vavg = tmp*(z1l*left(
ivy)+z1r*right(
ivy))
6678 wavg = tmp*(z1l*left(
ivz)+z1r*right(
ivz))
6679 havg = tmp*((etl+left(
irhoe))/z1l+(etr+right(
irhoe))/z1r)
6682 area = sqrt(sx**2 + sy**2 + sz**2)
6683 if (1.e-25_realtype .lt. area)
then
6685 call pushcontrol1b(0)
6687 call pushcontrol1b(1)
6688 max2 = 1.e-25_realtype
6700 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
6701 if (gm1*(havg-alphaavg) - gm53*kavg .ge. 0.)
then
6702 a2avg = gm1*(havg-alphaavg) - gm53*kavg
6703 call pushcontrol1b(0)
6705 a2avg = -(gm1*(havg-alphaavg)-gm53*kavg)
6706 call pushcontrol1b(1)
6709 unavg = uavg*sx + vavg*sy + wavg*sz
6716 call pushcontrol1b(1)
6718 call pushcontrol1b(0)
6720 x1 = (left(
ivx)-right(
ivx))*sx + (left(
ivy)-right(
ivy))*sy + (&
6721 & left(
ivz)-right(
ivz))*sz
6722 if (x1 .ge. 0.)
then
6724 call pushcontrol1b(1)
6727 call pushcontrol1b(0)
6729 x2 = sqrt(gammaface*left(
irhoe)/left(
irho)) - sqrt(gammaface*&
6731 if (x2 .ge. 0.)
then
6733 call pushcontrol1b(0)
6736 call pushcontrol1b(1)
6748 eta =
half*(abs1+abs2)
6749 if (unavg - rface + aavg .ge. 0.)
then
6750 lam1 = unavg - rface + aavg
6751 call pushcontrol1b(0)
6753 lam1 = -(unavg-rface+aavg)
6754 call pushcontrol1b(1)
6756 if (unavg - rface - aavg .ge. 0.)
then
6757 lam2 = unavg - rface - aavg
6758 call pushcontrol1b(0)
6760 lam2 = -(unavg-rface-aavg)
6761 call pushcontrol1b(1)
6763 if (unavg - rface .ge. 0.)
then
6764 lam3 = unavg - rface
6765 call pushcontrol1b(0)
6767 lam3 = -(unavg-rface)
6768 call pushcontrol1b(1)
6772 if (lam1 .lt. tmp)
then
6773 call pushreal8(lam1)
6774 lam1 = eta +
fourth*lam1*lam1/eta
6775 call pushcontrol1b(0)
6777 call pushcontrol1b(1)
6779 if (lam2 .lt. tmp)
then
6780 call pushreal8(lam2)
6781 lam2 = eta +
fourth*lam2*lam2/eta
6782 call pushcontrol1b(0)
6784 call pushcontrol1b(1)
6786 if (lam3 .lt. tmp)
then
6787 call pushreal8(lam3)
6788 lam3 = eta +
fourth*lam3*lam3/eta
6789 call pushcontrol1b(0)
6791 call pushcontrol1b(1)
6795 call pushreal8(lam1)
6797 call pushreal8(lam2)
6799 call pushreal8(lam3)
6803 abv1 =
half*(lam1+lam2)
6804 abv2 =
half*(lam1-lam2)
6806 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53&
6808 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
6809 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
6810 abv7 = abv2*abv4*ovaavg + abv3*abv5
6820 tempd0 = -(porflux*fluxd(
irhoe))
6821 fluxd(
irhoe) = 0.0_8
6826 unavgd = abv7*tempd0
6827 abv7d = unavg*tempd0
6828 tempd0 = -(porflux*fluxd(
imz))
6830 lam3d = lam3d + drw*tempd0
6833 abv6d = abv6d + wavg*tempd0
6835 abv7d = abv7d + sz*tempd0
6836 tempd0 = -(porflux*fluxd(
imy))
6838 lam3d = lam3d + drv*tempd0
6841 abv6d = abv6d + vavg*tempd0
6843 abv7d = abv7d + sy*tempd0
6844 tempd0 = -(porflux*fluxd(
imx))
6846 lam3d = lam3d + dru*tempd0
6849 abv6d = abv6d + uavg*tempd0
6851 abv7d = abv7d + sx*tempd0
6852 tempd0 = -(porflux*fluxd(
irho))
6855 abv6d = abv6d + tempd0
6856 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
6857 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
6858 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
6859 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
6860 lam3d = lam3d + dr*tempd0 - abv3d
6861 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
6862 ova2avgd = abv3*abv4*abv6d
6863 sxd = sxd + dru*abv5d
6864 syd = syd + drv*abv5d
6865 szd = szd + drw*abv5d
6866 unavgd = unavgd - dr*abv5d
6868 drud = drud + sx*abv5d - uavg*tempd0
6869 drvd = drvd + sy*abv5d - vavg*tempd0
6870 drwd = drwd + sz*abv5d - wavg*tempd0
6871 drd = drd + alphaavg*tempd0 - unavg*abv5d
6872 drkd = -(gm53*abv4d)
6873 alphaavgd = dr*tempd0
6874 uavgd = uavgd - dru*tempd0
6875 vavgd = vavgd - drv*tempd0
6876 dred = dred + tempd0
6877 wavgd = wavgd - drw*tempd0
6884 aread = lam3*lam3d + lam2*lam2d + lam1*lam1d
6888 call popcontrol1b(branch)
6889 if (branch .eq. 0)
then
6890 tempd0 =
fourth*lam3d/eta
6892 etad = lam3d - lam3**2*tempd0/eta
6893 lam3d = 2*lam3*tempd0
6897 call popcontrol1b(branch)
6898 if (branch .eq. 0)
then
6899 tempd0 =
fourth*lam2d/eta
6901 etad = etad + lam2d - lam2**2*tempd0/eta
6902 lam2d = 2*lam2*tempd0
6904 call popcontrol1b(branch)
6905 if (branch .eq. 0)
then
6906 tempd0 =
fourth*lam1d/eta
6908 etad = etad + lam1d - lam1**2*tempd0/eta
6909 lam1d = 2*lam1*tempd0
6912 call popcontrol1b(branch)
6913 if (branch .eq. 0)
then
6914 unavgd = unavgd + lam3d
6918 unavgd = unavgd - lam3d
6920 call popcontrol1b(branch)
6921 if (branch .eq. 0)
then
6922 unavgd = unavgd + lam2d
6923 rfaced = rfaced - lam2d
6926 rfaced = rfaced + lam2d
6927 unavgd = unavgd - lam2d
6930 call popcontrol1b(branch)
6931 if (branch .eq. 0)
then
6932 unavgd = unavgd + lam1d
6933 rfaced = rfaced - lam1d
6934 aavgd = aavgd + lam1d
6936 rfaced = rfaced + lam1d
6937 unavgd = unavgd - lam1d
6938 aavgd = aavgd - lam1d
6942 call popcontrol1b(branch)
6943 if (branch .eq. 0)
then
6950 if (gammaface*temp1 .eq. 0.0_8)
then
6953 tempd0 = gammaface*x2d/(left(
irho)*2.0*sqrt(gammaface*temp1)&
6956 if (gammaface*temp0 .eq. 0.0_8)
then
6959 tempd1 = -(gammaface*x2d/(right(
irho)*2.0*sqrt(gammaface*&
6963 rightd(
irho) = rightd(
irho) - temp0*tempd1
6965 leftd(
irho) = leftd(
irho) - temp1*tempd0
6966 call popcontrol1b(branch)
6967 if (branch .eq. 0)
then
6972 leftd(
ivx) = leftd(
ivx) + sx*x1d
6973 rightd(
ivx) = rightd(
ivx) - sx*x1d
6974 sxd = sxd + (left(
ivx)-right(
ivx))*x1d
6975 leftd(
ivy) = leftd(
ivy) + sy*x1d
6976 rightd(
ivy) = rightd(
ivy) - sy*x1d
6977 syd = syd + (left(
ivy)-right(
ivy))*x1d
6978 leftd(
ivz) = leftd(
ivz) + sz*x1d
6979 rightd(
ivz) = rightd(
ivz) - sz*x1d
6980 szd = szd + (left(
ivz)-right(
ivz))*x1d
6981 call popcontrol1b(branch)
6982 if (branch .ne. 0)
then
6983 rfaced = rfaced + unavgd
6986 aavgd = aavgd -
one*ovaavgd/aavg**2
6987 if (a2avg .eq. 0.0_8)
then
6988 a2avgd = -(
one*ova2avgd/a2avg**2)
6990 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2
6992 uavgd = uavgd + sx*unavgd
6993 sxd = sxd + uavg*unavgd
6994 vavgd = vavgd + sy*unavgd
6995 syd = syd + vavg*unavgd
6996 wavgd = wavgd + sz*unavgd
6997 szd = szd + wavg*unavgd
6998 call popcontrol1b(branch)
6999 if (branch .eq. 0)
then
7000 havgd = havgd + gm1*a2avgd
7001 alphaavgd = alphaavgd - gm1*a2avgd
7002 kavgd = -(gm53*a2avgd)
7005 havgd = havgd - gm1*a2avgd
7006 alphaavgd = alphaavgd + gm1*a2avgd
7011 tempd0 =
half*alphaavgd
7012 uavgd = uavgd + 2*uavg*tempd0
7013 vavgd = vavgd + 2*vavg*tempd0
7014 wavgd = wavgd + 2*wavg*tempd0
7015 sfaced = sfaced + tmp*rfaced
7016 tmpd = sface*rfaced + sz*szd + sy*syd + sx*sxd
7020 max2d = -(
one*tmpd/max2**2)
7022 call popcontrol1b(branch)
7023 if (branch .eq. 0) aread = aread + max2d
7024 if (sx**2 + sy**2 + sz**2 .eq. 0.0_8)
then
7027 tempd0 = aread/(2.0*sqrt(sx**2+sy**2+sz**2))
7029 sxd = sxd + 2*sx*tempd0
7030 syd = syd + 2*sy*tempd0
7031 szd = szd + 2*sz*tempd0
7032 temp = (etr+right(
irhoe))/z1r
7033 temp0 = (etl+left(
irhoe))/z1l
7034 tmpd = (temp0+temp)*havgd + (z1l*left(
ivz)+z1r*right(
ivz))*&
7035 & wavgd + (z1l*left(
ivy)+z1r*right(
ivy))*vavgd + (z1l*left(
ivx&
7036 & )+z1r*right(
ivx))*uavgd
7042 z1rd = -(temp*tempd)
7043 etld = tempd1 - dred
7046 z1ld = left(
ivz)*tempd - temp0*tempd1
7047 leftd(
ivz) = leftd(
ivz) + z1l*tempd
7048 z1rd = z1rd + right(
ivz)*tempd
7049 rightd(
ivz) = rightd(
ivz) + z1r*tempd
7051 z1ld = z1ld + left(
ivy)*tempd
7052 leftd(
ivy) = leftd(
ivy) + z1l*tempd
7053 z1rd = z1rd + right(
ivy)*tempd
7054 rightd(
ivy) = rightd(
ivy) + z1r*tempd
7056 z1ld = z1ld + left(
ivx)*tempd
7057 leftd(
ivx) = leftd(
ivx) + z1l*tempd
7058 z1rd = z1rd + right(
ivx)*tempd
7059 rightd(
ivx) = rightd(
ivx) + z1r*tempd
7077 & , right(
ivy), rightd(
ivy), right(
ivz), rightd(
ivz), &
7078 & right(
irhoe), rightd(
irhoe), ktmp(2), ktmpd(2), etr, &
7079 & etrd, correctfork)
7083 & ), leftd(
irhoe), ktmp(1), ktmpd(1), etl, etld, &
7085 call popcontrol1b(branch)
7086 if (branch .ne. 0)
then
7087 tmpd = tmpd + (z1l*left(
itu1)+z1r*right(
itu1))*kavgd
7089 z1ld = z1ld + left(
itu1)*tempd
7090 leftd(
itu1) = leftd(
itu1) + z1l*tempd
7091 z1rd = z1rd + right(
itu1)*tempd
7092 rightd(
itu1) = rightd(
itu1) + z1r*tempd
7094 rightd(
itu1) = rightd(
itu1) + right(
irho)*drkd + ktmpd(2)
7099 tempd = -(
one*tmpd/(z1l+z1r)**2)
7102 if (.not.right(
irho) .eq. 0.0_8) rightd(
irho) = rightd(
irho) +&
7103 & z1rd/(2.0*sqrt(right(
irho)))
7104 if (.not.left(
irho) .eq. 0.0_8) leftd(
irho) = leftd(
irho) + &
7105 & z1ld/(2.0*sqrt(left(
irho)))
7140 real(kind=realtype),
dimension(*),
intent(in) :: left, right
7141 real(kind=realtype),
dimension(*),
intent(out) :: flux
7145 real(kind=realtype) :: porflux, rface
7146 real(kind=realtype) :: etl, etr, z1l, z1r, tmp
7147 real(kind=realtype) :: dr, dru, drv, drw, dre, drk
7148 real(kind=realtype) :: ravg, uavg, vavg, wavg, havg, kavg
7149 real(kind=realtype) :: alphaavg, a2avg, aavg, unavg
7150 real(kind=realtype) :: ovaavg, ova2avg, area, eta
7151 real(kind=realtype) :: gm1, gm53
7152 real(kind=realtype) :: lam1, lam2, lam3
7153 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
7154 real(kind=realtype),
dimension(2) :: ktmp
7158 real(kind=realtype) :: x1
7159 real(kind=realtype) :: x2
7160 real(realtype) :: max2
7161 real(kind=realtype) :: abs1
7162 real(kind=realtype) :: abs2
7168 gm1 = gammaface -
one
7171 select case (riemannused)
7180 z1l = sqrt(left(
irho))
7181 z1r = sqrt(right(
irho))
7185 if (correctfork)
then
7188 ktmp(1) = left(
itu1)
7189 ktmp(2) = right(
itu1)
7195 kavg = tmp*(z1l*left(
itu1)+z1r*right(
itu1))
7205 &
irhoe), ktmp(1), etl, correctfork)
7207 & right(
irhoe), ktmp(2), etr, correctfork)
7217 ravg =
fourth*(z1r+z1l)**2
7218 uavg = tmp*(z1l*left(
ivx)+z1r*right(
ivx))
7219 vavg = tmp*(z1l*left(
ivy)+z1r*right(
ivy))
7220 wavg = tmp*(z1l*left(
ivz)+z1r*right(
ivz))
7221 havg = tmp*((etl+left(
irhoe))/z1l+(etr+right(
irhoe))/z1r)
7224 area = sqrt(sx**2 + sy**2 + sz**2)
7225 if (1.e-25_realtype .lt. area)
then
7228 max2 = 1.e-25_realtype
7237 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
7238 if (gm1*(havg-alphaavg) - gm53*kavg .ge. 0.)
then
7239 a2avg = gm1*(havg-alphaavg) - gm53*kavg
7241 a2avg = -(gm1*(havg-alphaavg)-gm53*kavg)
7244 unavg = uavg*sx + vavg*sy + wavg*sz
7250 x1 = (left(
ivx)-right(
ivx))*sx + (left(
ivy)-right(
ivy))*sy + (&
7251 & left(
ivz)-right(
ivz))*sz
7252 if (x1 .ge. 0.)
then
7257 x2 = sqrt(gammaface*left(
irhoe)/left(
irho)) - sqrt(gammaface*&
7259 if (x2 .ge. 0.)
then
7274 eta =
half*(abs1+abs2)
7275 if (unavg - rface + aavg .ge. 0.)
then
7276 lam1 = unavg - rface + aavg
7278 lam1 = -(unavg-rface+aavg)
7280 if (unavg - rface - aavg .ge. 0.)
then
7281 lam2 = unavg - rface - aavg
7283 lam2 = -(unavg-rface-aavg)
7285 if (unavg - rface .ge. 0.)
then
7286 lam3 = unavg - rface
7288 lam3 = -(unavg-rface)
7292 if (lam1 .lt. tmp) lam1 = eta +
fourth*lam1*lam1/eta
7293 if (lam2 .lt. tmp) lam2 = eta +
fourth*lam2*lam2/eta
7294 if (lam3 .lt. tmp) lam3 = eta +
fourth*lam3*lam3/eta
7302 abv1 =
half*(lam1+lam2)
7303 abv2 =
half*(lam1-lam2)
7305 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53&
7307 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
7308 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
7309 abv7 = abv2*abv4*ovaavg + abv3*abv5
7313 flux(
irho) = -(porflux*(lam3*dr+abv6))
7314 flux(
imx) = -(porflux*(lam3*dru+uavg*abv6+sx*abv7))
7315 flux(
imy) = -(porflux*(lam3*drv+vavg*abv6+sy*abv7))
7316 flux(
imz) = -(porflux*(lam3*drw+wavg*abv6+sz*abv7))
7317 flux(
irhoe) = -(porflux*(lam3*dre+havg*abv6+unavg*abv7))
7326 &
'turkel preconditioner not implemented yet')
7329 &
'choi merkle preconditioner not implemented yet')
7332 call terminate(
'riemannflux',
'van leer fvs not implemented yet'&
7335 call terminate(
'riemannflux',
'ausmdv fvs not implemented yet')
7354 use blockpointers,
only :
il,
jl,
kl,
ie,
je,
ke,
ib,
jb,
kb,
w,
p&
7355 & ,
pori,
porj,
pork,
fw,
gamma,
si,
sj,
sk,
indfamilyi,
indfamilyj, &
7371 logical,
intent(in) :: finegrid
7375 integer(kind=portype) :: por
7376 integer(kind=inttype) :: nwint
7377 integer(kind=inttype) :: i, j, k, ind
7378 integer(kind=inttype) :: limused, riemannused
7379 real(kind=realtype) :: sx, sy, sz, omk, opk, sfil, gammaface
7380 real(kind=realtype) :: factminmod, sface
7381 real(kind=realtype),
dimension(nw) :: left, right
7382 real(kind=realtype),
dimension(nw) :: du1, du2, du3
7383 real(kind=realtype),
dimension(nwf) :: flux
7384 logical :: firstorderk, correctfork, rotationalperiodic
7386 intrinsic associated
7388 real(kind=realtype) :: abs0
7389 real(realtype) :: max1
7390 if (
rfil .ge. 0.)
then
7404 rotationalperiodic = .true.
7406 rotationalperiodic = .false.
7429 max1 = 1.e-10_realtype
7437 if (finegrid) limused =
limiter
7442 if (finegrid) riemannused =
riemann
7454 if (correctfork)
then
7457 firstorderk = .true.
7460 firstorderk = .false.
7464 firstorderk = .false.
7493 if (correctfork) left(
itu1) =
w(i, j, k,
itu1)
7495 right(
ivx) =
w(i+1, j, k,
ivx)
7496 right(
ivy) =
w(i+1, j, k,
ivy)
7497 right(
ivz) =
w(i+1, j, k,
ivz)
7498 right(
irhoe) =
p(i+1, j, k)
7499 if (correctfork) right(
itu1) =
w(i+1, j, k,
itu1)
7538 if (correctfork) left(
itu1) =
w(i, j, k,
itu1)
7540 right(
ivx) =
w(i, j+1, k,
ivx)
7541 right(
ivy) =
w(i, j+1, k,
ivy)
7542 right(
ivz) =
w(i, j+1, k,
ivz)
7543 right(
irhoe) =
p(i, j+1, k)
7544 if (correctfork) right(
itu1) =
w(i, j+1, k,
itu1)
7583 if (correctfork) left(
itu1) =
w(i, j, k,
itu1)
7585 right(
ivx) =
w(i, j, k+1,
ivx)
7586 right(
ivy) =
w(i, j, k+1,
ivy)
7587 right(
ivz) =
w(i, j, k+1,
ivz)
7588 right(
irhoe) =
p(i, j, k+1)
7589 if (correctfork) right(
itu1) =
w(i, j, k+1,
itu1)
7640 du1(
irhoe) =
p(i, j, k) -
p(i-1, j, k)
7641 du2(
irhoe) =
p(i+1, j, k) -
p(i, j, k)
7642 du3(
irhoe) =
p(i+2, j, k) -
p(i+1, j, k)
7643 if (correctfork)
then
7664 if (correctfork)
then
7714 du1(
irhoe) =
p(i, j, k) -
p(i, j-1, k)
7715 du2(
irhoe) =
p(i, j+1, k) -
p(i, j, k)
7716 du3(
irhoe) =
p(i, j+2, k) -
p(i, j+1, k)
7717 if (correctfork)
then
7738 if (correctfork)
then
7788 du1(
irhoe) =
p(i, j, k) -
p(i, j, k-1)
7789 du2(
irhoe) =
p(i, j, k+1) -
p(i, j, k)
7790 du3(
irhoe) =
p(i, j, k+2) -
p(i, j, k+1)
7791 if (correctfork)
then
7812 if (correctfork)
then
7854 real(kind=realtype),
parameter :: epslim=1.e-10_realtype
7858 real(kind=realtype),
dimension(:),
intent(inout) :: du1, du2, du3
7859 real(kind=realtype),
dimension(:),
intent(out) :: left, right
7860 real(kind=realtype),
dimension(:, :, :, :, :),
pointer :: &
7865 integer(kind=inttype) :: l
7866 real(kind=realtype) :: rl1, rl2, rr1, rr2, tmp, dvx, dvy, dvz
7867 real(kind=realtype),
dimension(3, 3) :: rot
7872 real(kind=realtype) :: x1
7873 real(kind=realtype) :: y1
7874 real(kind=realtype) :: y2
7875 real(kind=realtype) :: x2
7876 real(kind=realtype) :: y3
7877 real(kind=realtype) :: y4
7878 real(kind=realtype) :: x3
7879 real(kind=realtype) :: x4
7880 real(kind=realtype) :: x5
7881 real(kind=realtype) :: x6
7882 real(kind=realtype) :: max2
7883 real(kind=realtype) :: max3
7884 real(kind=realtype) :: max4
7885 real(kind=realtype) :: max5
7886 real(kind=realtype) :: max6
7887 real(kind=realtype) :: max7
7890 if (rotationalperiodic)
then
7893 rot(1, 1) = rotmatrix(i, j, k, 1, 1)
7894 rot(1, 2) = rotmatrix(i, j, k, 1, 2)
7895 rot(1, 3) = rotmatrix(i, j, k, 1, 3)
7896 rot(2, 1) = rotmatrix(i, j, k, 2, 1)
7897 rot(2, 2) = rotmatrix(i, j, k, 2, 2)
7898 rot(2, 3) = rotmatrix(i, j, k, 2, 3)
7899 rot(3, 1) = rotmatrix(i, j, k, 3, 1)
7900 rot(3, 2) = rotmatrix(i, j, k, 3, 2)
7901 rot(3, 3) = rotmatrix(i, j, k, 3, 3)
7907 du1(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
7908 du1(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
7909 du1(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
7913 du2(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
7914 du2(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
7915 du2(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
7919 du3(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
7920 du3(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
7921 du3(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
7924 select case (limused)
7929 left(l) = omk*du1(l) + opk*du2(l)
7930 right(l) = -(omk*du3(l)) - opk*du2(l)
7937 if (du2(l) .ge. 0.)
then
7942 if (x1 .lt. epslim)
then
7949 tmp =
one/sign(max2, du2(l))
7950 if (du1(l) .ge. 0.)
then
7955 if (x3 .lt. epslim)
then
7960 y1 = du2(l)/sign(max4, du1(l))
7961 if (
zero .lt. y1)
then
7966 if (
zero .lt. du1(l)*tmp)
then
7971 if (
zero .lt. du3(l)*tmp)
then
7976 if (du3(l) .ge. 0.)
then
7981 if (x4 .lt. epslim)
then
7986 y2 = du2(l)/sign(max5, du3(l))
7987 if (
zero .lt. y2)
then
7993 rl1 = rl1*(rl1+
one)/(rl1*rl1+
one)
7994 rl2 = rl2*(rl2+
one)/(rl2*rl2+
one)
7995 rr1 = rr1*(rr1+
one)/(rr1*rr1+
one)
7996 rr2 = rr2*(rr2+
one)/(rr2*rr2+
one)
7999 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
8000 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
8007 if (du2(l) .ge. 0.)
then
8012 if (x2 .lt. epslim)
then
8019 tmp =
one/sign(max3, du2(l))
8020 if (du1(l) .ge. 0.)
then
8025 if (x5 .lt. epslim)
then
8030 y3 = du2(l)/sign(max6, du1(l))
8031 if (
zero .lt. y3)
then
8036 if (
zero .lt. du1(l)*tmp)
then
8041 if (
zero .lt. du3(l)*tmp)
then
8046 if (du3(l) .ge. 0.)
then
8051 if (x6 .lt. epslim)
then
8056 y4 = du2(l)/sign(max7, du3(l))
8057 if (
zero .lt. y4)
then
8062 if (
one .gt. factminmod*rl1)
then
8063 rl1 = factminmod*rl1
8067 if (
one .gt. factminmod*rl2)
then
8068 rl2 = factminmod*rl2
8072 if (
one .gt. factminmod*rr1)
then
8073 rr1 = factminmod*rr1
8077 if (
one .gt. factminmod*rr2)
then
8078 rr2 = factminmod*rr2
8084 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
8085 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
8091 if (firstorderk)
then
8098 if (rotationalperiodic)
then
8103 left(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
8104 left(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
8105 left(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
8110 right(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
8111 right(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
8112 right(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
8122 real(kind=realtype),
dimension(*),
intent(in) :: left, right
8123 real(kind=realtype),
dimension(*),
intent(out) :: flux
8127 real(kind=realtype) :: porflux, rface
8128 real(kind=realtype) :: etl, etr, z1l, z1r, tmp
8129 real(kind=realtype) :: dr, dru, drv, drw, dre, drk
8130 real(kind=realtype) :: ravg, uavg, vavg, wavg, havg, kavg
8131 real(kind=realtype) :: alphaavg, a2avg, aavg, unavg
8132 real(kind=realtype) :: ovaavg, ova2avg, area, eta
8133 real(kind=realtype) :: gm1, gm53
8134 real(kind=realtype) :: lam1, lam2, lam3
8135 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
8136 real(kind=realtype),
dimension(2) :: ktmp
8140 real(kind=realtype) :: x1
8141 real(kind=realtype) :: x2
8142 real(realtype) :: max2
8143 real(kind=realtype) :: abs1
8144 real(kind=realtype) :: abs2
8150 gm1 = gammaface -
one
8153 select case (riemannused)
8162 z1l = sqrt(left(
irho))
8163 z1r = sqrt(right(
irho))
8167 if (correctfork)
then
8170 ktmp(1) = left(
itu1)
8171 ktmp(2) = right(
itu1)
8177 kavg = tmp*(z1l*left(
itu1)+z1r*right(
itu1))
8187 &
irhoe), ktmp(1), etl, correctfork)
8189 & right(
irhoe), ktmp(2), etr, correctfork)
8199 ravg =
fourth*(z1r+z1l)**2
8200 uavg = tmp*(z1l*left(
ivx)+z1r*right(
ivx))
8201 vavg = tmp*(z1l*left(
ivy)+z1r*right(
ivy))
8202 wavg = tmp*(z1l*left(
ivz)+z1r*right(
ivz))
8203 havg = tmp*((etl+left(
irhoe))/z1l+(etr+right(
irhoe))/z1r)
8206 area = sqrt(sx**2 + sy**2 + sz**2)
8207 if (1.e-25_realtype .lt. area)
then
8210 max2 = 1.e-25_realtype
8219 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
8220 if (gm1*(havg-alphaavg) - gm53*kavg .ge. 0.)
then
8221 a2avg = gm1*(havg-alphaavg) - gm53*kavg
8223 a2avg = -(gm1*(havg-alphaavg)-gm53*kavg)
8226 unavg = uavg*sx + vavg*sy + wavg*sz
8232 x1 = (left(
ivx)-right(
ivx))*sx + (left(
ivy)-right(
ivy))*sy + (&
8233 & left(
ivz)-right(
ivz))*sz
8234 if (x1 .ge. 0.)
then
8239 x2 = sqrt(gammaface*left(
irhoe)/left(
irho)) - sqrt(gammaface*&
8241 if (x2 .ge. 0.)
then
8256 eta =
half*(abs1+abs2)
8257 if (unavg - rface + aavg .ge. 0.)
then
8258 lam1 = unavg - rface + aavg
8260 lam1 = -(unavg-rface+aavg)
8262 if (unavg - rface - aavg .ge. 0.)
then
8263 lam2 = unavg - rface - aavg
8265 lam2 = -(unavg-rface-aavg)
8267 if (unavg - rface .ge. 0.)
then
8268 lam3 = unavg - rface
8270 lam3 = -(unavg-rface)
8274 if (lam1 .lt. tmp) lam1 = eta +
fourth*lam1*lam1/eta
8275 if (lam2 .lt. tmp) lam2 = eta +
fourth*lam2*lam2/eta
8276 if (lam3 .lt. tmp) lam3 = eta +
fourth*lam3*lam3/eta
8284 abv1 =
half*(lam1+lam2)
8285 abv2 =
half*(lam1-lam2)
8287 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53&
8289 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
8290 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
8291 abv7 = abv2*abv4*ovaavg + abv3*abv5
8295 flux(
irho) = -(porflux*(lam3*dr+abv6))
8296 flux(
imx) = -(porflux*(lam3*dru+uavg*abv6+sx*abv7))
8297 flux(
imy) = -(porflux*(lam3*drv+vavg*abv6+sy*abv7))
8298 flux(
imz) = -(porflux*(lam3*drw+wavg*abv6+sz*abv7))
8299 flux(
irhoe) = -(porflux*(lam3*dre+havg*abv6+unavg*abv7))
8308 &
'turkel preconditioner not implemented yet')
8311 &
'choi merkle preconditioner not implemented yet')
8314 call terminate(
'riemannflux',
'van leer fvs not implemented yet'&
8317 call terminate(
'riemannflux',
'ausmdv fvs not implemented yet')
8354 real(kind=realtype),
parameter :: twothird=
two*
third
8355 real(kind=realtype),
parameter :: xminn=1.e-14_realtype
8359 integer(kind=inttype) :: i, j, k, ii
8360 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
8361 real(kind=realtype) :: muld, mued, mutd, heatcoefd
8362 real(kind=realtype) :: gm1, factlamheat, factturbheat
8363 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
8364 real(kind=realtype) :: u_xd, u_yd, u_zd, v_xd, v_yd, v_zd, w_xd, &
8366 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
8367 real(kind=realtype) :: q_xd, q_yd, q_zd, ubard, vbard, wbard
8368 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
8369 real(kind=realtype) :: corrd, ssxd, ssyd, sszd, ssd, fracdivd
8370 real(kind=realtype) :: tauxx, tauyy, tauzz
8371 real(kind=realtype) :: tauxxd, tauyyd, tauzzd
8372 real(kind=realtype) :: tauxy, tauxz, tauyz
8373 real(kind=realtype) :: tauxyd, tauxzd, tauyzd
8374 real(kind=realtype) :: tauxxs, tauyys, tauzzs
8375 real(kind=realtype) :: tauxxsd, tauyysd, tauzzsd
8376 real(kind=realtype) :: tauxys, tauxzs, tauyzs
8377 real(kind=realtype) :: tauxysd, tauxzsd, tauyzsd
8378 real(kind=realtype) :: exx, eyy, ezz
8379 real(kind=realtype) :: exxd, eyyd, ezzd
8380 real(kind=realtype) :: exy, exz, eyz
8381 real(kind=realtype) :: exyd, exzd, eyzd
8382 real(kind=realtype) :: wxy, wxz, wyz, wyx, wzx, wzy
8383 real(kind=realtype) :: wxyd, wxzd, wyzd, wyxd, wzxd, wzyd
8384 real(kind=realtype) :: den, ccr1, fact
8385 real(kind=realtype) :: dend, factd
8386 real(kind=realtype) :: fmx, fmy, fmz, frhoe
8387 real(kind=realtype) :: fmxd, fmyd, fmzd, frhoed
8388 logical :: correctfork, storewalltensor
8393 real(kind=realtype) :: abs0
8394 real(kind=realtype) :: temp
8395 real(kind=realtype) :: tempd
8396 real(kind=realtype) :: temp0
8397 real(kind=realtype) :: tempd0
8399 real(kind=realtype) :: temp1
8400 real(kind=realtype) :: tempd1
8407 if (rfilv .ge. 0.)
then
8414 if (
associated(
aad))
aad = 0.0_8
8415 if (
associated(
wxd))
wxd = 0.0_8
8416 if (
associated(
wyd))
wyd = 0.0_8
8417 if (
associated(
wzd))
wzd = 0.0_8
8419 if (
associated(
qxd))
qxd = 0.0_8
8420 if (
associated(
qyd))
qyd = 0.0_8
8421 if (
associated(
qzd))
qzd = 0.0_8
8422 if (
associated(
uxd))
uxd = 0.0_8
8423 if (
associated(
uyd))
uyd = 0.0_8
8424 if (
associated(
uzd))
uzd = 0.0_8
8425 if (
associated(
vxd))
vxd = 0.0_8
8426 if (
associated(
vyd))
vyd = 0.0_8
8427 if (
associated(
vzd))
vzd = 0.0_8
8431 storewalltensor = .false.
8433 call pushcontrol1b(1)
8434 storewalltensor = .true.
8436 call pushcontrol1b(0)
8437 storewalltensor = .true.
8439 call pushcontrol1b(0)
8442 if (
associated(
aad))
aad = 0.0_8
8443 if (
associated(
wxd))
wxd = 0.0_8
8444 if (
associated(
wyd))
wyd = 0.0_8
8445 if (
associated(
wzd))
wzd = 0.0_8
8447 if (
associated(
qxd))
qxd = 0.0_8
8448 if (
associated(
qyd))
qyd = 0.0_8
8449 if (
associated(
qzd))
qzd = 0.0_8
8450 if (
associated(
uxd))
uxd = 0.0_8
8451 if (
associated(
uyd))
uyd = 0.0_8
8452 if (
associated(
uzd))
uzd = 0.0_8
8453 if (
associated(
vxd))
vxd = 0.0_8
8454 if (
associated(
vyd))
vyd = 0.0_8
8455 if (
associated(
vzd))
vzd = 0.0_8
8459 if (
associated(
aad))
aad = 0.0_8
8460 if (
associated(
wxd))
wxd = 0.0_8
8461 if (
associated(
wyd))
wyd = 0.0_8
8462 if (
associated(
wzd))
wzd = 0.0_8
8464 if (
associated(
qxd))
qxd = 0.0_8
8465 if (
associated(
qyd))
qyd = 0.0_8
8466 if (
associated(
qzd))
qzd = 0.0_8
8467 if (
associated(
uxd))
uxd = 0.0_8
8468 if (
associated(
uyd))
uyd = 0.0_8
8469 if (
associated(
uzd))
uzd = 0.0_8
8470 if (
associated(
vxd))
vxd = 0.0_8
8471 if (
associated(
vyd))
vyd = 0.0_8
8472 if (
associated(
vzd))
vzd = 0.0_8
8477 j = mod(ii/
il,
ny) + 2
8488 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
8490 mue = por*(
rev(i, j, k)+
rev(i+1, j, k))
8491 call pushcontrol1b(0)
8493 call pushcontrol1b(1)
8499 heatcoef = mul*factlamheat + mue*factturbheat
8502 u_x =
fourth*(
ux(i, j-1, k-1)+
ux(i, j, k-1)+
ux(i, j-1, k)+
ux(i, &
8504 u_y =
fourth*(
uy(i, j-1, k-1)+
uy(i, j, k-1)+
uy(i, j-1, k)+
uy(i, &
8506 u_z =
fourth*(
uz(i, j-1, k-1)+
uz(i, j, k-1)+
uz(i, j-1, k)+
uz(i, &
8508 v_x =
fourth*(
vx(i, j-1, k-1)+
vx(i, j, k-1)+
vx(i, j-1, k)+
vx(i, &
8510 v_y =
fourth*(
vy(i, j-1, k-1)+
vy(i, j, k-1)+
vy(i, j-1, k)+
vy(i, &
8512 v_z =
fourth*(
vz(i, j-1, k-1)+
vz(i, j, k-1)+
vz(i, j-1, k)+
vz(i, &
8514 w_x =
fourth*(
wx(i, j-1, k-1)+
wx(i, j, k-1)+
wx(i, j-1, k)+
wx(i, &
8516 w_y =
fourth*(
wy(i, j-1, k-1)+
wy(i, j, k-1)+
wy(i, j-1, k)+
wy(i, &
8518 w_z =
fourth*(
wz(i, j-1, k-1)+
wz(i, j, k-1)+
wz(i, j-1, k)+
wz(i, &
8520 q_x =
fourth*(
qx(i, j-1, k-1)+
qx(i, j, k-1)+
qx(i, j-1, k)+
qx(i, &
8522 q_y =
fourth*(
qy(i, j-1, k-1)+
qy(i, j, k-1)+
qy(i, j-1, k)+
qy(i, &
8524 q_z =
fourth*(
qz(i, j-1, k-1)+
qz(i, j, k-1)+
qz(i, j-1, k)+
qz(i, &
8530 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j-1&
8531 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1, 1)+&
8532 &
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
8533 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j-1&
8534 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1, 2)+&
8535 &
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
8536 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j-1&
8537 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1, 3)+&
8538 &
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
8541 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
8549 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i+1, j, k,
ivx)-
w(i, j, &
8552 u_x = u_x - corr*ssx
8554 u_y = u_y - corr*ssy
8556 u_z = u_z - corr*ssz
8557 call pushreal8(corr)
8558 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i+1, j, k,
ivy)-
w(i, j, &
8561 v_x = v_x - corr*ssx
8563 v_y = v_y - corr*ssy
8565 v_z = v_z - corr*ssz
8566 call pushreal8(corr)
8567 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i+1, j, k,
ivz)-
w(i, j, &
8570 w_x = w_x - corr*ssx
8572 w_y = w_y - corr*ssy
8574 w_z = w_z - corr*ssz
8575 call pushreal8(corr)
8576 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i+1, j, k)-
aa(i, j, k))&
8579 q_x = q_x - corr*ssx
8581 q_y = q_y - corr*ssy
8583 q_z = q_z - corr*ssz
8590 fracdiv = twothird*(u_x+v_y+w_z)
8591 tauxxs =
two*u_x - fracdiv
8592 tauyys =
two*v_y - fracdiv
8593 tauzzs =
two*w_z - fracdiv
8619 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
8620 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
8621 if (den .lt. xminn)
then
8623 call pushcontrol1b(0)
8625 call pushcontrol1b(1)
8641 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
8642 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
8643 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
8644 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
8645 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
8646 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
8648 tauxx = mut*tauxxs - exx
8649 tauyy = mut*tauyys - eyy
8650 tauzz = mut*tauzzs - ezz
8651 tauxy = mut*tauxys - exy
8652 tauxz = mut*tauxzs - exz
8653 tauyz = mut*tauyzs - eyz
8654 call pushcontrol1b(0)
8663 call pushcontrol1b(1)
8677 call pushcontrol1b(0)
8679 call pushcontrol1b(1)
8713 call popcontrol1b(branch)
8714 if (branch .eq. 0)
then
8744 tempd1 =
si(i, j, k, 1)*frhoed
8745 tempd0 =
si(i, j, k, 2)*frhoed
8746 tempd =
si(i, j, k, 3)*frhoed
8747 sid(i, j, k, 3) =
sid(i, j, k, 3) + (ubar*tauxz+vbar*tauyz+wbar*&
8748 & tauzz-q_z)*frhoed + tauzz*fmzd + tauyz*fmyd + tauxz*fmxd
8749 sid(i, j, k, 2) =
sid(i, j, k, 2) + (ubar*tauxy+vbar*tauyy+wbar*&
8750 & tauyz-q_y)*frhoed + tauyz*fmzd + tauyy*fmyd + tauxy*fmxd
8751 sid(i, j, k, 1) =
sid(i, j, k, 1) + (ubar*tauxx+vbar*tauxy+wbar*&
8752 & tauxz-q_x)*frhoed + tauxz*fmzd + tauxy*fmyd + tauxx*fmxd
8753 q_xd = q_xd -
si(i, j, k, 1)*frhoed
8754 q_yd = q_yd -
si(i, j, k, 2)*frhoed
8755 q_zd = q_zd -
si(i, j, k, 3)*frhoed
8756 ubard = tauxz*tempd + tauxy*tempd0 + tauxx*tempd1
8757 tauxzd = tauxzd + ubar*tempd + wbar*tempd1 +
si(i, j, k, 1)*fmzd&
8758 & +
si(i, j, k, 3)*fmxd
8759 vbard = tauyz*tempd + tauyy*tempd0 + tauxy*tempd1
8760 tauyzd = tauyzd + vbar*tempd + wbar*tempd0 +
si(i, j, k, 2)*fmzd&
8761 & +
si(i, j, k, 3)*fmyd
8762 wbard = tauzz*tempd + tauyz*tempd0 + tauxz*tempd1
8763 tauzzd = tauzzd + wbar*tempd +
si(i, j, k, 3)*fmzd
8764 tauxyd = tauxyd + ubar*tempd0 + vbar*tempd1 +
si(i, j, k, 1)*&
8765 & fmyd +
si(i, j, k, 2)*fmxd
8766 tauyyd = tauyyd + vbar*tempd0 +
si(i, j, k, 2)*fmyd
8767 tauxxd = tauxxd + ubar*tempd1 +
si(i, j, k, 1)*fmxd
8774 call popcontrol1b(branch)
8775 if (branch .eq. 0)
then
8779 tauxzsd = mut*tauxzd + wyx*tempd1
8780 tauxysd = mut*tauxyd + wzx*tempd1
8781 tauzzsd = mut*tauzzd + wyz*tempd1
8782 tauyysd = mut*tauyyd + wzy*tempd1
8783 wyxd = tauxzs*tempd1
8784 wyzd = tauzzs*tempd1
8785 wzxd = tauxys*tempd1
8786 wzyd = tauyys*tempd1
8788 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
8789 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
8790 tauyzsd = mut*tauyzd + wxy*tempd1
8794 tauxxsd = mut*tauxxd + wzx*tempd1
8796 factd = (wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)*eyzd + (&
8797 & wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)*exzd + (wxy*&
8798 & tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)*exyd + (wzx*tauxzs+&
8799 & wzy*tauyzs)*
two*ezzd + (wyx*tauxys+wyz*tauyzs)*
two*eyyd + (&
8800 & wxy*tauxys+wxz*tauxzs)*
two*exxd
8801 wxyd = tauyzs*tempd1
8802 wxzd = tauzzs*tempd1
8803 tauzzsd = tauzzsd + wxz*tempd1
8804 wzxd = wzxd + tauxxs*tempd1
8805 wzyd = wzyd + tauxys*tempd1
8806 tauxysd = tauxysd + wzy*tempd1
8808 wxyd = wxyd + tauyys*tempd1
8809 tauyysd = tauyysd + wxy*tempd1
8810 wxzd = wxzd + tauyzs*tempd1
8811 tauyzsd = tauyzsd + wxz*tempd1
8812 wyxd = wyxd + tauxxs*tempd1
8813 tauxxsd = tauxxsd + wyx*tempd1
8814 wyzd = wyzd + tauxzs*tempd1
8815 tauxzsd = tauxzsd + wyz*tempd1
8816 tempd1 = fact*
two*ezzd
8817 wzxd = wzxd + tauxzs*tempd1
8818 tauxzsd = tauxzsd + wzx*tempd1
8819 wzyd = wzyd + tauyzs*tempd1
8820 tauyzsd = tauyzsd + wzy*tempd1
8821 tempd1 = fact*
two*eyyd
8822 wyxd = wyxd + tauxys*tempd1
8823 tauxysd = tauxysd + wyx*tempd1
8824 wyzd = wyzd + tauyzs*tempd1 - wzyd
8825 tauyzsd = tauyzsd + wyz*tempd1
8826 tempd1 = fact*
two*exxd
8827 wxyd = wxyd + tauxys*tempd1 - wyxd
8828 tauxysd = tauxysd + wxy*tempd1
8829 wxzd = wxzd + tauxzs*tempd1 - wzxd
8830 tauxzsd = tauxzsd + wxz*tempd1
8837 tempd1 = ccr1*factd/den
8838 mued = mued + tempd1
8839 dend = -(mue*tempd1/den)
8840 call popcontrol1b(branch)
8841 if (branch .eq. 0) dend = 0.0_8
8842 if (u_x**2 + u_y**2 + u_z**2 + v_x**2 + v_y**2 + v_z**2 + w_x&
8843 & **2 + w_y**2 + w_z**2 .eq. 0.0_8)
then
8846 tempd1 = dend/(2.0*sqrt(u_x**2+u_y**2+u_z**2+v_x**2+v_y**2+&
8847 & v_z**2+w_x**2+w_y**2+w_z**2))
8850 u_yd = u_yd + 2*u_y*tempd1
8851 u_zd = u_zd + 2*u_z*tempd1
8852 v_xd = v_xd + 2*v_x*tempd1
8854 v_zd = v_zd + 2*v_z*tempd1
8855 w_xd = w_xd + 2*w_x*tempd1
8856 w_yd = w_yd + 2*w_y*tempd1
8859 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
8860 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
8861 tauyzsd = mut*tauyzd
8862 tauxzsd = mut*tauxzd
8863 tauxysd = mut*tauxyd
8864 tauzzsd = mut*tauzzd
8865 tauyysd = mut*tauyyd
8866 tauxxsd = mut*tauxxd
8877 fracdivd = -tauzzsd - tauyysd - tauxxsd
8878 tempd1 = twothird*fracdivd
8882 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
8883 q_zd = heatcoef*q_zd
8884 q_yd = heatcoef*q_yd
8885 q_xd = heatcoef*q_xd
8886 v_zd = v_zd + tauyzsd
8887 w_yd = w_yd + tauyzsd
8888 u_zd = u_zd + tauxzsd
8889 w_xd = w_xd + tauxzsd
8890 u_yd = u_yd + tauxysd
8891 v_xd = v_xd + tauxysd
8892 w_zd = w_zd +
two*tauzzsd + tempd1
8893 v_yd = v_yd +
two*tauyysd + tempd1
8894 u_xd = u_xd +
two*tauxxsd + tempd1
8896 corrd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
8897 sszd = q_z*corrd - corr*q_zd
8899 ssyd = q_y*corrd - corr*q_yd
8901 ssxd = q_x*corrd - corr*q_xd
8903 q_xd = q_xd + ssx*corrd
8904 q_yd = q_yd + ssy*corrd
8905 q_zd = q_zd + ssz*corrd
8906 aad(i+1, j, k) =
aad(i+1, j, k) + ss*corrd
8907 aad(i, j, k) =
aad(i, j, k) - ss*corrd
8908 ssd = (
aa(i+1, j, k)-
aa(i, j, k))*corrd
8910 corrd = -(ssz*w_zd) - ssy*w_yd - ssx*w_xd
8911 sszd = sszd + w_z*corrd - corr*w_zd
8913 ssyd = ssyd + w_y*corrd - corr*w_yd
8915 ssxd = ssxd + w_x*corrd - corr*w_xd
8917 w_xd = w_xd + ssx*corrd
8918 w_yd = w_yd + ssy*corrd
8919 w_zd = w_zd + ssz*corrd
8920 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) - ss*corrd
8921 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + ss*corrd
8922 ssd = ssd - (
w(i+1, j, k,
ivz)-
w(i, j, k,
ivz))*corrd
8924 corrd = -(ssz*v_zd) - ssy*v_yd - ssx*v_xd
8925 sszd = sszd + v_z*corrd - corr*v_zd
8927 ssyd = ssyd + v_y*corrd - corr*v_yd
8929 ssxd = ssxd + v_x*corrd - corr*v_xd
8931 v_xd = v_xd + ssx*corrd
8932 v_yd = v_yd + ssy*corrd
8933 v_zd = v_zd + ssz*corrd
8934 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) - ss*corrd
8935 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + ss*corrd
8936 ssd = ssd - (
w(i+1, j, k,
ivy)-
w(i, j, k,
ivy))*corrd
8938 corrd = -(ssz*u_zd) - ssy*u_yd - ssx*u_xd
8939 sszd = sszd + u_z*corrd - corr*u_zd
8941 ssyd = ssyd + u_y*corrd - corr*u_yd
8943 ssxd = ssxd + u_x*corrd - corr*u_xd
8944 u_xd = u_xd + ssx*corrd
8945 u_yd = u_yd + ssy*corrd
8946 u_zd = u_zd + ssz*corrd
8947 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) - ss*corrd
8948 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + ss*corrd
8952 ssd = ssd + ssz*sszd - (
w(i+1, j, k,
ivx)-
w(i, j, k,
ivx))*corrd&
8953 & + ssy*ssyd + ssx*ssxd
8954 temp1 = ssx*ssx + ssy*ssy + ssz*ssz
8956 if (temp1 .eq. 0.0_8)
then
8959 tempd1 = -(
one*ssd/(2.0*temp0**3))
8961 sszd = ss*sszd + 2*ssz*tempd1
8962 ssyd = ss*ssyd + 2*ssy*tempd1
8963 ssxd = ss*ssxd + 2*ssx*tempd1
8965 xd(i+1, j-1, k-1, 3) =
xd(i+1, j-1, k-1, 3) + tempd1
8966 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) - tempd1
8967 xd(i+1, j-1, k, 3) =
xd(i+1, j-1, k, 3) + tempd1
8968 xd(i-1, j-1, k, 3) =
xd(i-1, j-1, k, 3) - tempd1
8969 xd(i+1, j, k-1, 3) =
xd(i+1, j, k-1, 3) + tempd1
8970 xd(i-1, j, k-1, 3) =
xd(i-1, j, k-1, 3) - tempd1
8971 xd(i+1, j, k, 3) =
xd(i+1, j, k, 3) + tempd1
8972 xd(i-1, j, k, 3) =
xd(i-1, j, k, 3) - tempd1
8974 xd(i+1, j-1, k-1, 2) =
xd(i+1, j-1, k-1, 2) + tempd1
8975 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) - tempd1
8976 xd(i+1, j-1, k, 2) =
xd(i+1, j-1, k, 2) + tempd1
8977 xd(i-1, j-1, k, 2) =
xd(i-1, j-1, k, 2) - tempd1
8978 xd(i+1, j, k-1, 2) =
xd(i+1, j, k-1, 2) + tempd1
8979 xd(i-1, j, k-1, 2) =
xd(i-1, j, k-1, 2) - tempd1
8980 xd(i+1, j, k, 2) =
xd(i+1, j, k, 2) + tempd1
8981 xd(i-1, j, k, 2) =
xd(i-1, j, k, 2) - tempd1
8983 xd(i+1, j-1, k-1, 1) =
xd(i+1, j-1, k-1, 1) + tempd1
8984 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) - tempd1
8985 xd(i+1, j-1, k, 1) =
xd(i+1, j-1, k, 1) + tempd1
8986 xd(i-1, j-1, k, 1) =
xd(i-1, j-1, k, 1) - tempd1
8987 xd(i+1, j, k-1, 1) =
xd(i+1, j, k-1, 1) + tempd1
8988 xd(i-1, j, k-1, 1) =
xd(i-1, j, k-1, 1) - tempd1
8989 xd(i+1, j, k, 1) =
xd(i+1, j, k, 1) + tempd1
8990 xd(i-1, j, k, 1) =
xd(i-1, j, k, 1) - tempd1
8992 qzd(i, j-1, k-1) =
qzd(i, j-1, k-1) + tempd1
8993 qzd(i, j, k-1) =
qzd(i, j, k-1) + tempd1
8994 qzd(i, j-1, k) =
qzd(i, j-1, k) + tempd1
8995 qzd(i, j, k) =
qzd(i, j, k) + tempd1
8997 qyd(i, j-1, k-1) =
qyd(i, j-1, k-1) + tempd1
8998 qyd(i, j, k-1) =
qyd(i, j, k-1) + tempd1
8999 qyd(i, j-1, k) =
qyd(i, j-1, k) + tempd1
9000 qyd(i, j, k) =
qyd(i, j, k) + tempd1
9002 qxd(i, j-1, k-1) =
qxd(i, j-1, k-1) + tempd1
9003 qxd(i, j, k-1) =
qxd(i, j, k-1) + tempd1
9004 qxd(i, j-1, k) =
qxd(i, j-1, k) + tempd1
9005 qxd(i, j, k) =
qxd(i, j, k) + tempd1
9007 wzd(i, j-1, k-1) =
wzd(i, j-1, k-1) + tempd1
9008 wzd(i, j, k-1) =
wzd(i, j, k-1) + tempd1
9009 wzd(i, j-1, k) =
wzd(i, j-1, k) + tempd1
9010 wzd(i, j, k) =
wzd(i, j, k) + tempd1
9012 wyd(i, j-1, k-1) =
wyd(i, j-1, k-1) + tempd1
9013 wyd(i, j, k-1) =
wyd(i, j, k-1) + tempd1
9014 wyd(i, j-1, k) =
wyd(i, j-1, k) + tempd1
9015 wyd(i, j, k) =
wyd(i, j, k) + tempd1
9017 wxd(i, j-1, k-1) =
wxd(i, j-1, k-1) + tempd1
9018 wxd(i, j, k-1) =
wxd(i, j, k-1) + tempd1
9019 wxd(i, j-1, k) =
wxd(i, j-1, k) + tempd1
9020 wxd(i, j, k) =
wxd(i, j, k) + tempd1
9022 vzd(i, j-1, k-1) =
vzd(i, j-1, k-1) + tempd1
9023 vzd(i, j, k-1) =
vzd(i, j, k-1) + tempd1
9024 vzd(i, j-1, k) =
vzd(i, j-1, k) + tempd1
9025 vzd(i, j, k) =
vzd(i, j, k) + tempd1
9027 vyd(i, j-1, k-1) =
vyd(i, j-1, k-1) + tempd1
9028 vyd(i, j, k-1) =
vyd(i, j, k-1) + tempd1
9029 vyd(i, j-1, k) =
vyd(i, j-1, k) + tempd1
9030 vyd(i, j, k) =
vyd(i, j, k) + tempd1
9032 vxd(i, j-1, k-1) =
vxd(i, j-1, k-1) + tempd1
9033 vxd(i, j, k-1) =
vxd(i, j, k-1) + tempd1
9034 vxd(i, j-1, k) =
vxd(i, j-1, k) + tempd1
9035 vxd(i, j, k) =
vxd(i, j, k) + tempd1
9037 uzd(i, j-1, k-1) =
uzd(i, j-1, k-1) + tempd1
9038 uzd(i, j, k-1) =
uzd(i, j, k-1) + tempd1
9039 uzd(i, j-1, k) =
uzd(i, j-1, k) + tempd1
9040 uzd(i, j, k) =
uzd(i, j, k) + tempd1
9042 uyd(i, j-1, k-1) =
uyd(i, j-1, k-1) + tempd1
9043 uyd(i, j, k-1) =
uyd(i, j, k-1) + tempd1
9044 uyd(i, j-1, k) =
uyd(i, j-1, k) + tempd1
9045 uyd(i, j, k) =
uyd(i, j, k) + tempd1
9047 uxd(i, j-1, k-1) =
uxd(i, j-1, k-1) + tempd1
9048 uxd(i, j, k-1) =
uxd(i, j, k-1) + tempd1
9049 uxd(i, j-1, k) =
uxd(i, j-1, k) + tempd1
9050 uxd(i, j, k) =
uxd(i, j, k) + tempd1
9051 muld = factlamheat*heatcoefd + mutd
9052 mued = mued + factturbheat*heatcoefd + mutd
9053 call popcontrol1b(branch)
9054 if (branch .eq. 0)
then
9055 revd(i, j, k) =
revd(i, j, k) + por*mued
9056 revd(i+1, j, k) =
revd(i+1, j, k) + por*mued
9059 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
9060 rlvd(i+1, j, k) =
rlvd(i+1, j, k) + por*muld
9068 j = mod(ii/
nx,
jl) + 1
9079 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
9081 mue = por*(
rev(i, j, k)+
rev(i, j+1, k))
9082 call pushcontrol1b(0)
9084 call pushcontrol1b(1)
9090 heatcoef = mul*factlamheat + mue*factturbheat
9093 u_x =
fourth*(
ux(i-1, j, k-1)+
ux(i, j, k-1)+
ux(i-1, j, k)+
ux(i, &
9095 u_y =
fourth*(
uy(i-1, j, k-1)+
uy(i, j, k-1)+
uy(i-1, j, k)+
uy(i, &
9097 u_z =
fourth*(
uz(i-1, j, k-1)+
uz(i, j, k-1)+
uz(i-1, j, k)+
uz(i, &
9099 v_x =
fourth*(
vx(i-1, j, k-1)+
vx(i, j, k-1)+
vx(i-1, j, k)+
vx(i, &
9101 v_y =
fourth*(
vy(i-1, j, k-1)+
vy(i, j, k-1)+
vy(i-1, j, k)+
vy(i, &
9103 v_z =
fourth*(
vz(i-1, j, k-1)+
vz(i, j, k-1)+
vz(i-1, j, k)+
vz(i, &
9105 w_x =
fourth*(
wx(i-1, j, k-1)+
wx(i, j, k-1)+
wx(i-1, j, k)+
wx(i, &
9107 w_y =
fourth*(
wy(i-1, j, k-1)+
wy(i, j, k-1)+
wy(i-1, j, k)+
wy(i, &
9109 w_z =
fourth*(
wz(i-1, j, k-1)+
wz(i, j, k-1)+
wz(i-1, j, k)+
wz(i, &
9111 q_x =
fourth*(
qx(i-1, j, k-1)+
qx(i, j, k-1)+
qx(i-1, j, k)+
qx(i, &
9113 q_y =
fourth*(
qy(i-1, j, k-1)+
qy(i, j, k-1)+
qy(i-1, j, k)+
qy(i, &
9115 q_z =
fourth*(
qz(i-1, j, k-1)+
qz(i, j, k-1)+
qz(i-1, j, k)+
qz(i, &
9121 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j+1&
9122 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1, 1)+&
9123 &
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
9124 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j+1&
9125 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1, 2)+&
9126 &
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
9127 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j+1&
9128 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1, 3)+&
9129 &
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
9132 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
9140 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j+1, k,
ivx)-
w(i, j, &
9143 u_x = u_x - corr*ssx
9145 u_y = u_y - corr*ssy
9147 u_z = u_z - corr*ssz
9148 call pushreal8(corr)
9149 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j+1, k,
ivy)-
w(i, j, &
9152 v_x = v_x - corr*ssx
9154 v_y = v_y - corr*ssy
9156 v_z = v_z - corr*ssz
9157 call pushreal8(corr)
9158 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j+1, k,
ivz)-
w(i, j, &
9161 w_x = w_x - corr*ssx
9163 w_y = w_y - corr*ssy
9165 w_z = w_z - corr*ssz
9166 call pushreal8(corr)
9167 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j+1, k)-
aa(i, j, k))&
9170 q_x = q_x - corr*ssx
9172 q_y = q_y - corr*ssy
9174 q_z = q_z - corr*ssz
9181 fracdiv = twothird*(u_x+v_y+w_z)
9182 tauxxs =
two*u_x - fracdiv
9183 tauyys =
two*v_y - fracdiv
9184 tauzzs =
two*w_z - fracdiv
9210 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
9211 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
9212 if (den .lt. xminn)
then
9214 call pushcontrol1b(0)
9216 call pushcontrol1b(1)
9232 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
9233 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
9234 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
9235 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
9236 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
9237 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
9239 tauxx = mut*tauxxs - exx
9240 tauyy = mut*tauyys - eyy
9241 tauzz = mut*tauzzs - ezz
9242 tauxy = mut*tauxys - exy
9243 tauxz = mut*tauxzs - exz
9244 tauyz = mut*tauyzs - eyz
9245 call pushcontrol1b(0)
9254 call pushcontrol1b(1)
9268 call pushcontrol1b(0)
9270 call pushcontrol1b(1)
9304 call popcontrol1b(branch)
9305 if (branch .eq. 0)
then
9335 tempd0 =
sj(i, j, k, 1)*frhoed
9336 tempd =
sj(i, j, k, 2)*frhoed
9337 tempd1 =
sj(i, j, k, 3)*frhoed
9338 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + (ubar*tauxz+vbar*tauyz+wbar*&
9339 & tauzz-q_z)*frhoed + tauzz*fmzd + tauyz*fmyd + tauxz*fmxd
9340 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + (ubar*tauxy+vbar*tauyy+wbar*&
9341 & tauyz-q_y)*frhoed + tauyz*fmzd + tauyy*fmyd + tauxy*fmxd
9342 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + (ubar*tauxx+vbar*tauxy+wbar*&
9343 & tauxz-q_x)*frhoed + tauxz*fmzd + tauxy*fmyd + tauxx*fmxd
9344 q_xd = q_xd -
sj(i, j, k, 1)*frhoed
9345 q_yd = q_yd -
sj(i, j, k, 2)*frhoed
9346 q_zd = q_zd -
sj(i, j, k, 3)*frhoed
9347 ubard = tauxz*tempd1 + tauxy*tempd + tauxx*tempd0
9348 tauxzd = tauxzd + ubar*tempd1 + wbar*tempd0 +
sj(i, j, k, 1)*&
9349 & fmzd +
sj(i, j, k, 3)*fmxd
9350 vbard = tauyz*tempd1 + tauyy*tempd + tauxy*tempd0
9351 tauyzd = tauyzd + vbar*tempd1 + wbar*tempd +
sj(i, j, k, 2)*fmzd&
9352 & +
sj(i, j, k, 3)*fmyd
9353 wbard = tauzz*tempd1 + tauyz*tempd + tauxz*tempd0
9354 tauzzd = tauzzd + wbar*tempd1 +
sj(i, j, k, 3)*fmzd
9355 tauxyd = tauxyd + ubar*tempd + vbar*tempd0 +
sj(i, j, k, 1)*fmyd&
9356 & +
sj(i, j, k, 2)*fmxd
9357 tauyyd = tauyyd + vbar*tempd +
sj(i, j, k, 2)*fmyd
9358 tauxxd = tauxxd + ubar*tempd0 +
sj(i, j, k, 1)*fmxd
9365 call popcontrol1b(branch)
9366 if (branch .eq. 0)
then
9370 tauxzsd = mut*tauxzd + wyx*tempd0
9371 tauxysd = mut*tauxyd + wzx*tempd0
9372 tauzzsd = mut*tauzzd + wyz*tempd0
9373 tauyysd = mut*tauyyd + wzy*tempd0
9374 wyxd = tauxzs*tempd0
9375 wyzd = tauzzs*tempd0
9376 wzxd = tauxys*tempd0
9377 wzyd = tauyys*tempd0
9379 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
9380 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
9381 tauyzsd = mut*tauyzd + wxy*tempd0
9385 tauxxsd = mut*tauxxd + wzx*tempd0
9387 factd = (wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)*eyzd + (&
9388 & wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)*exzd + (wxy*&
9389 & tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)*exyd + (wzx*tauxzs+&
9390 & wzy*tauyzs)*
two*ezzd + (wyx*tauxys+wyz*tauyzs)*
two*eyyd + (&
9391 & wxy*tauxys+wxz*tauxzs)*
two*exxd
9392 wxyd = tauyzs*tempd0
9393 wxzd = tauzzs*tempd0
9394 tauzzsd = tauzzsd + wxz*tempd0
9395 wzxd = wzxd + tauxxs*tempd0
9396 wzyd = wzyd + tauxys*tempd0
9397 tauxysd = tauxysd + wzy*tempd0
9399 wxyd = wxyd + tauyys*tempd0
9400 tauyysd = tauyysd + wxy*tempd0
9401 wxzd = wxzd + tauyzs*tempd0
9402 tauyzsd = tauyzsd + wxz*tempd0
9403 wyxd = wyxd + tauxxs*tempd0
9404 tauxxsd = tauxxsd + wyx*tempd0
9405 wyzd = wyzd + tauxzs*tempd0
9406 tauxzsd = tauxzsd + wyz*tempd0
9407 tempd0 = fact*
two*ezzd
9408 wzxd = wzxd + tauxzs*tempd0
9409 tauxzsd = tauxzsd + wzx*tempd0
9410 wzyd = wzyd + tauyzs*tempd0
9411 tauyzsd = tauyzsd + wzy*tempd0
9412 tempd0 = fact*
two*eyyd
9413 wyxd = wyxd + tauxys*tempd0
9414 tauxysd = tauxysd + wyx*tempd0
9415 wyzd = wyzd + tauyzs*tempd0 - wzyd
9416 tauyzsd = tauyzsd + wyz*tempd0
9417 tempd0 = fact*
two*exxd
9418 wxyd = wxyd + tauxys*tempd0 - wyxd
9419 tauxysd = tauxysd + wxy*tempd0
9420 wxzd = wxzd + tauxzs*tempd0 - wzxd
9421 tauxzsd = tauxzsd + wxz*tempd0
9428 tempd0 = ccr1*factd/den
9429 mued = mued + tempd0
9430 dend = -(mue*tempd0/den)
9431 call popcontrol1b(branch)
9432 if (branch .eq. 0) dend = 0.0_8
9433 if (u_x**2 + u_y**2 + u_z**2 + v_x**2 + v_y**2 + v_z**2 + w_x&
9434 & **2 + w_y**2 + w_z**2 .eq. 0.0_8)
then
9437 tempd0 = dend/(2.0*sqrt(u_x**2+u_y**2+u_z**2+v_x**2+v_y**2+&
9438 & v_z**2+w_x**2+w_y**2+w_z**2))
9441 u_yd = u_yd + 2*u_y*tempd0
9442 u_zd = u_zd + 2*u_z*tempd0
9443 v_xd = v_xd + 2*v_x*tempd0
9445 v_zd = v_zd + 2*v_z*tempd0
9446 w_xd = w_xd + 2*w_x*tempd0
9447 w_yd = w_yd + 2*w_y*tempd0
9450 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
9451 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
9452 tauyzsd = mut*tauyzd
9453 tauxzsd = mut*tauxzd
9454 tauxysd = mut*tauxyd
9455 tauzzsd = mut*tauzzd
9456 tauyysd = mut*tauyyd
9457 tauxxsd = mut*tauxxd
9468 fracdivd = -tauzzsd - tauyysd - tauxxsd
9469 tempd0 = twothird*fracdivd
9473 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
9474 q_zd = heatcoef*q_zd
9475 q_yd = heatcoef*q_yd
9476 q_xd = heatcoef*q_xd
9477 v_zd = v_zd + tauyzsd
9478 w_yd = w_yd + tauyzsd
9479 u_zd = u_zd + tauxzsd
9480 w_xd = w_xd + tauxzsd
9481 u_yd = u_yd + tauxysd
9482 v_xd = v_xd + tauxysd
9483 w_zd = w_zd +
two*tauzzsd + tempd0
9484 v_yd = v_yd +
two*tauyysd + tempd0
9485 u_xd = u_xd +
two*tauxxsd + tempd0
9487 corrd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
9488 sszd = q_z*corrd - corr*q_zd
9490 ssyd = q_y*corrd - corr*q_yd
9492 ssxd = q_x*corrd - corr*q_xd
9494 q_xd = q_xd + ssx*corrd
9495 q_yd = q_yd + ssy*corrd
9496 q_zd = q_zd + ssz*corrd
9497 aad(i, j+1, k) =
aad(i, j+1, k) + ss*corrd
9498 aad(i, j, k) =
aad(i, j, k) - ss*corrd
9499 ssd = (
aa(i, j+1, k)-
aa(i, j, k))*corrd
9501 corrd = -(ssz*w_zd) - ssy*w_yd - ssx*w_xd
9502 sszd = sszd + w_z*corrd - corr*w_zd
9504 ssyd = ssyd + w_y*corrd - corr*w_yd
9506 ssxd = ssxd + w_x*corrd - corr*w_xd
9508 w_xd = w_xd + ssx*corrd
9509 w_yd = w_yd + ssy*corrd
9510 w_zd = w_zd + ssz*corrd
9511 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) - ss*corrd
9512 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + ss*corrd
9513 ssd = ssd - (
w(i, j+1, k,
ivz)-
w(i, j, k,
ivz))*corrd
9515 corrd = -(ssz*v_zd) - ssy*v_yd - ssx*v_xd
9516 sszd = sszd + v_z*corrd - corr*v_zd
9518 ssyd = ssyd + v_y*corrd - corr*v_yd
9520 ssxd = ssxd + v_x*corrd - corr*v_xd
9522 v_xd = v_xd + ssx*corrd
9523 v_yd = v_yd + ssy*corrd
9524 v_zd = v_zd + ssz*corrd
9525 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) - ss*corrd
9526 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + ss*corrd
9527 ssd = ssd - (
w(i, j+1, k,
ivy)-
w(i, j, k,
ivy))*corrd
9529 corrd = -(ssz*u_zd) - ssy*u_yd - ssx*u_xd
9530 sszd = sszd + u_z*corrd - corr*u_zd
9532 ssyd = ssyd + u_y*corrd - corr*u_yd
9534 ssxd = ssxd + u_x*corrd - corr*u_xd
9535 u_xd = u_xd + ssx*corrd
9536 u_yd = u_yd + ssy*corrd
9537 u_zd = u_zd + ssz*corrd
9538 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) - ss*corrd
9539 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + ss*corrd
9543 ssd = ssd + ssz*sszd - (
w(i, j+1, k,
ivx)-
w(i, j, k,
ivx))*corrd&
9544 & + ssy*ssyd + ssx*ssxd
9545 temp0 = ssx*ssx + ssy*ssy + ssz*ssz
9547 if (temp0 .eq. 0.0_8)
then
9550 tempd0 = -(
one*ssd/(2.0*temp**3))
9552 sszd = ss*sszd + 2*ssz*tempd0
9553 ssyd = ss*ssyd + 2*ssy*tempd0
9554 ssxd = ss*ssxd + 2*ssx*tempd0
9556 xd(i-1, j+1, k-1, 3) =
xd(i-1, j+1, k-1, 3) + tempd0
9557 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) - tempd0
9558 xd(i-1, j+1, k, 3) =
xd(i-1, j+1, k, 3) + tempd0
9559 xd(i-1, j-1, k, 3) =
xd(i-1, j-1, k, 3) - tempd0
9560 xd(i, j+1, k-1, 3) =
xd(i, j+1, k-1, 3) + tempd0
9561 xd(i, j-1, k-1, 3) =
xd(i, j-1, k-1, 3) - tempd0
9562 xd(i, j+1, k, 3) =
xd(i, j+1, k, 3) + tempd0
9563 xd(i, j-1, k, 3) =
xd(i, j-1, k, 3) - tempd0
9565 xd(i-1, j+1, k-1, 2) =
xd(i-1, j+1, k-1, 2) + tempd0
9566 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) - tempd0
9567 xd(i-1, j+1, k, 2) =
xd(i-1, j+1, k, 2) + tempd0
9568 xd(i-1, j-1, k, 2) =
xd(i-1, j-1, k, 2) - tempd0
9569 xd(i, j+1, k-1, 2) =
xd(i, j+1, k-1, 2) + tempd0
9570 xd(i, j-1, k-1, 2) =
xd(i, j-1, k-1, 2) - tempd0
9571 xd(i, j+1, k, 2) =
xd(i, j+1, k, 2) + tempd0
9572 xd(i, j-1, k, 2) =
xd(i, j-1, k, 2) - tempd0
9574 xd(i-1, j+1, k-1, 1) =
xd(i-1, j+1, k-1, 1) + tempd0
9575 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) - tempd0
9576 xd(i-1, j+1, k, 1) =
xd(i-1, j+1, k, 1) + tempd0
9577 xd(i-1, j-1, k, 1) =
xd(i-1, j-1, k, 1) - tempd0
9578 xd(i, j+1, k-1, 1) =
xd(i, j+1, k-1, 1) + tempd0
9579 xd(i, j-1, k-1, 1) =
xd(i, j-1, k-1, 1) - tempd0
9580 xd(i, j+1, k, 1) =
xd(i, j+1, k, 1) + tempd0
9581 xd(i, j-1, k, 1) =
xd(i, j-1, k, 1) - tempd0
9583 qzd(i-1, j, k-1) =
qzd(i-1, j, k-1) + tempd0
9584 qzd(i, j, k-1) =
qzd(i, j, k-1) + tempd0
9585 qzd(i-1, j, k) =
qzd(i-1, j, k) + tempd0
9586 qzd(i, j, k) =
qzd(i, j, k) + tempd0
9588 qyd(i-1, j, k-1) =
qyd(i-1, j, k-1) + tempd0
9589 qyd(i, j, k-1) =
qyd(i, j, k-1) + tempd0
9590 qyd(i-1, j, k) =
qyd(i-1, j, k) + tempd0
9591 qyd(i, j, k) =
qyd(i, j, k) + tempd0
9593 qxd(i-1, j, k-1) =
qxd(i-1, j, k-1) + tempd0
9594 qxd(i, j, k-1) =
qxd(i, j, k-1) + tempd0
9595 qxd(i-1, j, k) =
qxd(i-1, j, k) + tempd0
9596 qxd(i, j, k) =
qxd(i, j, k) + tempd0
9598 wzd(i-1, j, k-1) =
wzd(i-1, j, k-1) + tempd0
9599 wzd(i, j, k-1) =
wzd(i, j, k-1) + tempd0
9600 wzd(i-1, j, k) =
wzd(i-1, j, k) + tempd0
9601 wzd(i, j, k) =
wzd(i, j, k) + tempd0
9603 wyd(i-1, j, k-1) =
wyd(i-1, j, k-1) + tempd0
9604 wyd(i, j, k-1) =
wyd(i, j, k-1) + tempd0
9605 wyd(i-1, j, k) =
wyd(i-1, j, k) + tempd0
9606 wyd(i, j, k) =
wyd(i, j, k) + tempd0
9608 wxd(i-1, j, k-1) =
wxd(i-1, j, k-1) + tempd0
9609 wxd(i, j, k-1) =
wxd(i, j, k-1) + tempd0
9610 wxd(i-1, j, k) =
wxd(i-1, j, k) + tempd0
9611 wxd(i, j, k) =
wxd(i, j, k) + tempd0
9613 vzd(i-1, j, k-1) =
vzd(i-1, j, k-1) + tempd0
9614 vzd(i, j, k-1) =
vzd(i, j, k-1) + tempd0
9615 vzd(i-1, j, k) =
vzd(i-1, j, k) + tempd0
9616 vzd(i, j, k) =
vzd(i, j, k) + tempd0
9618 vyd(i-1, j, k-1) =
vyd(i-1, j, k-1) + tempd0
9619 vyd(i, j, k-1) =
vyd(i, j, k-1) + tempd0
9620 vyd(i-1, j, k) =
vyd(i-1, j, k) + tempd0
9621 vyd(i, j, k) =
vyd(i, j, k) + tempd0
9623 vxd(i-1, j, k-1) =
vxd(i-1, j, k-1) + tempd0
9624 vxd(i, j, k-1) =
vxd(i, j, k-1) + tempd0
9625 vxd(i-1, j, k) =
vxd(i-1, j, k) + tempd0
9626 vxd(i, j, k) =
vxd(i, j, k) + tempd0
9628 uzd(i-1, j, k-1) =
uzd(i-1, j, k-1) + tempd0
9629 uzd(i, j, k-1) =
uzd(i, j, k-1) + tempd0
9630 uzd(i-1, j, k) =
uzd(i-1, j, k) + tempd0
9631 uzd(i, j, k) =
uzd(i, j, k) + tempd0
9633 uyd(i-1, j, k-1) =
uyd(i-1, j, k-1) + tempd0
9634 uyd(i, j, k-1) =
uyd(i, j, k-1) + tempd0
9635 uyd(i-1, j, k) =
uyd(i-1, j, k) + tempd0
9636 uyd(i, j, k) =
uyd(i, j, k) + tempd0
9638 uxd(i-1, j, k-1) =
uxd(i-1, j, k-1) + tempd0
9639 uxd(i, j, k-1) =
uxd(i, j, k-1) + tempd0
9640 uxd(i-1, j, k) =
uxd(i-1, j, k) + tempd0
9641 uxd(i, j, k) =
uxd(i, j, k) + tempd0
9642 muld = factlamheat*heatcoefd + mutd
9643 mued = mued + factturbheat*heatcoefd + mutd
9644 call popcontrol1b(branch)
9645 if (branch .eq. 0)
then
9646 revd(i, j, k) =
revd(i, j, k) + por*mued
9647 revd(i, j+1, k) =
revd(i, j+1, k) + por*mued
9650 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
9651 rlvd(i, j+1, k) =
rlvd(i, j+1, k) + por*muld
9662 j = mod(ii/
nx,
ny) + 2
9673 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
9675 mue = por*(
rev(i, j, k)+
rev(i, j, k+1))
9676 call pushcontrol1b(0)
9678 call pushcontrol1b(1)
9684 heatcoef = mul*factlamheat + mue*factturbheat
9687 u_x =
fourth*(
ux(i-1, j-1, k)+
ux(i, j-1, k)+
ux(i-1, j, k)+
ux(i, &
9689 u_y =
fourth*(
uy(i-1, j-1, k)+
uy(i, j-1, k)+
uy(i-1, j, k)+
uy(i, &
9691 u_z =
fourth*(
uz(i-1, j-1, k)+
uz(i, j-1, k)+
uz(i-1, j, k)+
uz(i, &
9693 v_x =
fourth*(
vx(i-1, j-1, k)+
vx(i, j-1, k)+
vx(i-1, j, k)+
vx(i, &
9695 v_y =
fourth*(
vy(i-1, j-1, k)+
vy(i, j-1, k)+
vy(i-1, j, k)+
vy(i, &
9697 v_z =
fourth*(
vz(i-1, j-1, k)+
vz(i, j-1, k)+
vz(i-1, j, k)+
vz(i, &
9699 w_x =
fourth*(
wx(i-1, j-1, k)+
wx(i, j-1, k)+
wx(i-1, j, k)+
wx(i, &
9701 w_y =
fourth*(
wy(i-1, j-1, k)+
wy(i, j-1, k)+
wy(i-1, j, k)+
wy(i, &
9703 w_z =
fourth*(
wz(i-1, j-1, k)+
wz(i, j-1, k)+
wz(i-1, j, k)+
wz(i, &
9705 q_x =
fourth*(
qx(i-1, j-1, k)+
qx(i, j-1, k)+
qx(i-1, j, k)+
qx(i, &
9707 q_y =
fourth*(
qy(i-1, j-1, k)+
qy(i, j-1, k)+
qy(i-1, j, k)+
qy(i, &
9709 q_z =
fourth*(
qz(i-1, j-1, k)+
qz(i, j-1, k)+
qz(i-1, j, k)+
qz(i, &
9715 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j, &
9716 & k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1, 1)+&
9717 &
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
9718 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j, &
9719 & k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1, 2)+&
9720 &
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
9721 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j, &
9722 & k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1, 3)+&
9723 &
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
9726 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
9734 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j, k+1,
ivx)-
w(i, j, &
9737 u_x = u_x - corr*ssx
9739 u_y = u_y - corr*ssy
9741 u_z = u_z - corr*ssz
9742 call pushreal8(corr)
9743 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j, k+1,
ivy)-
w(i, j, &
9746 v_x = v_x - corr*ssx
9748 v_y = v_y - corr*ssy
9750 v_z = v_z - corr*ssz
9751 call pushreal8(corr)
9752 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j, k+1,
ivz)-
w(i, j, &
9755 w_x = w_x - corr*ssx
9757 w_y = w_y - corr*ssy
9759 w_z = w_z - corr*ssz
9760 call pushreal8(corr)
9761 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j, k+1)-
aa(i, j, k))&
9764 q_x = q_x - corr*ssx
9766 q_y = q_y - corr*ssy
9768 q_z = q_z - corr*ssz
9775 fracdiv = twothird*(u_x+v_y+w_z)
9776 tauxxs =
two*u_x - fracdiv
9777 tauyys =
two*v_y - fracdiv
9778 tauzzs =
two*w_z - fracdiv
9804 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
9805 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
9806 if (den .lt. xminn)
then
9808 call pushcontrol1b(0)
9810 call pushcontrol1b(1)
9826 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
9827 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
9828 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
9829 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
9830 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
9831 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
9833 tauxx = mut*tauxxs - exx
9834 tauyy = mut*tauyys - eyy
9835 tauzz = mut*tauzzs - ezz
9836 tauxy = mut*tauxys - exy
9837 tauxz = mut*tauxzs - exz
9838 tauyz = mut*tauyzs - eyz
9839 call pushcontrol1b(0)
9848 call pushcontrol1b(1)
9862 call pushcontrol1b(0)
9864 call pushcontrol1b(1)
9898 call popcontrol1b(branch)
9899 if (branch .eq. 0)
then
9929 q_xd = q_xd -
sk(i, j, k, 1)*frhoed
9930 q_yd = q_yd -
sk(i, j, k, 2)*frhoed
9931 q_zd = q_zd -
sk(i, j, k, 3)*frhoed
9932 skd(i, j, k, 3) =
skd(i, j, k, 3) + (ubar*tauxz+vbar*tauyz+wbar*&
9934 skd(i, j, k, 2) =
skd(i, j, k, 2) + (ubar*tauxy+vbar*tauyy+wbar*&
9936 skd(i, j, k, 1) =
skd(i, j, k, 1) + (ubar*tauxx+vbar*tauxy+wbar*&
9938 tempd0 =
sk(i, j, k, 3)*frhoed
9939 ubard = tauxz*tempd0
9940 tauxzd = tauxzd + ubar*tempd0
9941 vbard = tauyz*tempd0
9942 tauyzd = tauyzd + vbar*tempd0
9943 wbard = tauzz*tempd0
9944 tauzzd = tauzzd + wbar*tempd0 +
sk(i, j, k, 3)*fmzd
9945 tempd0 =
sk(i, j, k, 2)*frhoed
9946 ubard = ubard + tauxy*tempd0
9947 tauxyd = tauxyd + ubar*tempd0
9948 vbard = vbard + tauyy*tempd0
9949 tauyyd = tauyyd + vbar*tempd0 +
sk(i, j, k, 2)*fmyd
9950 wbard = wbard + tauyz*tempd0
9951 tauyzd = tauyzd + wbar*tempd0 +
sk(i, j, k, 2)*fmzd +
sk(i, j, k&
9953 tempd0 =
sk(i, j, k, 1)*frhoed
9954 ubard = ubard + tauxx*tempd0
9955 tauxxd = tauxxd + ubar*tempd0 +
sk(i, j, k, 1)*fmxd
9956 vbard = vbard + tauxy*tempd0
9957 tauxyd = tauxyd + vbar*tempd0 +
sk(i, j, k, 1)*fmyd +
sk(i, j, k&
9959 wbard = wbard + tauxz*tempd0
9960 tauxzd = tauxzd + wbar*tempd0 +
sk(i, j, k, 1)*fmzd +
sk(i, j, k&
9962 skd(i, j, k, 3) =
skd(i, j, k, 3) + tauzz*fmzd + tauyz*fmyd + &
9964 skd(i, j, k, 2) =
skd(i, j, k, 2) + tauyz*fmzd + tauyy*fmyd + &
9966 skd(i, j, k, 1) =
skd(i, j, k, 1) + tauxz*fmzd + tauxy*fmyd + &
9974 call popcontrol1b(branch)
9975 if (branch .eq. 0)
then
9979 tauxzsd = mut*tauxzd + wyx*tempd0
9980 tauxysd = mut*tauxyd + wzx*tempd0
9981 tauzzsd = mut*tauzzd + wyz*tempd0
9982 tauyysd = mut*tauyyd + wzy*tempd0
9983 wyxd = tauxzs*tempd0
9984 wyzd = tauzzs*tempd0
9985 wzxd = tauxys*tempd0
9986 wzyd = tauyys*tempd0
9988 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
9989 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
9990 tauyzsd = mut*tauyzd + wxy*tempd0
9994 tauxxsd = mut*tauxxd + wzx*tempd0
9996 factd = (wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)*eyzd + (&
9997 & wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)*exzd + (wxy*&
9998 & tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)*exyd + (wzx*tauxzs+&
9999 & wzy*tauyzs)*
two*ezzd + (wyx*tauxys+wyz*tauyzs)*
two*eyyd + (&
10000 & wxy*tauxys+wxz*tauxzs)*
two*exxd
10001 wxyd = tauyzs*tempd0
10002 wxzd = tauzzs*tempd0
10003 tauzzsd = tauzzsd + wxz*tempd0
10004 wzxd = wzxd + tauxxs*tempd0
10005 wzyd = wzyd + tauxys*tempd0
10006 tauxysd = tauxysd + wzy*tempd0
10008 wxyd = wxyd + tauyys*tempd0
10009 tauyysd = tauyysd + wxy*tempd0
10010 wxzd = wxzd + tauyzs*tempd0
10011 tauyzsd = tauyzsd + wxz*tempd0
10012 wyxd = wyxd + tauxxs*tempd0
10013 tauxxsd = tauxxsd + wyx*tempd0
10014 wyzd = wyzd + tauxzs*tempd0
10015 tauxzsd = tauxzsd + wyz*tempd0
10016 tempd0 = fact*
two*ezzd
10017 wzxd = wzxd + tauxzs*tempd0
10018 tauxzsd = tauxzsd + wzx*tempd0
10019 wzyd = wzyd + tauyzs*tempd0
10020 tauyzsd = tauyzsd + wzy*tempd0
10021 tempd0 = fact*
two*eyyd
10022 wyxd = wyxd + tauxys*tempd0
10023 tauxysd = tauxysd + wyx*tempd0
10024 wyzd = wyzd + tauyzs*tempd0 - wzyd
10025 tauyzsd = tauyzsd + wyz*tempd0
10026 tempd0 = fact*
two*exxd
10027 wxyd = wxyd + tauxys*tempd0 - wyxd
10028 tauxysd = tauxysd + wxy*tempd0
10029 wxzd = wxzd + tauxzs*tempd0 - wzxd
10030 tauxzsd = tauxzsd + wxz*tempd0
10037 tempd0 = ccr1*factd/den
10038 mued = mued + tempd0
10039 dend = -(mue*tempd0/den)
10040 call popcontrol1b(branch)
10041 if (branch .eq. 0) dend = 0.0_8
10042 if (u_x**2 + u_y**2 + u_z**2 + v_x**2 + v_y**2 + v_z**2 + w_x&
10043 & **2 + w_y**2 + w_z**2 .eq. 0.0_8)
then
10046 tempd0 = dend/(2.0*sqrt(u_x**2+u_y**2+u_z**2+v_x**2+v_y**2+&
10047 & v_z**2+w_x**2+w_y**2+w_z**2))
10049 u_xd = 2*u_x*tempd0
10050 u_yd = u_yd + 2*u_y*tempd0
10051 u_zd = u_zd + 2*u_z*tempd0
10052 v_xd = v_xd + 2*v_x*tempd0
10053 v_yd = 2*v_y*tempd0
10054 v_zd = v_zd + 2*v_z*tempd0
10055 w_xd = w_xd + 2*w_x*tempd0
10056 w_yd = w_yd + 2*w_y*tempd0
10057 w_zd = 2*w_z*tempd0
10059 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
10060 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
10061 tauyzsd = mut*tauyzd
10062 tauxzsd = mut*tauxzd
10063 tauxysd = mut*tauxyd
10064 tauzzsd = mut*tauzzd
10065 tauyysd = mut*tauyyd
10066 tauxxsd = mut*tauxxd
10077 fracdivd = -tauzzsd - tauyysd - tauxxsd
10078 tempd0 = twothird*fracdivd
10082 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
10083 q_zd = heatcoef*q_zd
10084 q_yd = heatcoef*q_yd
10085 q_xd = heatcoef*q_xd
10086 v_zd = v_zd + tauyzsd
10087 w_yd = w_yd + tauyzsd
10088 u_zd = u_zd + tauxzsd
10089 w_xd = w_xd + tauxzsd
10090 u_yd = u_yd + tauxysd
10091 v_xd = v_xd + tauxysd
10092 w_zd = w_zd +
two*tauzzsd + tempd0
10093 v_yd = v_yd +
two*tauyysd + tempd0
10094 u_xd = u_xd +
two*tauxxsd + tempd0
10096 corrd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
10097 sszd = q_z*corrd - corr*q_zd
10099 ssyd = q_y*corrd - corr*q_yd
10101 ssxd = q_x*corrd - corr*q_xd
10102 call popreal8(corr)
10103 q_xd = q_xd + ssx*corrd
10104 q_yd = q_yd + ssy*corrd
10105 q_zd = q_zd + ssz*corrd
10106 aad(i, j, k+1) =
aad(i, j, k+1) + ss*corrd
10107 aad(i, j, k) =
aad(i, j, k) - ss*corrd
10108 ssd = (
aa(i, j, k+1)-
aa(i, j, k))*corrd
10110 corrd = -(ssz*w_zd) - ssy*w_yd - ssx*w_xd
10111 sszd = sszd + w_z*corrd - corr*w_zd
10113 ssyd = ssyd + w_y*corrd - corr*w_yd
10115 ssxd = ssxd + w_x*corrd - corr*w_xd
10116 call popreal8(corr)
10117 w_xd = w_xd + ssx*corrd
10118 w_yd = w_yd + ssy*corrd
10119 w_zd = w_zd + ssz*corrd
10120 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) - ss*corrd
10121 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + ss*corrd
10122 ssd = ssd - (
w(i, j, k+1,
ivz)-
w(i, j, k,
ivz))*corrd
10124 corrd = -(ssz*v_zd) - ssy*v_yd - ssx*v_xd
10125 sszd = sszd + v_z*corrd - corr*v_zd
10127 ssyd = ssyd + v_y*corrd - corr*v_yd
10129 ssxd = ssxd + v_x*corrd - corr*v_xd
10130 call popreal8(corr)
10131 v_xd = v_xd + ssx*corrd
10132 v_yd = v_yd + ssy*corrd
10133 v_zd = v_zd + ssz*corrd
10134 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) - ss*corrd
10135 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + ss*corrd
10136 ssd = ssd - (
w(i, j, k+1,
ivy)-
w(i, j, k,
ivy))*corrd
10138 corrd = -(ssz*u_zd) - ssy*u_yd - ssx*u_xd
10139 sszd = sszd + u_z*corrd - corr*u_zd
10141 ssyd = ssyd + u_y*corrd - corr*u_yd
10143 ssxd = ssxd + u_x*corrd - corr*u_xd
10144 u_xd = u_xd + ssx*corrd
10145 u_yd = u_yd + ssy*corrd
10146 u_zd = u_zd + ssz*corrd
10147 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) - ss*corrd
10148 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + ss*corrd
10152 ssd = ssd + ssz*sszd - (
w(i, j, k+1,
ivx)-
w(i, j, k,
ivx))*corrd&
10153 & + ssy*ssyd + ssx*ssxd
10154 temp = ssx*ssx + ssy*ssy + ssz*ssz
10156 if (temp .eq. 0.0_8)
then
10159 tempd = -(
one*ssd/(2.0*temp0**3))
10161 sszd = ss*sszd + 2*ssz*tempd
10162 ssyd = ss*ssyd + 2*ssy*tempd
10163 ssxd = ss*ssxd + 2*ssx*tempd
10165 xd(i-1, j-1, k+1, 3) =
xd(i-1, j-1, k+1, 3) + tempd
10166 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) - tempd
10167 xd(i-1, j, k+1, 3) =
xd(i-1, j, k+1, 3) + tempd
10168 xd(i-1, j, k-1, 3) =
xd(i-1, j, k-1, 3) - tempd
10169 xd(i, j-1, k+1, 3) =
xd(i, j-1, k+1, 3) + tempd
10170 xd(i, j-1, k-1, 3) =
xd(i, j-1, k-1, 3) - tempd
10171 xd(i, j, k+1, 3) =
xd(i, j, k+1, 3) + tempd
10172 xd(i, j, k-1, 3) =
xd(i, j, k-1, 3) - tempd
10174 xd(i-1, j-1, k+1, 2) =
xd(i-1, j-1, k+1, 2) + tempd
10175 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) - tempd
10176 xd(i-1, j, k+1, 2) =
xd(i-1, j, k+1, 2) + tempd
10177 xd(i-1, j, k-1, 2) =
xd(i-1, j, k-1, 2) - tempd
10178 xd(i, j-1, k+1, 2) =
xd(i, j-1, k+1, 2) + tempd
10179 xd(i, j-1, k-1, 2) =
xd(i, j-1, k-1, 2) - tempd
10180 xd(i, j, k+1, 2) =
xd(i, j, k+1, 2) + tempd
10181 xd(i, j, k-1, 2) =
xd(i, j, k-1, 2) - tempd
10183 xd(i-1, j-1, k+1, 1) =
xd(i-1, j-1, k+1, 1) + tempd
10184 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) - tempd
10185 xd(i-1, j, k+1, 1) =
xd(i-1, j, k+1, 1) + tempd
10186 xd(i-1, j, k-1, 1) =
xd(i-1, j, k-1, 1) - tempd
10187 xd(i, j-1, k+1, 1) =
xd(i, j-1, k+1, 1) + tempd
10188 xd(i, j-1, k-1, 1) =
xd(i, j-1, k-1, 1) - tempd
10189 xd(i, j, k+1, 1) =
xd(i, j, k+1, 1) + tempd
10190 xd(i, j, k-1, 1) =
xd(i, j, k-1, 1) - tempd
10192 qzd(i-1, j-1, k) =
qzd(i-1, j-1, k) + tempd
10193 qzd(i, j-1, k) =
qzd(i, j-1, k) + tempd
10194 qzd(i-1, j, k) =
qzd(i-1, j, k) + tempd
10195 qzd(i, j, k) =
qzd(i, j, k) + tempd
10197 qyd(i-1, j-1, k) =
qyd(i-1, j-1, k) + tempd
10198 qyd(i, j-1, k) =
qyd(i, j-1, k) + tempd
10199 qyd(i-1, j, k) =
qyd(i-1, j, k) + tempd
10200 qyd(i, j, k) =
qyd(i, j, k) + tempd
10202 qxd(i-1, j-1, k) =
qxd(i-1, j-1, k) + tempd
10203 qxd(i, j-1, k) =
qxd(i, j-1, k) + tempd
10204 qxd(i-1, j, k) =
qxd(i-1, j, k) + tempd
10205 qxd(i, j, k) =
qxd(i, j, k) + tempd
10207 wzd(i-1, j-1, k) =
wzd(i-1, j-1, k) + tempd
10208 wzd(i, j-1, k) =
wzd(i, j-1, k) + tempd
10209 wzd(i-1, j, k) =
wzd(i-1, j, k) + tempd
10210 wzd(i, j, k) =
wzd(i, j, k) + tempd
10212 wyd(i-1, j-1, k) =
wyd(i-1, j-1, k) + tempd
10213 wyd(i, j-1, k) =
wyd(i, j-1, k) + tempd
10214 wyd(i-1, j, k) =
wyd(i-1, j, k) + tempd
10215 wyd(i, j, k) =
wyd(i, j, k) + tempd
10217 wxd(i-1, j-1, k) =
wxd(i-1, j-1, k) + tempd
10218 wxd(i, j-1, k) =
wxd(i, j-1, k) + tempd
10219 wxd(i-1, j, k) =
wxd(i-1, j, k) + tempd
10220 wxd(i, j, k) =
wxd(i, j, k) + tempd
10222 vzd(i-1, j-1, k) =
vzd(i-1, j-1, k) + tempd
10223 vzd(i, j-1, k) =
vzd(i, j-1, k) + tempd
10224 vzd(i-1, j, k) =
vzd(i-1, j, k) + tempd
10225 vzd(i, j, k) =
vzd(i, j, k) + tempd
10227 vyd(i-1, j-1, k) =
vyd(i-1, j-1, k) + tempd
10228 vyd(i, j-1, k) =
vyd(i, j-1, k) + tempd
10229 vyd(i-1, j, k) =
vyd(i-1, j, k) + tempd
10230 vyd(i, j, k) =
vyd(i, j, k) + tempd
10232 vxd(i-1, j-1, k) =
vxd(i-1, j-1, k) + tempd
10233 vxd(i, j-1, k) =
vxd(i, j-1, k) + tempd
10234 vxd(i-1, j, k) =
vxd(i-1, j, k) + tempd
10235 vxd(i, j, k) =
vxd(i, j, k) + tempd
10237 uzd(i-1, j-1, k) =
uzd(i-1, j-1, k) + tempd
10238 uzd(i, j-1, k) =
uzd(i, j-1, k) + tempd
10239 uzd(i-1, j, k) =
uzd(i-1, j, k) + tempd
10240 uzd(i, j, k) =
uzd(i, j, k) + tempd
10242 uyd(i-1, j-1, k) =
uyd(i-1, j-1, k) + tempd
10243 uyd(i, j-1, k) =
uyd(i, j-1, k) + tempd
10244 uyd(i-1, j, k) =
uyd(i-1, j, k) + tempd
10245 uyd(i, j, k) =
uyd(i, j, k) + tempd
10247 uxd(i-1, j-1, k) =
uxd(i-1, j-1, k) + tempd
10248 uxd(i, j-1, k) =
uxd(i, j-1, k) + tempd
10249 uxd(i-1, j, k) =
uxd(i-1, j, k) + tempd
10250 uxd(i, j, k) =
uxd(i, j, k) + tempd
10251 muld = factlamheat*heatcoefd + mutd
10252 mued = mued + factturbheat*heatcoefd + mutd
10253 call popcontrol1b(branch)
10254 if (branch .eq. 0)
then
10255 revd(i, j, k) =
revd(i, j, k) + por*mued
10256 revd(i, j, k+1) =
revd(i, j, k+1) + por*mued
10259 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
10260 rlvd(i, j, k+1) =
rlvd(i, j, k+1) + por*muld
10262 call popcontrol1b(branch)
10282 real(kind=realtype),
parameter :: twothird=
two*
third
10283 real(kind=realtype),
parameter :: xminn=1.e-14_realtype
10287 integer(kind=inttype) :: i, j, k, ii
10288 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
10289 real(kind=realtype) :: gm1, factlamheat, factturbheat
10290 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
10291 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
10292 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
10293 real(kind=realtype) :: tauxx, tauyy, tauzz
10294 real(kind=realtype) :: tauxy, tauxz, tauyz
10295 real(kind=realtype) :: tauxxs, tauyys, tauzzs
10296 real(kind=realtype) :: tauxys, tauxzs, tauyzs
10297 real(kind=realtype) :: exx, eyy, ezz
10298 real(kind=realtype) :: exy, exz, eyz
10299 real(kind=realtype) :: wxy, wxz, wyz, wyx, wzx, wzy
10300 real(kind=realtype) :: den, ccr1, fact
10301 real(kind=realtype) :: fmx, fmy, fmz, frhoe
10302 logical :: correctfork, storewalltensor
10307 real(kind=realtype) :: abs0
10309 ccr1 = 0.3_realtype
10314 if (rfilv .ge. 0.)
then
10324 storewalltensor = .false.
10326 storewalltensor = .true.
10328 storewalltensor = .true.
10337 i = mod(ii,
nx) + 2
10338 j = mod(ii/
nx,
ny) + 2
10349 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
10355 heatcoef = mul*factlamheat + mue*factturbheat
10358 u_x =
fourth*(
ux(i-1, j-1, k)+
ux(i, j-1, k)+
ux(i-1, j, k)+
ux(i, &
10360 u_y =
fourth*(
uy(i-1, j-1, k)+
uy(i, j-1, k)+
uy(i-1, j, k)+
uy(i, &
10362 u_z =
fourth*(
uz(i-1, j-1, k)+
uz(i, j-1, k)+
uz(i-1, j, k)+
uz(i, &
10364 v_x =
fourth*(
vx(i-1, j-1, k)+
vx(i, j-1, k)+
vx(i-1, j, k)+
vx(i, &
10366 v_y =
fourth*(
vy(i-1, j-1, k)+
vy(i, j-1, k)+
vy(i-1, j, k)+
vy(i, &
10368 v_z =
fourth*(
vz(i-1, j-1, k)+
vz(i, j-1, k)+
vz(i-1, j, k)+
vz(i, &
10370 w_x =
fourth*(
wx(i-1, j-1, k)+
wx(i, j-1, k)+
wx(i-1, j, k)+
wx(i, &
10372 w_y =
fourth*(
wy(i-1, j-1, k)+
wy(i, j-1, k)+
wy(i-1, j, k)+
wy(i, &
10374 w_z =
fourth*(
wz(i-1, j-1, k)+
wz(i, j-1, k)+
wz(i-1, j, k)+
wz(i, &
10376 q_x =
fourth*(
qx(i-1, j-1, k)+
qx(i, j-1, k)+
qx(i-1, j, k)+
qx(i, &
10378 q_y =
fourth*(
qy(i-1, j-1, k)+
qy(i, j-1, k)+
qy(i-1, j, k)+
qy(i, &
10380 q_z =
fourth*(
qz(i-1, j-1, k)+
qz(i, j-1, k)+
qz(i-1, j, k)+
qz(i, &
10386 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j, &
10387 & k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1, 1)+&
10388 &
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
10389 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j, &
10390 & k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1, 2)+&
10391 &
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
10392 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j, &
10393 & k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1, 3)+&
10394 &
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
10397 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
10402 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j, k+1,
ivx)-
w(i, j, &
10404 u_x = u_x - corr*ssx
10405 u_y = u_y - corr*ssy
10406 u_z = u_z - corr*ssz
10407 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j, k+1,
ivy)-
w(i, j, &
10409 v_x = v_x - corr*ssx
10410 v_y = v_y - corr*ssy
10411 v_z = v_z - corr*ssz
10412 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j, k+1,
ivz)-
w(i, j, &
10414 w_x = w_x - corr*ssx
10415 w_y = w_y - corr*ssy
10416 w_z = w_z - corr*ssz
10417 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j, k+1)-
aa(i, j, k))&
10419 q_x = q_x - corr*ssx
10420 q_y = q_y - corr*ssy
10421 q_z = q_z - corr*ssz
10428 fracdiv = twothird*(u_x+v_y+w_z)
10429 tauxxs =
two*u_x - fracdiv
10430 tauyys =
two*v_y - fracdiv
10431 tauzzs =
two*w_z - fracdiv
10454 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
10455 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
10456 if (den .lt. xminn)
then
10464 fact = mue*ccr1/den
10474 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
10475 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
10476 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
10477 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
10478 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
10479 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
10481 tauxx = mut*tauxxs - exx
10482 tauyy = mut*tauyys - eyy
10483 tauzz = mut*tauzzs - ezz
10484 tauxy = mut*tauxys - exy
10485 tauxz = mut*tauxzs - exz
10486 tauyz = mut*tauyzs - eyz
10502 fmx = tauxx*
sk(i, j, k, 1) + tauxy*
sk(i, j, k, 2) + tauxz*
sk(i, &
10504 fmy = tauxy*
sk(i, j, k, 1) + tauyy*
sk(i, j, k, 2) + tauyz*
sk(i, &
10506 fmz = tauxz*
sk(i, j, k, 1) + tauyz*
sk(i, j, k, 2) + tauzz*
sk(i, &
10508 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sk(i, j, k, 1)
10509 frhoe = frhoe + (ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sk(i, j, k, 2&
10511 frhoe = frhoe + (ubar*tauxz+vbar*tauyz+wbar*tauzz)*
sk(i, j, k, 3&
10513 frhoe = frhoe - q_x*
sk(i, j, k, 1) - q_y*
sk(i, j, k, 2) - q_z*
sk&
10520 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fmx
10521 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fmy
10522 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fmz
10564 i = mod(ii,
nx) + 2
10565 j = mod(ii/
nx,
jl) + 1
10576 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
10582 heatcoef = mul*factlamheat + mue*factturbheat
10585 u_x =
fourth*(
ux(i-1, j, k-1)+
ux(i, j, k-1)+
ux(i-1, j, k)+
ux(i, &
10587 u_y =
fourth*(
uy(i-1, j, k-1)+
uy(i, j, k-1)+
uy(i-1, j, k)+
uy(i, &
10589 u_z =
fourth*(
uz(i-1, j, k-1)+
uz(i, j, k-1)+
uz(i-1, j, k)+
uz(i, &
10591 v_x =
fourth*(
vx(i-1, j, k-1)+
vx(i, j, k-1)+
vx(i-1, j, k)+
vx(i, &
10593 v_y =
fourth*(
vy(i-1, j, k-1)+
vy(i, j, k-1)+
vy(i-1, j, k)+
vy(i, &
10595 v_z =
fourth*(
vz(i-1, j, k-1)+
vz(i, j, k-1)+
vz(i-1, j, k)+
vz(i, &
10597 w_x =
fourth*(
wx(i-1, j, k-1)+
wx(i, j, k-1)+
wx(i-1, j, k)+
wx(i, &
10599 w_y =
fourth*(
wy(i-1, j, k-1)+
wy(i, j, k-1)+
wy(i-1, j, k)+
wy(i, &
10601 w_z =
fourth*(
wz(i-1, j, k-1)+
wz(i, j, k-1)+
wz(i-1, j, k)+
wz(i, &
10603 q_x =
fourth*(
qx(i-1, j, k-1)+
qx(i, j, k-1)+
qx(i-1, j, k)+
qx(i, &
10605 q_y =
fourth*(
qy(i-1, j, k-1)+
qy(i, j, k-1)+
qy(i-1, j, k)+
qy(i, &
10607 q_z =
fourth*(
qz(i-1, j, k-1)+
qz(i, j, k-1)+
qz(i-1, j, k)+
qz(i, &
10613 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j+1&
10614 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1, 1)+&
10615 &
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
10616 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j+1&
10617 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1, 2)+&
10618 &
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
10619 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j+1&
10620 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1, 3)+&
10621 &
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
10624 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
10629 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j+1, k,
ivx)-
w(i, j, &
10631 u_x = u_x - corr*ssx
10632 u_y = u_y - corr*ssy
10633 u_z = u_z - corr*ssz
10634 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j+1, k,
ivy)-
w(i, j, &
10636 v_x = v_x - corr*ssx
10637 v_y = v_y - corr*ssy
10638 v_z = v_z - corr*ssz
10639 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j+1, k,
ivz)-
w(i, j, &
10641 w_x = w_x - corr*ssx
10642 w_y = w_y - corr*ssy
10643 w_z = w_z - corr*ssz
10644 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j+1, k)-
aa(i, j, k))&
10646 q_x = q_x - corr*ssx
10647 q_y = q_y - corr*ssy
10648 q_z = q_z - corr*ssz
10655 fracdiv = twothird*(u_x+v_y+w_z)
10656 tauxxs =
two*u_x - fracdiv
10657 tauyys =
two*v_y - fracdiv
10658 tauzzs =
two*w_z - fracdiv
10681 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
10682 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
10683 if (den .lt. xminn)
then
10691 fact = mue*ccr1/den
10701 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
10702 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
10703 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
10704 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
10705 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
10706 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
10708 tauxx = mut*tauxxs - exx
10709 tauyy = mut*tauyys - eyy
10710 tauzz = mut*tauzzs - ezz
10711 tauxy = mut*tauxys - exy
10712 tauxz = mut*tauxzs - exz
10713 tauyz = mut*tauyzs - eyz
10729 fmx = tauxx*
sj(i, j, k, 1) + tauxy*
sj(i, j, k, 2) + tauxz*
sj(i, &
10731 fmy = tauxy*
sj(i, j, k, 1) + tauyy*
sj(i, j, k, 2) + tauyz*
sj(i, &
10733 fmz = tauxz*
sj(i, j, k, 1) + tauyz*
sj(i, j, k, 2) + tauzz*
sj(i, &
10735 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sj(i, j, k, 1) + (&
10736 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sj(i, j, k, 2) + (ubar*tauxz&
10737 & +vbar*tauyz+wbar*tauzz)*
sj(i, j, k, 3) - q_x*
sj(i, j, k, 1) - &
10738 & q_y*
sj(i, j, k, 2) - q_z*
sj(i, j, k, 3)
10744 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fmx
10745 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fmy
10746 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fmz
10788 i = mod(ii,
il) + 1
10789 j = mod(ii/
il,
ny) + 2
10800 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
10806 heatcoef = mul*factlamheat + mue*factturbheat
10809 u_x =
fourth*(
ux(i, j-1, k-1)+
ux(i, j, k-1)+
ux(i, j-1, k)+
ux(i, &
10811 u_y =
fourth*(
uy(i, j-1, k-1)+
uy(i, j, k-1)+
uy(i, j-1, k)+
uy(i, &
10813 u_z =
fourth*(
uz(i, j-1, k-1)+
uz(i, j, k-1)+
uz(i, j-1, k)+
uz(i, &
10815 v_x =
fourth*(
vx(i, j-1, k-1)+
vx(i, j, k-1)+
vx(i, j-1, k)+
vx(i, &
10817 v_y =
fourth*(
vy(i, j-1, k-1)+
vy(i, j, k-1)+
vy(i, j-1, k)+
vy(i, &
10819 v_z =
fourth*(
vz(i, j-1, k-1)+
vz(i, j, k-1)+
vz(i, j-1, k)+
vz(i, &
10821 w_x =
fourth*(
wx(i, j-1, k-1)+
wx(i, j, k-1)+
wx(i, j-1, k)+
wx(i, &
10823 w_y =
fourth*(
wy(i, j-1, k-1)+
wy(i, j, k-1)+
wy(i, j-1, k)+
wy(i, &
10825 w_z =
fourth*(
wz(i, j-1, k-1)+
wz(i, j, k-1)+
wz(i, j-1, k)+
wz(i, &
10827 q_x =
fourth*(
qx(i, j-1, k-1)+
qx(i, j, k-1)+
qx(i, j-1, k)+
qx(i, &
10829 q_y =
fourth*(
qy(i, j-1, k-1)+
qy(i, j, k-1)+
qy(i, j-1, k)+
qy(i, &
10831 q_z =
fourth*(
qz(i, j-1, k-1)+
qz(i, j, k-1)+
qz(i, j-1, k)+
qz(i, &
10837 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j-1&
10838 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1, 1)+&
10839 &
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
10840 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j-1&
10841 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1, 2)+&
10842 &
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
10843 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j-1&
10844 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1, 3)+&
10845 &
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
10848 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
10853 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i+1, j, k,
ivx)-
w(i, j, &
10855 u_x = u_x - corr*ssx
10856 u_y = u_y - corr*ssy
10857 u_z = u_z - corr*ssz
10858 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i+1, j, k,
ivy)-
w(i, j, &
10860 v_x = v_x - corr*ssx
10861 v_y = v_y - corr*ssy
10862 v_z = v_z - corr*ssz
10863 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i+1, j, k,
ivz)-
w(i, j, &
10865 w_x = w_x - corr*ssx
10866 w_y = w_y - corr*ssy
10867 w_z = w_z - corr*ssz
10868 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i+1, j, k)-
aa(i, j, k))&
10870 q_x = q_x - corr*ssx
10871 q_y = q_y - corr*ssy
10872 q_z = q_z - corr*ssz
10879 fracdiv = twothird*(u_x+v_y+w_z)
10880 tauxxs =
two*u_x - fracdiv
10881 tauyys =
two*v_y - fracdiv
10882 tauzzs =
two*w_z - fracdiv
10905 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
10906 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
10907 if (den .lt. xminn)
then
10915 fact = mue*ccr1/den
10925 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
10926 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
10927 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
10928 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
10929 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
10930 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
10932 tauxx = mut*tauxxs - exx
10933 tauyy = mut*tauyys - eyy
10934 tauzz = mut*tauzzs - ezz
10935 tauxy = mut*tauxys - exy
10936 tauxz = mut*tauxzs - exz
10937 tauyz = mut*tauyzs - eyz
10953 fmx = tauxx*
si(i, j, k, 1) + tauxy*
si(i, j, k, 2) + tauxz*
si(i, &
10955 fmy = tauxy*
si(i, j, k, 1) + tauyy*
si(i, j, k, 2) + tauyz*
si(i, &
10957 fmz = tauxz*
si(i, j, k, 1) + tauyz*
si(i, j, k, 2) + tauzz*
si(i, &
10959 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
si(i, j, k, 1) + (&
10960 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
si(i, j, k, 2) + (ubar*tauxz&
10961 & +vbar*tauyz+wbar*tauzz)*
si(i, j, k, 3) - q_x*
si(i, j, k, 1) - &
10962 & q_y*
si(i, j, k, 2) - q_z*
si(i, j, k, 3)
10968 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fmx
10969 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fmy
10970 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fmz
11030 real(kind=realtype),
parameter :: twothird=
two*
third
11034 integer(kind=inttype) :: i, j, k
11035 integer(kind=inttype) :: ii, jj, kk
11036 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
11037 real(kind=realtype) :: muld, mued, mutd, heatcoefd
11038 real(kind=realtype) :: gm1, factlamheat, factturbheat
11039 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
11040 real(kind=realtype) :: u_xd, u_yd, u_zd, v_xd, v_yd, v_zd, w_xd, &
11042 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
11043 real(kind=realtype) :: q_xd, q_yd, q_zd, ubard, vbard, wbard
11044 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
11045 real(kind=realtype) :: ssxd, ssyd, sszd, ssd, fracdivd
11046 real(kind=realtype) :: tauxx, tauyy, tauzz
11047 real(kind=realtype) :: tauxxd, tauyyd, tauzzd
11048 real(kind=realtype) :: tauxy, tauxz, tauyz
11049 real(kind=realtype) :: tauxyd, tauxzd, tauyzd
11050 real(kind=realtype) :: fmx, fmy, fmz, frhoe
11051 real(kind=realtype) :: fmxd, fmyd, fmzd, frhoed
11052 real(kind=realtype) :: dd
11053 real(kind=realtype) :: ddd
11054 logical :: correctfork
11055 real(kind=realtype) :: temp
11056 real(kind=realtype) :: tempd
11057 real(kind=realtype) :: tempd0
11058 real(kind=realtype) :: temp0
11059 real(kind=realtype) :: tempd1
11068 call pushreal8(ssx)
11069 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j&
11070 & -1, k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1&
11071 & , 1)+
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
11072 call pushreal8(ssy)
11073 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j&
11074 & -1, k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1&
11075 & , 2)+
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
11076 call pushreal8(ssz)
11077 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j&
11078 & -1, k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1&
11079 & , 3)+
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
11082 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
11083 call pushreal8(ssx)
11085 call pushreal8(ssy)
11087 call pushreal8(ssz)
11090 dd =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
11091 call pushreal8(u_x)
11093 call pushreal8(u_y)
11095 call pushreal8(u_z)
11097 dd =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
11098 call pushreal8(v_x)
11100 call pushreal8(v_y)
11102 call pushreal8(v_z)
11104 dd =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
11105 call pushreal8(w_x)
11107 call pushreal8(w_y)
11109 call pushreal8(w_z)
11111 dd =
aa(i+1, j, k) -
aa(i, j, k)
11112 call pushreal8(q_x)
11114 call pushreal8(q_y)
11116 call pushreal8(q_z)
11118 call pushreal8(por)
11125 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
11127 mue = por*(
rev(i, j, k)+
rev(i+1, j, k))
11128 call pushcontrol1b(0)
11130 call pushcontrol1b(1)
11132 call pushreal8(mut)
11137 call pushreal8(heatcoef)
11138 heatcoef = mul*factlamheat + mue*factturbheat
11140 call pushreal8(fracdiv)
11141 fracdiv = twothird*(u_x+v_y+w_z)
11142 call pushreal8(q_x)
11144 call pushreal8(q_y)
11146 call pushreal8(q_z)
11160 call pushreal8(ssx)
11161 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j&
11162 & +1, k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1&
11163 & , 1)+
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
11164 call pushreal8(ssy)
11165 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j&
11166 & +1, k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1&
11167 & , 2)+
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
11168 call pushreal8(ssz)
11169 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j&
11170 & +1, k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1&
11171 & , 3)+
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
11174 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
11175 call pushreal8(ssx)
11177 call pushreal8(ssy)
11179 call pushreal8(ssz)
11182 dd =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
11183 call pushreal8(u_x)
11185 call pushreal8(u_y)
11187 call pushreal8(u_z)
11189 dd =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
11190 call pushreal8(v_x)
11192 call pushreal8(v_y)
11194 call pushreal8(v_z)
11196 dd =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
11197 call pushreal8(w_x)
11199 call pushreal8(w_y)
11201 call pushreal8(w_z)
11203 dd =
aa(i, j+1, k) -
aa(i, j, k)
11204 call pushreal8(q_x)
11206 call pushreal8(q_y)
11208 call pushreal8(q_z)
11210 call pushreal8(por)
11217 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
11219 mue = por*(
rev(i, j, k)+
rev(i, j+1, k))
11220 call pushcontrol1b(0)
11222 call pushcontrol1b(1)
11224 call pushreal8(mut)
11229 call pushreal8(heatcoef)
11230 heatcoef = mul*factlamheat + mue*factturbheat
11232 call pushreal8(fracdiv)
11233 fracdiv = twothird*(u_x+v_y+w_z)
11234 call pushreal8(q_x)
11236 call pushreal8(q_y)
11238 call pushreal8(q_z)
11252 call pushreal8(ssx)
11253 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j&
11254 & , k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1&
11255 & , 1)+
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
11256 call pushreal8(ssy)
11257 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j&
11258 & , k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1&
11259 & , 2)+
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
11260 call pushreal8(ssz)
11261 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j&
11262 & , k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1&
11263 & , 3)+
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
11266 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
11267 call pushreal8(ssx)
11269 call pushreal8(ssy)
11271 call pushreal8(ssz)
11274 dd =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
11275 call pushreal8(u_x)
11277 call pushreal8(u_y)
11279 call pushreal8(u_z)
11281 dd =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
11282 call pushreal8(v_x)
11284 call pushreal8(v_y)
11286 call pushreal8(v_z)
11288 dd =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
11289 call pushreal8(w_x)
11291 call pushreal8(w_y)
11293 call pushreal8(w_z)
11295 dd =
aa(i, j, k+1) -
aa(i, j, k)
11296 call pushreal8(q_x)
11298 call pushreal8(q_y)
11300 call pushreal8(q_z)
11302 call pushreal8(por)
11309 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
11311 mue = por*(
rev(i, j, k)+
rev(i, j, k+1))
11312 call pushcontrol1b(0)
11314 call pushcontrol1b(1)
11316 call pushreal8(mut)
11321 call pushreal8(heatcoef)
11322 heatcoef = mul*factlamheat + mue*factturbheat
11324 call pushreal8(fracdiv)
11325 fracdiv = twothird*(u_x+v_y+w_z)
11326 call pushreal8(q_x)
11328 call pushreal8(q_y)
11330 call pushreal8(q_z)
11339 if (
associated(
revd))
revd = 0.0_8
11340 if (
associated(
aad))
aad = 0.0_8
11341 if (
associated(
rlvd))
rlvd = 0.0_8
11342 if (
associated(
skd))
skd = 0.0_8
11351 tauzz = mut*(
two*w_z-fracdiv)
11354 tauxx = mut*(
two*u_x-fracdiv)
11355 tauxy = mut*(u_y+v_x)
11356 tauxz = mut*(u_z+w_x)
11358 tauyy = mut*(
two*v_y-fracdiv)
11359 tauyz = mut*(v_z+w_y)
11360 tempd1 =
sk(i, j, k, 1)*frhoed
11361 tempd0 =
sk(i, j, k, 2)*frhoed
11362 tempd =
sk(i, j, k, 3)*frhoed
11363 skd(i, j, k, 3) =
skd(i, j, k, 3) + (ubar*tauxz+vbar*tauyz+&
11364 & wbar*tauzz-q_z)*frhoed + tauzz*fmzd + tauyz*fmyd + tauxz*&
11366 skd(i, j, k, 2) =
skd(i, j, k, 2) + (ubar*tauxy+vbar*tauyy+&
11367 & wbar*tauyz-q_y)*frhoed + tauyz*fmzd + tauyy*fmyd + tauxy*&
11369 skd(i, j, k, 1) =
skd(i, j, k, 1) + (ubar*tauxx+vbar*tauxy+&
11370 & wbar*tauxz-q_x)*frhoed + tauxz*fmzd + tauxy*fmyd + tauxx*&
11372 q_xd = -(
sk(i, j, k, 1)*frhoed)
11373 q_yd = -(
sk(i, j, k, 2)*frhoed)
11374 q_zd = -(
sk(i, j, k, 3)*frhoed)
11375 ubard = tauxz*tempd + tauxy*tempd0 + tauxx*tempd1
11376 tauxzd = ubar*tempd + wbar*tempd1 +
sk(i, j, k, 1)*fmzd +
sk(i&
11378 vbard = tauyz*tempd + tauyy*tempd0 + tauxy*tempd1
11379 tauyzd = vbar*tempd + wbar*tempd0 +
sk(i, j, k, 2)*fmzd +
sk(i&
11381 wbard = tauzz*tempd + tauyz*tempd0 + tauxz*tempd1
11382 tauzzd = wbar*tempd +
sk(i, j, k, 3)*fmzd
11383 tauxyd = ubar*tempd0 + vbar*tempd1 +
sk(i, j, k, 1)*fmyd +
sk(&
11385 tauyyd = vbar*tempd0 +
sk(i, j, k, 2)*fmyd
11386 tauxxd = ubar*tempd1 +
sk(i, j, k, 1)*fmxd
11393 dd =
aa(i, j, k+1) -
aa(i, j, k)
11397 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
11398 q_zd = heatcoef*q_zd
11399 q_yd = heatcoef*q_yd
11400 q_xd = heatcoef*q_xd
11401 mutd = (v_z+w_y)*tauyzd + (u_z+w_x)*tauxzd + (u_y+v_x)*tauxyd &
11402 & + (
two*w_z-fracdiv)*tauzzd + (
two*v_y-fracdiv)*tauyyd + (
two&
11403 & *u_x-fracdiv)*tauxxd
11410 fracdivd = -(mut*tauzzd) - mut*tauyyd - mut*tauxxd
11411 call popreal8(fracdiv)
11412 tempd1 = twothird*fracdivd
11413 w_zd =
two*mut*tauzzd + tempd1
11414 v_yd =
two*mut*tauyyd + tempd1
11415 u_xd =
two*mut*tauxxd + tempd1
11419 call popreal8(heatcoef)
11420 muld = factlamheat*heatcoefd + mutd
11421 mued = mued + factturbheat*heatcoefd + mutd
11423 call popcontrol1b(branch)
11424 if (branch .eq. 0)
then
11425 revd(i, j, k) =
revd(i, j, k) + por*mued
11426 revd(i, j, k+1) =
revd(i, j, k+1) + por*mued
11429 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
11430 rlvd(i, j, k+1) =
rlvd(i, j, k+1) + por*muld
11433 ddd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
11439 aad(i, j, k+1) =
aad(i, j, k+1) + ddd
11440 aad(i, j, k) =
aad(i, j, k) - ddd
11441 dd =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
11443 ddd = ssz*w_zd + ssy*w_yd + ssx*w_xd
11444 sszd = sszd + dd*w_zd
11446 ssyd = ssyd + dd*w_yd
11448 ssxd = ssxd + dd*w_xd
11449 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) + ddd
11451 dd =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
11453 ddd = ssz*v_zd + ssy*v_yd + ssx*v_xd
11454 sszd = sszd + dd*v_zd
11456 ssyd = ssyd + dd*v_yd
11458 ssxd = ssxd + dd*v_xd
11459 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) + ddd
11461 dd =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
11463 ddd = ssz*u_zd + ssy*u_yd + ssx*u_xd
11464 sszd = sszd + dd*u_zd
11466 ssyd = ssyd + dd*u_yd
11468 ssxd = ssxd + dd*u_xd
11469 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) + ddd
11474 ssd = ssz*sszd + ssy*ssyd + ssx*ssxd
11475 temp0 = ssx*ssx + ssy*ssy + ssz*ssz
11476 tempd1 = -(
one*ssd/temp0**2)
11477 sszd = ss*sszd + 2*ssz*tempd1
11478 ssyd = ss*ssyd + 2*ssy*tempd1
11479 ssxd = ss*ssxd + 2*ssx*tempd1
11483 xd(i-1, j-1, k+1, 3) =
xd(i-1, j-1, k+1, 3) + tempd1
11484 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) - tempd1
11485 xd(i-1, j, k+1, 3) =
xd(i-1, j, k+1, 3) + tempd1
11486 xd(i-1, j, k-1, 3) =
xd(i-1, j, k-1, 3) - tempd1
11487 xd(i, j-1, k+1, 3) =
xd(i, j-1, k+1, 3) + tempd1
11488 xd(i, j-1, k-1, 3) =
xd(i, j-1, k-1, 3) - tempd1
11489 xd(i, j, k+1, 3) =
xd(i, j, k+1, 3) + tempd1
11490 xd(i, j, k-1, 3) =
xd(i, j, k-1, 3) - tempd1
11493 xd(i-1, j-1, k+1, 2) =
xd(i-1, j-1, k+1, 2) + tempd1
11494 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) - tempd1
11495 xd(i-1, j, k+1, 2) =
xd(i-1, j, k+1, 2) + tempd1
11496 xd(i-1, j, k-1, 2) =
xd(i-1, j, k-1, 2) - tempd1
11497 xd(i, j-1, k+1, 2) =
xd(i, j-1, k+1, 2) + tempd1
11498 xd(i, j-1, k-1, 2) =
xd(i, j-1, k-1, 2) - tempd1
11499 xd(i, j, k+1, 2) =
xd(i, j, k+1, 2) + tempd1
11500 xd(i, j, k-1, 2) =
xd(i, j, k-1, 2) - tempd1
11503 xd(i-1, j-1, k+1, 1) =
xd(i-1, j-1, k+1, 1) + tempd1
11504 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) - tempd1
11505 xd(i-1, j, k+1, 1) =
xd(i-1, j, k+1, 1) + tempd1
11506 xd(i-1, j, k-1, 1) =
xd(i-1, j, k-1, 1) - tempd1
11507 xd(i, j-1, k+1, 1) =
xd(i, j-1, k+1, 1) + tempd1
11508 xd(i, j-1, k-1, 1) =
xd(i, j-1, k-1, 1) - tempd1
11509 xd(i, j, k+1, 1) =
xd(i, j, k+1, 1) + tempd1
11510 xd(i, j, k-1, 1) =
xd(i, j, k-1, 1) - tempd1
11514 if (
associated(
sjd))
sjd = 0.0_8
11522 tauzz = mut*(
two*w_z-fracdiv)
11525 tauxx = mut*(
two*u_x-fracdiv)
11526 tauxy = mut*(u_y+v_x)
11527 tauxz = mut*(u_z+w_x)
11529 tauyy = mut*(
two*v_y-fracdiv)
11530 tauyz = mut*(v_z+w_y)
11531 tempd1 =
sj(i, j, k, 1)*frhoed
11532 tempd0 =
sj(i, j, k, 2)*frhoed
11533 tempd =
sj(i, j, k, 3)*frhoed
11534 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + (ubar*tauxz+vbar*tauyz+&
11535 & wbar*tauzz-q_z)*frhoed + tauzz*fmzd + tauyz*fmyd + tauxz*&
11537 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + (ubar*tauxy+vbar*tauyy+&
11538 & wbar*tauyz-q_y)*frhoed + tauyz*fmzd + tauyy*fmyd + tauxy*&
11540 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + (ubar*tauxx+vbar*tauxy+&
11541 & wbar*tauxz-q_x)*frhoed + tauxz*fmzd + tauxy*fmyd + tauxx*&
11543 q_xd = -(
sj(i, j, k, 1)*frhoed)
11544 q_yd = -(
sj(i, j, k, 2)*frhoed)
11545 q_zd = -(
sj(i, j, k, 3)*frhoed)
11546 ubard = tauxz*tempd + tauxy*tempd0 + tauxx*tempd1
11547 tauxzd = ubar*tempd + wbar*tempd1 +
sj(i, j, k, 1)*fmzd +
sj(i&
11549 vbard = tauyz*tempd + tauyy*tempd0 + tauxy*tempd1
11550 tauyzd = vbar*tempd + wbar*tempd0 +
sj(i, j, k, 2)*fmzd +
sj(i&
11552 wbard = tauzz*tempd + tauyz*tempd0 + tauxz*tempd1
11553 tauzzd = wbar*tempd +
sj(i, j, k, 3)*fmzd
11554 tauxyd = ubar*tempd0 + vbar*tempd1 +
sj(i, j, k, 1)*fmyd +
sj(&
11556 tauyyd = vbar*tempd0 +
sj(i, j, k, 2)*fmyd
11557 tauxxd = ubar*tempd1 +
sj(i, j, k, 1)*fmxd
11564 dd =
aa(i, j+1, k) -
aa(i, j, k)
11568 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
11569 q_zd = heatcoef*q_zd
11570 q_yd = heatcoef*q_yd
11571 q_xd = heatcoef*q_xd
11572 mutd = (v_z+w_y)*tauyzd + (u_z+w_x)*tauxzd + (u_y+v_x)*tauxyd &
11573 & + (
two*w_z-fracdiv)*tauzzd + (
two*v_y-fracdiv)*tauyyd + (
two&
11574 & *u_x-fracdiv)*tauxxd
11581 fracdivd = -(mut*tauzzd) - mut*tauyyd - mut*tauxxd
11582 call popreal8(fracdiv)
11583 tempd1 = twothird*fracdivd
11584 w_zd =
two*mut*tauzzd + tempd1
11585 v_yd =
two*mut*tauyyd + tempd1
11586 u_xd =
two*mut*tauxxd + tempd1
11590 call popreal8(heatcoef)
11591 muld = factlamheat*heatcoefd + mutd
11592 mued = mued + factturbheat*heatcoefd + mutd
11594 call popcontrol1b(branch)
11595 if (branch .eq. 0)
then
11596 revd(i, j, k) =
revd(i, j, k) + por*mued
11597 revd(i, j+1, k) =
revd(i, j+1, k) + por*mued
11600 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
11601 rlvd(i, j+1, k) =
rlvd(i, j+1, k) + por*muld
11604 ddd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
11610 aad(i, j+1, k) =
aad(i, j+1, k) + ddd
11611 aad(i, j, k) =
aad(i, j, k) - ddd
11612 dd =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
11614 ddd = ssz*w_zd + ssy*w_yd + ssx*w_xd
11615 sszd = sszd + dd*w_zd
11617 ssyd = ssyd + dd*w_yd
11619 ssxd = ssxd + dd*w_xd
11620 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) + ddd
11622 dd =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
11624 ddd = ssz*v_zd + ssy*v_yd + ssx*v_xd
11625 sszd = sszd + dd*v_zd
11627 ssyd = ssyd + dd*v_yd
11629 ssxd = ssxd + dd*v_xd
11630 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) + ddd
11632 dd =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
11634 ddd = ssz*u_zd + ssy*u_yd + ssx*u_xd
11635 sszd = sszd + dd*u_zd
11637 ssyd = ssyd + dd*u_yd
11639 ssxd = ssxd + dd*u_xd
11640 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) + ddd
11645 ssd = ssz*sszd + ssy*ssyd + ssx*ssxd
11646 temp0 = ssx*ssx + ssy*ssy + ssz*ssz
11647 tempd1 = -(
one*ssd/temp0**2)
11648 sszd = ss*sszd + 2*ssz*tempd1
11649 ssyd = ss*ssyd + 2*ssy*tempd1
11650 ssxd = ss*ssxd + 2*ssx*tempd1
11654 xd(i-1, j+1, k-1, 3) =
xd(i-1, j+1, k-1, 3) + tempd1
11655 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) - tempd1
11656 xd(i-1, j+1, k, 3) =
xd(i-1, j+1, k, 3) + tempd1
11657 xd(i-1, j-1, k, 3) =
xd(i-1, j-1, k, 3) - tempd1
11658 xd(i, j+1, k-1, 3) =
xd(i, j+1, k-1, 3) + tempd1
11659 xd(i, j-1, k-1, 3) =
xd(i, j-1, k-1, 3) - tempd1
11660 xd(i, j+1, k, 3) =
xd(i, j+1, k, 3) + tempd1
11661 xd(i, j-1, k, 3) =
xd(i, j-1, k, 3) - tempd1
11664 xd(i-1, j+1, k-1, 2) =
xd(i-1, j+1, k-1, 2) + tempd1
11665 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) - tempd1
11666 xd(i-1, j+1, k, 2) =
xd(i-1, j+1, k, 2) + tempd1
11667 xd(i-1, j-1, k, 2) =
xd(i-1, j-1, k, 2) - tempd1
11668 xd(i, j+1, k-1, 2) =
xd(i, j+1, k-1, 2) + tempd1
11669 xd(i, j-1, k-1, 2) =
xd(i, j-1, k-1, 2) - tempd1
11670 xd(i, j+1, k, 2) =
xd(i, j+1, k, 2) + tempd1
11671 xd(i, j-1, k, 2) =
xd(i, j-1, k, 2) - tempd1
11674 xd(i-1, j+1, k-1, 1) =
xd(i-1, j+1, k-1, 1) + tempd1
11675 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) - tempd1
11676 xd(i-1, j+1, k, 1) =
xd(i-1, j+1, k, 1) + tempd1
11677 xd(i-1, j-1, k, 1) =
xd(i-1, j-1, k, 1) - tempd1
11678 xd(i, j+1, k-1, 1) =
xd(i, j+1, k-1, 1) + tempd1
11679 xd(i, j-1, k-1, 1) =
xd(i, j-1, k-1, 1) - tempd1
11680 xd(i, j+1, k, 1) =
xd(i, j+1, k, 1) + tempd1
11681 xd(i, j-1, k, 1) =
xd(i, j-1, k, 1) - tempd1
11685 if (
associated(
sid))
sid = 0.0_8
11693 tauzz = mut*(
two*w_z-fracdiv)
11696 tauxx = mut*(
two*u_x-fracdiv)
11697 tauxy = mut*(u_y+v_x)
11698 tauxz = mut*(u_z+w_x)
11700 tauyy = mut*(
two*v_y-fracdiv)
11701 tauyz = mut*(v_z+w_y)
11702 tempd =
si(i, j, k, 1)*frhoed
11703 tempd0 =
si(i, j, k, 2)*frhoed
11704 tempd1 =
si(i, j, k, 3)*frhoed
11705 sid(i, j, k, 3) =
sid(i, j, k, 3) + (ubar*tauxz+vbar*tauyz+&
11706 & wbar*tauzz-q_z)*frhoed + tauzz*fmzd + tauyz*fmyd + tauxz*&
11708 sid(i, j, k, 2) =
sid(i, j, k, 2) + (ubar*tauxy+vbar*tauyy+&
11709 & wbar*tauyz-q_y)*frhoed + tauyz*fmzd + tauyy*fmyd + tauxy*&
11711 sid(i, j, k, 1) =
sid(i, j, k, 1) + (ubar*tauxx+vbar*tauxy+&
11712 & wbar*tauxz-q_x)*frhoed + tauxz*fmzd + tauxy*fmyd + tauxx*&
11714 q_xd = -(
si(i, j, k, 1)*frhoed)
11715 q_yd = -(
si(i, j, k, 2)*frhoed)
11716 q_zd = -(
si(i, j, k, 3)*frhoed)
11717 ubard = tauxz*tempd1 + tauxy*tempd0 + tauxx*tempd
11718 tauxzd = ubar*tempd1 + wbar*tempd +
si(i, j, k, 1)*fmzd +
si(i&
11720 vbard = tauyz*tempd1 + tauyy*tempd0 + tauxy*tempd
11721 tauyzd = vbar*tempd1 + wbar*tempd0 +
si(i, j, k, 2)*fmzd +
si(&
11723 wbard = tauzz*tempd1 + tauyz*tempd0 + tauxz*tempd
11724 tauzzd = wbar*tempd1 +
si(i, j, k, 3)*fmzd
11725 tauxyd = ubar*tempd0 + vbar*tempd +
si(i, j, k, 1)*fmyd +
si(i&
11727 tauyyd = vbar*tempd0 +
si(i, j, k, 2)*fmyd
11728 tauxxd = ubar*tempd +
si(i, j, k, 1)*fmxd
11735 dd =
aa(i+1, j, k) -
aa(i, j, k)
11739 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
11740 q_zd = heatcoef*q_zd
11741 q_yd = heatcoef*q_yd
11742 q_xd = heatcoef*q_xd
11743 mutd = (v_z+w_y)*tauyzd + (u_z+w_x)*tauxzd + (u_y+v_x)*tauxyd &
11744 & + (
two*w_z-fracdiv)*tauzzd + (
two*v_y-fracdiv)*tauyyd + (
two&
11745 & *u_x-fracdiv)*tauxxd
11752 fracdivd = -(mut*tauzzd) - mut*tauyyd - mut*tauxxd
11753 call popreal8(fracdiv)
11754 tempd = twothird*fracdivd
11755 w_zd =
two*mut*tauzzd + tempd
11756 v_yd =
two*mut*tauyyd + tempd
11757 u_xd =
two*mut*tauxxd + tempd
11761 call popreal8(heatcoef)
11762 muld = factlamheat*heatcoefd + mutd
11763 mued = mued + factturbheat*heatcoefd + mutd
11765 call popcontrol1b(branch)
11766 if (branch .eq. 0)
then
11767 revd(i, j, k) =
revd(i, j, k) + por*mued
11768 revd(i+1, j, k) =
revd(i+1, j, k) + por*mued
11771 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
11772 rlvd(i+1, j, k) =
rlvd(i+1, j, k) + por*muld
11775 ddd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
11781 aad(i+1, j, k) =
aad(i+1, j, k) + ddd
11782 aad(i, j, k) =
aad(i, j, k) - ddd
11783 dd =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
11785 ddd = ssz*w_zd + ssy*w_yd + ssx*w_xd
11786 sszd = sszd + dd*w_zd
11788 ssyd = ssyd + dd*w_yd
11790 ssxd = ssxd + dd*w_xd
11791 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) + ddd
11793 dd =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
11795 ddd = ssz*v_zd + ssy*v_yd + ssx*v_xd
11796 sszd = sszd + dd*v_zd
11798 ssyd = ssyd + dd*v_yd
11800 ssxd = ssxd + dd*v_xd
11801 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) + ddd
11803 dd =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
11805 ddd = ssz*u_zd + ssy*u_yd + ssx*u_xd
11806 sszd = sszd + dd*u_zd
11808 ssyd = ssyd + dd*u_yd
11810 ssxd = ssxd + dd*u_xd
11811 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) + ddd
11816 ssd = ssz*sszd + ssy*ssyd + ssx*ssxd
11817 temp = ssx*ssx + ssy*ssy + ssz*ssz
11818 tempd = -(
one*ssd/temp**2)
11819 sszd = ss*sszd + 2*ssz*tempd
11820 ssyd = ss*ssyd + 2*ssy*tempd
11821 ssxd = ss*ssxd + 2*ssx*tempd
11825 xd(i+1, j-1, k-1, 3) =
xd(i+1, j-1, k-1, 3) + tempd
11826 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) - tempd
11827 xd(i+1, j-1, k, 3) =
xd(i+1, j-1, k, 3) + tempd
11828 xd(i-1, j-1, k, 3) =
xd(i-1, j-1, k, 3) - tempd
11829 xd(i+1, j, k-1, 3) =
xd(i+1, j, k-1, 3) + tempd
11830 xd(i-1, j, k-1, 3) =
xd(i-1, j, k-1, 3) - tempd
11831 xd(i+1, j, k, 3) =
xd(i+1, j, k, 3) + tempd
11832 xd(i-1, j, k, 3) =
xd(i-1, j, k, 3) - tempd
11835 xd(i+1, j-1, k-1, 2) =
xd(i+1, j-1, k-1, 2) + tempd
11836 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) - tempd
11837 xd(i+1, j-1, k, 2) =
xd(i+1, j-1, k, 2) + tempd
11838 xd(i-1, j-1, k, 2) =
xd(i-1, j-1, k, 2) - tempd
11839 xd(i+1, j, k-1, 2) =
xd(i+1, j, k-1, 2) + tempd
11840 xd(i-1, j, k-1, 2) =
xd(i-1, j, k-1, 2) - tempd
11841 xd(i+1, j, k, 2) =
xd(i+1, j, k, 2) + tempd
11842 xd(i-1, j, k, 2) =
xd(i-1, j, k, 2) - tempd
11845 xd(i+1, j-1, k-1, 1) =
xd(i+1, j-1, k-1, 1) + tempd
11846 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) - tempd
11847 xd(i+1, j-1, k, 1) =
xd(i+1, j-1, k, 1) + tempd
11848 xd(i-1, j-1, k, 1) =
xd(i-1, j-1, k, 1) - tempd
11849 xd(i+1, j, k-1, 1) =
xd(i+1, j, k-1, 1) + tempd
11850 xd(i-1, j, k-1, 1) =
xd(i-1, j, k-1, 1) - tempd
11851 xd(i+1, j, k, 1) =
xd(i+1, j, k, 1) + tempd
11852 xd(i-1, j, k, 1) =
xd(i-1, j, k, 1) - tempd
11868 real(kind=realtype),
parameter :: twothird=
two*
third
11872 integer(kind=inttype) :: i, j, k
11873 integer(kind=inttype) :: ii, jj, kk
11874 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
11875 real(kind=realtype) :: gm1, factlamheat, factturbheat
11876 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
11877 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
11878 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
11879 real(kind=realtype) :: tauxx, tauyy, tauzz
11880 real(kind=realtype) :: tauxy, tauxz, tauyz
11881 real(kind=realtype) :: fmx, fmy, fmz, frhoe
11882 real(kind=realtype) :: dd
11883 logical :: correctfork
11891 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j&
11892 & -1, k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1&
11893 & , 1)+
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
11894 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j&
11895 & -1, k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1&
11896 & , 2)+
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
11897 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j&
11898 & -1, k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1&
11899 & , 3)+
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
11901 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
11906 dd =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
11910 dd =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
11914 dd =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
11918 dd =
aa(i+1, j, k) -
aa(i, j, k)
11928 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
11934 heatcoef = mul*factlamheat + mue*factturbheat
11936 fracdiv = twothird*(u_x+v_y+w_z)
11937 tauxx = mut*(
two*u_x-fracdiv)
11938 tauyy = mut*(
two*v_y-fracdiv)
11939 tauzz = mut*(
two*w_z-fracdiv)
11940 tauxy = mut*(u_y+v_x)
11941 tauxz = mut*(u_z+w_x)
11942 tauyz = mut*(v_z+w_y)
11952 fmx = tauxx*
si(i, j, k, 1) + tauxy*
si(i, j, k, 2) + tauxz*
si(i&
11954 fmy = tauxy*
si(i, j, k, 1) + tauyy*
si(i, j, k, 2) + tauyz*
si(i&
11956 fmz = tauxz*
si(i, j, k, 1) + tauyz*
si(i, j, k, 2) + tauzz*
si(i&
11958 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
si(i, j, k, 1) + (&
11959 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
si(i, j, k, 2) + (ubar*&
11960 & tauxz+vbar*tauyz+wbar*tauzz)*
si(i, j, k, 3) - q_x*
si(i, j, k&
11961 & , 1) - q_y*
si(i, j, k, 2) - q_z*
si(i, j, k, 3)
11967 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fmx
11968 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fmy
11969 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fmz
11979 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j&
11980 & +1, k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1&
11981 & , 1)+
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
11982 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j&
11983 & +1, k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1&
11984 & , 2)+
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
11985 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j&
11986 & +1, k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1&
11987 & , 3)+
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
11989 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
11994 dd =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
11998 dd =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
12002 dd =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
12006 dd =
aa(i, j+1, k) -
aa(i, j, k)
12016 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
12022 heatcoef = mul*factlamheat + mue*factturbheat
12024 fracdiv = twothird*(u_x+v_y+w_z)
12025 tauxx = mut*(
two*u_x-fracdiv)
12026 tauyy = mut*(
two*v_y-fracdiv)
12027 tauzz = mut*(
two*w_z-fracdiv)
12028 tauxy = mut*(u_y+v_x)
12029 tauxz = mut*(u_z+w_x)
12030 tauyz = mut*(v_z+w_y)
12040 fmx = tauxx*
sj(i, j, k, 1) + tauxy*
sj(i, j, k, 2) + tauxz*
sj(i&
12042 fmy = tauxy*
sj(i, j, k, 1) + tauyy*
sj(i, j, k, 2) + tauyz*
sj(i&
12044 fmz = tauxz*
sj(i, j, k, 1) + tauyz*
sj(i, j, k, 2) + tauzz*
sj(i&
12046 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sj(i, j, k, 1) + (&
12047 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sj(i, j, k, 2) + (ubar*&
12048 & tauxz+vbar*tauyz+wbar*tauzz)*
sj(i, j, k, 3) - q_x*
sj(i, j, k&
12049 & , 1) - q_y*
sj(i, j, k, 2) - q_z*
sj(i, j, k, 3)
12055 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fmx
12056 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fmy
12057 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fmz
12067 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j&
12068 & , k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1&
12069 & , 1)+
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
12070 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j&
12071 & , k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1&
12072 & , 2)+
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
12073 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j&
12074 & , k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1&
12075 & , 3)+
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
12077 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
12082 dd =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
12086 dd =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
12090 dd =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
12094 dd =
aa(i, j, k+1) -
aa(i, j, k)
12104 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
12110 heatcoef = mul*factlamheat + mue*factturbheat
12112 fracdiv = twothird*(u_x+v_y+w_z)
12113 tauxx = mut*(
two*u_x-fracdiv)
12114 tauyy = mut*(
two*v_y-fracdiv)
12115 tauzz = mut*(
two*w_z-fracdiv)
12116 tauxy = mut*(u_y+v_x)
12117 tauxz = mut*(u_z+w_x)
12118 tauyz = mut*(v_z+w_y)
12128 fmx = tauxx*
sk(i, j, k, 1) + tauxy*
sk(i, j, k, 2) + tauxz*
sk(i&
12130 fmy = tauxy*
sk(i, j, k, 1) + tauyy*
sk(i, j, k, 2) + tauyz*
sk(i&
12132 fmz = tauxz*
sk(i, j, k, 1) + tauyz*
sk(i, j, k, 2) + tauzz*
sk(i&
12134 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sk(i, j, k, 1) + (&
12135 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sk(i, j, k, 2) + (ubar*&
12136 & tauxz+vbar*tauyz+wbar*tauzz)*
sk(i, j, k, 3) - q_x*
sk(i, j, k&
12137 & , 1) - q_y*
sk(i, j, k, 2) - q_z*
sk(i, j, k, 3)
12143 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fmx
12144 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fmy
12145 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fmz
12180 real(kind=realtype),
parameter :: dssmax=0.25_realtype
12184 integer(kind=inttype) :: i, j, k, ind
12185 real(kind=realtype) :: sslim, rhoi
12186 real(kind=realtype) :: sslimd, rhoid
12187 real(kind=realtype) :: sfil, fis2, fis4
12188 real(kind=realtype) :: ppor, rrad, dis2
12189 real(kind=realtype) :: rradd, dis2d
12190 real(kind=realtype) :: dss1, dss2, ddw, fs
12191 real(kind=realtype) :: dss1d, dss2d, ddwd, fsd
12197 real(kind=realtype) :: x1
12198 real(kind=realtype) :: x1d
12199 real(kind=realtype) :: x2
12200 real(kind=realtype) :: x2d
12201 real(kind=realtype) :: y1
12202 real(kind=realtype) :: y1d
12203 real(kind=realtype) :: x3
12204 real(kind=realtype) :: x3d
12205 real(kind=realtype) :: x4
12206 real(kind=realtype) :: x4d
12207 real(kind=realtype) :: y2
12208 real(kind=realtype) :: y2d
12209 real(kind=realtype) :: x5
12210 real(kind=realtype) :: x5d
12211 real(kind=realtype) :: x6
12212 real(kind=realtype) :: x6d
12213 real(kind=realtype) :: y3
12214 real(kind=realtype) :: y3d
12215 real(kind=realtype) :: abs0
12216 real(kind=realtype) :: min1
12217 real(kind=realtype) :: min1d
12218 real(kind=realtype) :: min2
12219 real(kind=realtype) :: min2d
12220 real(kind=realtype) :: min3
12221 real(kind=realtype) :: min3d
12222 real(kind=realtype) :: temp
12223 real(kind=realtype) :: temp0
12224 real(kind=realtype) :: tempd
12225 real(kind=realtype) :: tmp
12226 real(kind=realtype) :: tmpd
12227 real(kind=realtype) :: tmp0
12228 real(kind=realtype) :: tmpd0
12229 real(kind=realtype) :: tmp1
12230 real(kind=realtype) :: tmpd1
12231 real(kind=realtype) :: tmp2
12232 real(kind=realtype) :: tmpd2
12233 real(kind=realtype) :: tmp3
12234 real(kind=realtype) :: tmpd3
12235 real(kind=realtype) :: tmp4
12236 real(kind=realtype) :: tmpd4
12237 real(kind=realtype) :: tmp5
12238 real(kind=realtype) :: tmpd5
12239 real(kind=realtype) :: tmp6
12240 real(kind=realtype) :: tmpd6
12241 real(kind=realtype) :: tmp7
12242 real(kind=realtype) :: tmpd7
12243 real(kind=realtype) :: tmp8
12244 real(kind=realtype) :: tmpd8
12245 real(kind=realtype) :: tmp9
12246 real(kind=realtype) :: tmpd9
12247 real(kind=realtype) :: tmp10
12248 real(kind=realtype) :: tmpd10
12249 real(kind=realtype) :: tmp11
12250 real(kind=realtype) :: tmpd11
12251 real(kind=realtype) :: tmp12
12252 real(kind=realtype) :: tmpd12
12253 real(kind=realtype) :: tmp13
12254 real(kind=realtype) :: tmpd13
12255 real(kind=realtype) :: tmp14
12256 real(kind=realtype) :: tmpd14
12257 real(kind=realtype) :: tmp15
12258 real(kind=realtype) :: tmpd15
12259 real(kind=realtype) :: tmp16
12260 real(kind=realtype) :: tmpd16
12261 real(kind=realtype) :: tmp17
12262 real(kind=realtype) :: tmpd17
12263 real(kind=realtype) :: tmp18
12264 real(kind=realtype) :: tmpd18
12265 real(kind=realtype) :: tmp19
12266 real(kind=realtype) :: tmpd19
12267 real(kind=realtype) :: tmp20
12268 real(kind=realtype) :: tmpd20
12269 real(kind=realtype) :: tmp21
12270 real(kind=realtype) :: tmpd21
12271 real(kind=realtype) :: tmp22
12272 real(kind=realtype) :: tmpd22
12273 real(kind=realtype) :: tmp23
12274 real(kind=realtype) :: tmpd23
12275 real(kind=realtype) :: tmp24
12276 real(kind=realtype) :: tmpd24
12277 real(kind=realtype) :: tmp25
12278 real(kind=realtype) :: tmpd25
12280 if (
rfil .ge. 0.)
then
12305 call pushcontrol2b(1)
12312 call pushcontrol2b(2)
12314 call pushcontrol2b(0)
12340 call pushreal8(
w(i, j, k,
ivx))
12341 w(i, j, k,
ivx) = tmp
12342 tmp0 =
w(i, j, k,
irho)*
w(i, j, k,
ivy)
12343 call pushreal8(
w(i, j, k,
ivy))
12344 w(i, j, k,
ivy) = tmp0
12345 tmp1 =
w(i, j, k,
irho)*
w(i, j, k,
ivz)
12346 call pushreal8(
w(i, j, k,
ivz))
12347 w(i, j, k,
ivz) = tmp1
12348 call pushreal8(
w(i, j, k,
irhoe))
12355 tmp2 =
w(0, j, k,
irho)*
w(0, j, k,
ivx)
12356 call pushreal8(
w(0, j, k,
ivx))
12357 w(0, j, k,
ivx) = tmp2
12358 tmp3 =
w(0, j, k,
irho)*
w(0, j, k,
ivy)
12359 call pushreal8(
w(0, j, k,
ivy))
12360 w(0, j, k,
ivy) = tmp3
12361 tmp4 =
w(0, j, k,
irho)*
w(0, j, k,
ivz)
12362 call pushreal8(
w(0, j, k,
ivz))
12363 w(0, j, k,
ivz) = tmp4
12364 call pushreal8(
w(0, j, k,
irhoe))
12366 tmp5 =
w(1, j, k,
irho)*
w(1, j, k,
ivx)
12367 call pushreal8(
w(1, j, k,
ivx))
12368 w(1, j, k,
ivx) = tmp5
12369 tmp6 =
w(1, j, k,
irho)*
w(1, j, k,
ivy)
12370 call pushreal8(
w(1, j, k,
ivy))
12371 w(1, j, k,
ivy) = tmp6
12372 tmp7 =
w(1, j, k,
irho)*
w(1, j, k,
ivz)
12373 call pushreal8(
w(1, j, k,
ivz))
12374 w(1, j, k,
ivz) = tmp7
12375 call pushreal8(
w(1, j, k,
irhoe))
12378 call pushreal8(
w(
ie, j, k,
ivx))
12381 call pushreal8(
w(
ie, j, k,
ivy))
12384 call pushreal8(
w(
ie, j, k,
ivz))
12385 w(
ie, j, k,
ivz) = tmp10
12386 call pushreal8(
w(
ie, j, k,
irhoe))
12389 call pushreal8(
w(
ib, j, k,
ivx))
12390 w(
ib, j, k,
ivx) = tmp11
12392 call pushreal8(
w(
ib, j, k,
ivy))
12393 w(
ib, j, k,
ivy) = tmp12
12395 call pushreal8(
w(
ib, j, k,
ivz))
12396 w(
ib, j, k,
ivz) = tmp13
12397 call pushreal8(
w(
ib, j, k,
irhoe))
12403 tmp14 =
w(i, 0, k,
irho)*
w(i, 0, k,
ivx)
12404 call pushreal8(
w(i, 0, k,
ivx))
12405 w(i, 0, k,
ivx) = tmp14
12406 tmp15 =
w(i, 0, k,
irho)*
w(i, 0, k,
ivy)
12407 call pushreal8(
w(i, 0, k,
ivy))
12408 w(i, 0, k,
ivy) = tmp15
12409 tmp16 =
w(i, 0, k,
irho)*
w(i, 0, k,
ivz)
12410 call pushreal8(
w(i, 0, k,
ivz))
12411 w(i, 0, k,
ivz) = tmp16
12412 call pushreal8(
w(i, 0, k,
irhoe))
12414 tmp17 =
w(i, 1, k,
irho)*
w(i, 1, k,
ivx)
12415 call pushreal8(
w(i, 1, k,
ivx))
12416 w(i, 1, k,
ivx) = tmp17
12417 tmp18 =
w(i, 1, k,
irho)*
w(i, 1, k,
ivy)
12418 call pushreal8(
w(i, 1, k,
ivy))
12419 w(i, 1, k,
ivy) = tmp18
12420 tmp19 =
w(i, 1, k,
irho)*
w(i, 1, k,
ivz)
12421 call pushreal8(
w(i, 1, k,
ivz))
12422 w(i, 1, k,
ivz) = tmp19
12423 call pushreal8(
w(i, 1, k,
irhoe))
12426 call pushreal8(
w(i,
je, k,
ivx))
12427 w(i,
je, k,
ivx) = tmp20
12429 call pushreal8(
w(i,
je, k,
ivy))
12430 w(i,
je, k,
ivy) = tmp21
12432 call pushreal8(
w(i,
je, k,
ivz))
12433 w(i,
je, k,
ivz) = tmp22
12434 call pushreal8(
w(i,
je, k,
irhoe))
12437 call pushreal8(
w(i,
jb, k,
ivx))
12438 w(i,
jb, k,
ivx) = tmp23
12440 call pushreal8(
w(i,
jb, k,
ivy))
12441 w(i,
jb, k,
ivy) = tmp24
12443 call pushreal8(
w(i,
jb, k,
ivz))
12444 w(i,
jb, k,
ivz) = tmp25
12445 call pushreal8(
w(i,
jb, k,
irhoe))
12457 if (x1 .ge. 0.)
then
12459 call pushcontrol1b(0)
12462 call pushcontrol1b(1)
12469 if (x2 .ge. 0.)
then
12471 call pushcontrol1b(0)
12474 call pushcontrol1b(1)
12477 call pushreal8(ppor)
12480 if (dss1 .lt. dss2)
then
12482 call pushcontrol1b(0)
12485 call pushcontrol1b(1)
12487 if (dssmax .gt. y1)
then
12488 call pushreal8(min1)
12490 call pushcontrol1b(0)
12492 call pushreal8(min1)
12494 call pushcontrol1b(1)
12521 if (x3 .ge. 0.)
then
12523 call pushcontrol1b(0)
12526 call pushcontrol1b(1)
12533 if (x4 .ge. 0.)
then
12535 call pushcontrol1b(0)
12538 call pushcontrol1b(1)
12541 call pushreal8(ppor)
12544 if (dss1 .lt. dss2)
then
12546 call pushcontrol1b(0)
12549 call pushcontrol1b(1)
12551 if (dssmax .gt. y2)
then
12552 call pushreal8(min2)
12554 call pushcontrol1b(0)
12556 call pushreal8(min2)
12558 call pushcontrol1b(1)
12581 if (x5 .ge. 0.)
then
12583 call pushcontrol1b(0)
12586 call pushcontrol1b(1)
12593 if (x6 .ge. 0.)
then
12595 call pushcontrol1b(0)
12598 call pushcontrol1b(1)
12601 call pushreal8(ppor)
12604 if (dss1 .lt. dss2)
then
12606 call pushcontrol1b(0)
12609 call pushcontrol1b(1)
12611 if (dssmax .gt. y3)
then
12612 call pushreal8(min3)
12614 call pushcontrol1b(0)
12616 call pushreal8(min3)
12618 call pushcontrol1b(1)
12640 call pushreal8(rhoi)
12642 call pushreal8(
w(i, j, k,
ivx))
12643 w(i, j, k,
ivx) =
w(i, j, k,
ivx)*rhoi
12644 call pushreal8(
w(i, j, k,
ivy))
12645 w(i, j, k,
ivy) =
w(i, j, k,
ivy)*rhoi
12646 call pushreal8(
w(i, j, k,
ivz))
12647 w(i, j, k,
ivz) =
w(i, j, k,
ivz)*rhoi
12648 call pushreal8(
w(i, j, k,
irhoe))
12655 call pushreal8(rhoi)
12657 call pushreal8(
w(0, j, k,
ivx))
12658 w(0, j, k,
ivx) =
w(0, j, k,
ivx)*rhoi
12659 call pushreal8(
w(0, j, k,
ivy))
12660 w(0, j, k,
ivy) =
w(0, j, k,
ivy)*rhoi
12661 call pushreal8(
w(0, j, k,
ivz))
12662 w(0, j, k,
ivz) =
w(0, j, k,
ivz)*rhoi
12663 call pushreal8(
w(0, j, k,
irhoe))
12665 call pushreal8(rhoi)
12667 call pushreal8(
w(1, j, k,
ivx))
12668 w(1, j, k,
ivx) =
w(1, j, k,
ivx)*rhoi
12669 call pushreal8(
w(1, j, k,
ivy))
12670 w(1, j, k,
ivy) =
w(1, j, k,
ivy)*rhoi
12671 call pushreal8(
w(1, j, k,
ivz))
12672 w(1, j, k,
ivz) =
w(1, j, k,
ivz)*rhoi
12673 call pushreal8(
w(1, j, k,
irhoe))
12675 call pushreal8(rhoi)
12677 call pushreal8(
w(
ie, j, k,
ivx))
12679 call pushreal8(
w(
ie, j, k,
ivy))
12681 call pushreal8(
w(
ie, j, k,
ivz))
12683 call pushreal8(
w(
ie, j, k,
irhoe))
12685 call pushreal8(rhoi)
12687 call pushreal8(
w(
ib, j, k,
ivx))
12689 call pushreal8(
w(
ib, j, k,
ivy))
12691 call pushreal8(
w(
ib, j, k,
ivz))
12693 call pushreal8(
w(
ib, j, k,
irhoe))
12699 call pushreal8(rhoi)
12701 call pushreal8(
w(i, 0, k,
ivx))
12702 w(i, 0, k,
ivx) =
w(i, 0, k,
ivx)*rhoi
12703 call pushreal8(
w(i, 0, k,
ivy))
12704 w(i, 0, k,
ivy) =
w(i, 0, k,
ivy)*rhoi
12705 call pushreal8(
w(i, 0, k,
ivz))
12706 w(i, 0, k,
ivz) =
w(i, 0, k,
ivz)*rhoi
12707 call pushreal8(
w(i, 0, k,
irhoe))
12709 call pushreal8(rhoi)
12711 call pushreal8(
w(i, 1, k,
ivx))
12712 w(i, 1, k,
ivx) =
w(i, 1, k,
ivx)*rhoi
12713 call pushreal8(
w(i, 1, k,
ivy))
12714 w(i, 1, k,
ivy) =
w(i, 1, k,
ivy)*rhoi
12715 call pushreal8(
w(i, 1, k,
ivz))
12716 w(i, 1, k,
ivz) =
w(i, 1, k,
ivz)*rhoi
12717 call pushreal8(
w(i, 1, k,
irhoe))
12719 call pushreal8(rhoi)
12721 call pushreal8(
w(i,
je, k,
ivx))
12723 call pushreal8(
w(i,
je, k,
ivy))
12725 call pushreal8(
w(i,
je, k,
ivz))
12727 call pushreal8(
w(i,
je, k,
irhoe))
12729 call pushreal8(rhoi)
12731 call pushreal8(
w(i,
jb, k,
ivx))
12733 call pushreal8(
w(i,
jb, k,
ivy))
12735 call pushreal8(
w(i,
jb, k,
ivz))
12737 call pushreal8(
w(i,
jb, k,
irhoe))
12745 call popreal8(
w(i,
jb, k,
ivz))
12748 call popreal8(
w(i,
jb, k,
ivy))
12751 call popreal8(
w(i,
jb, k,
ivx))
12754 call popreal8(rhoi)
12759 call popreal8(
w(i,
je, k,
ivz))
12762 call popreal8(
w(i,
je, k,
ivy))
12765 call popreal8(
w(i,
je, k,
ivx))
12768 call popreal8(rhoi)
12771 call popreal8(
w(i, 1, k,
irhoe))
12773 call popreal8(
w(i, 1, k,
ivz))
12774 rhoid =
w(i, 1, k,
ivz)*
wd(i, 1, k,
ivz)
12776 call popreal8(
w(i, 1, k,
ivy))
12777 rhoid = rhoid +
w(i, 1, k,
ivy)*
wd(i, 1, k,
ivy)
12779 call popreal8(
w(i, 1, k,
ivx))
12780 rhoid = rhoid +
w(i, 1, k,
ivx)*
wd(i, 1, k,
ivx)
12782 call popreal8(rhoi)
12783 temp0 =
w(i, 1, k,
irho)
12785 call popreal8(
w(i, 0, k,
irhoe))
12787 call popreal8(
w(i, 0, k,
ivz))
12788 rhoid =
w(i, 0, k,
ivz)*
wd(i, 0, k,
ivz)
12790 call popreal8(
w(i, 0, k,
ivy))
12791 rhoid = rhoid +
w(i, 0, k,
ivy)*
wd(i, 0, k,
ivy)
12793 call popreal8(
w(i, 0, k,
ivx))
12794 rhoid = rhoid +
w(i, 0, k,
ivx)*
wd(i, 0, k,
ivx)
12796 call popreal8(rhoi)
12797 temp0 =
w(i, 0, k,
irho)
12805 call popreal8(
w(
ib, j, k,
ivz))
12808 call popreal8(
w(
ib, j, k,
ivy))
12811 call popreal8(
w(
ib, j, k,
ivx))
12814 call popreal8(rhoi)
12819 call popreal8(
w(
ie, j, k,
ivz))
12822 call popreal8(
w(
ie, j, k,
ivy))
12825 call popreal8(
w(
ie, j, k,
ivx))
12828 call popreal8(rhoi)
12831 call popreal8(
w(1, j, k,
irhoe))
12833 call popreal8(
w(1, j, k,
ivz))
12834 rhoid =
w(1, j, k,
ivz)*
wd(1, j, k,
ivz)
12836 call popreal8(
w(1, j, k,
ivy))
12837 rhoid = rhoid +
w(1, j, k,
ivy)*
wd(1, j, k,
ivy)
12839 call popreal8(
w(1, j, k,
ivx))
12840 rhoid = rhoid +
w(1, j, k,
ivx)*
wd(1, j, k,
ivx)
12842 call popreal8(rhoi)
12843 temp0 =
w(1, j, k,
irho)
12845 call popreal8(
w(0, j, k,
irhoe))
12847 call popreal8(
w(0, j, k,
ivz))
12848 rhoid =
w(0, j, k,
ivz)*
wd(0, j, k,
ivz)
12850 call popreal8(
w(0, j, k,
ivy))
12851 rhoid = rhoid +
w(0, j, k,
ivy)*
wd(0, j, k,
ivy)
12853 call popreal8(
w(0, j, k,
ivx))
12854 rhoid = rhoid +
w(0, j, k,
ivx)*
wd(0, j, k,
ivx)
12856 call popreal8(rhoi)
12857 temp0 =
w(0, j, k,
irho)
12864 call popreal8(
w(i, j, k,
irhoe))
12866 call popreal8(
w(i, j, k,
ivz))
12867 rhoid =
w(i, j, k,
ivz)*
wd(i, j, k,
ivz)
12869 call popreal8(
w(i, j, k,
ivy))
12870 rhoid = rhoid +
w(i, j, k,
ivy)*
wd(i, j, k,
ivy)
12872 call popreal8(
w(i, j, k,
ivx))
12873 rhoid = rhoid +
w(i, j, k,
ivx)*
wd(i, j, k,
ivx)
12875 call popreal8(rhoi)
12876 temp0 =
w(i, j, k,
irho)
12890 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
12891 dis2 = fis2*rrad*min3 +
sigma*fis4*rrad
12897 ddw =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
12898 dis2d = dis2d + ddw*fsd
12900 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) + ddwd
12903 ddw =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
12904 dis2d = dis2d + ddw*fsd
12906 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) + ddwd
12909 ddw =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
12910 dis2d = dis2d + ddw*fsd
12912 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) + ddwd
12916 dis2d = dis2d + ddw*fsd
12920 rradd = (min3*fis2+
sigma*fis4)*dis2d
12921 min3d = rrad*fis2*dis2d
12922 call popcontrol1b(branch)
12923 if (branch .eq. 0)
then
12924 call popreal8(min3)
12927 call popreal8(min3)
12930 call popcontrol1b(branch)
12931 if (branch .eq. 0)
then
12932 dss2d = dss2d + y3d
12937 radkd(i, j, k) =
radkd(i, j, k) + ppor*rradd
12938 radkd(i, j, k+1) =
radkd(i, j, k+1) + ppor*rradd
12939 call popreal8(ppor)
12940 call popcontrol1b(branch)
12941 if (branch .eq. 0)
then
12951 call popcontrol1b(branch)
12952 if (branch .eq. 0)
then
12971 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
12972 dis2 = fis2*rrad*min2 +
sigma*fis4*rrad
12978 ddw =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
12979 dis2d = dis2d + ddw*fsd
12981 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) + ddwd
12984 ddw =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
12985 dis2d = dis2d + ddw*fsd
12987 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) + ddwd
12990 ddw =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
12991 dis2d = dis2d + ddw*fsd
12993 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) + ddwd
12997 dis2d = dis2d + ddw*fsd
13001 rradd = (min2*fis2+
sigma*fis4)*dis2d
13002 min2d = rrad*fis2*dis2d
13003 call popcontrol1b(branch)
13004 if (branch .eq. 0)
then
13005 call popreal8(min2)
13008 call popreal8(min2)
13011 call popcontrol1b(branch)
13012 if (branch .eq. 0)
then
13013 dss2d = dss2d + y2d
13018 radjd(i, j, k) =
radjd(i, j, k) + ppor*rradd
13019 radjd(i, j+1, k) =
radjd(i, j+1, k) + ppor*rradd
13020 call popreal8(ppor)
13021 call popcontrol1b(branch)
13022 if (branch .eq. 0)
then
13032 call popcontrol1b(branch)
13033 if (branch .eq. 0)
then
13052 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
13053 dis2 = fis2*rrad*min1 +
sigma*fis4*rrad
13059 ddw =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
13060 dis2d = dis2d + ddw*fsd
13062 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) + ddwd
13065 ddw =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
13066 dis2d = dis2d + ddw*fsd
13068 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) + ddwd
13071 ddw =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
13072 dis2d = dis2d + ddw*fsd
13074 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) + ddwd
13078 dis2d = dis2d + ddw*fsd
13082 rradd = (min1*fis2+
sigma*fis4)*dis2d
13083 min1d = rrad*fis2*dis2d
13084 call popcontrol1b(branch)
13085 if (branch .eq. 0)
then
13086 call popreal8(min1)
13089 call popreal8(min1)
13092 call popcontrol1b(branch)
13093 if (branch .eq. 0)
then
13094 dss2d = dss2d + y1d
13099 radid(i, j, k) =
radid(i, j, k) + ppor*rradd
13100 radid(i+1, j, k) =
radid(i+1, j, k) + ppor*rradd
13101 call popreal8(ppor)
13102 call popcontrol1b(branch)
13103 if (branch .eq. 0)
then
13113 call popcontrol1b(branch)
13114 if (branch .eq. 0)
then
13140 call popreal8(
w(i,
jb, k,
ivz))
13147 call popreal8(
w(i,
jb, k,
ivy))
13154 call popreal8(
w(i,
jb, k,
ivx))
13163 call popreal8(
w(i,
je, k,
ivz))
13170 call popreal8(
w(i,
je, k,
ivy))
13177 call popreal8(
w(i,
je, k,
ivx))
13184 call popreal8(
w(i, 1, k,
irhoe))
13186 call popreal8(
w(i, 1, k,
ivz))
13187 tmpd19 =
wd(i, 1, k,
ivz)
13188 wd(i, 1, k,
ivz) = 0.0_8
13191 call popreal8(
w(i, 1, k,
ivy))
13192 tmpd18 =
wd(i, 1, k,
ivy)
13193 wd(i, 1, k,
ivy) = 0.0_8
13196 call popreal8(
w(i, 1, k,
ivx))
13197 tmpd17 =
wd(i, 1, k,
ivx)
13198 wd(i, 1, k,
ivx) = 0.0_8
13201 call popreal8(
w(i, 0, k,
irhoe))
13203 call popreal8(
w(i, 0, k,
ivz))
13204 tmpd16 =
wd(i, 0, k,
ivz)
13205 wd(i, 0, k,
ivz) = 0.0_8
13208 call popreal8(
w(i, 0, k,
ivy))
13209 tmpd15 =
wd(i, 0, k,
ivy)
13210 wd(i, 0, k,
ivy) = 0.0_8
13213 call popreal8(
w(i, 0, k,
ivx))
13214 tmpd14 =
wd(i, 0, k,
ivx)
13215 wd(i, 0, k,
ivx) = 0.0_8
13224 call popreal8(
w(
ib, j, k,
ivz))
13231 call popreal8(
w(
ib, j, k,
ivy))
13238 call popreal8(
w(
ib, j, k,
ivx))
13247 call popreal8(
w(
ie, j, k,
ivz))
13254 call popreal8(
w(
ie, j, k,
ivy))
13261 call popreal8(
w(
ie, j, k,
ivx))
13268 call popreal8(
w(1, j, k,
irhoe))
13270 call popreal8(
w(1, j, k,
ivz))
13271 tmpd7 =
wd(1, j, k,
ivz)
13272 wd(1, j, k,
ivz) = 0.0_8
13275 call popreal8(
w(1, j, k,
ivy))
13276 tmpd6 =
wd(1, j, k,
ivy)
13277 wd(1, j, k,
ivy) = 0.0_8
13280 call popreal8(
w(1, j, k,
ivx))
13281 tmpd5 =
wd(1, j, k,
ivx)
13282 wd(1, j, k,
ivx) = 0.0_8
13285 call popreal8(
w(0, j, k,
irhoe))
13287 call popreal8(
w(0, j, k,
ivz))
13288 tmpd4 =
wd(0, j, k,
ivz)
13289 wd(0, j, k,
ivz) = 0.0_8
13292 call popreal8(
w(0, j, k,
ivy))
13293 tmpd3 =
wd(0, j, k,
ivy)
13294 wd(0, j, k,
ivy) = 0.0_8
13297 call popreal8(
w(0, j, k,
ivx))
13298 tmpd2 =
wd(0, j, k,
ivx)
13299 wd(0, j, k,
ivx) = 0.0_8
13307 call popreal8(
w(i, j, k,
irhoe))
13309 call popreal8(
w(i, j, k,
ivz))
13310 tmpd1 =
wd(i, j, k,
ivz)
13311 wd(i, j, k,
ivz) = 0.0_8
13315 call popreal8(
w(i, j, k,
ivy))
13316 tmpd0 =
wd(i, j, k,
ivy)
13317 wd(i, j, k,
ivy) = 0.0_8
13321 call popreal8(
w(i, j, k,
ivx))
13322 tmpd =
wd(i, j, k,
ivx)
13323 wd(i, j, k,
ivx) = 0.0_8
13329 call popcontrol2b(branch)
13330 if (branch .eq. 0)
then
13333 else if (branch .eq. 1)
then
13338 tempd = 0.001_realtype*sslimd/temp
13370 real(kind=realtype),
parameter :: dssmax=0.25_realtype
13374 integer(kind=inttype) :: i, j, k, ind
13375 real(kind=realtype) :: sslim, rhoi
13376 real(kind=realtype) :: sfil, fis2, fis4
13377 real(kind=realtype) :: ppor, rrad, dis2
13378 real(kind=realtype) :: dss1, dss2, ddw, fs
13384 real(kind=realtype) :: x1
13385 real(kind=realtype) :: x2
13386 real(kind=realtype) :: y1
13387 real(kind=realtype) :: x3
13388 real(kind=realtype) :: x4
13389 real(kind=realtype) :: y2
13390 real(kind=realtype) :: x5
13391 real(kind=realtype) :: x6
13392 real(kind=realtype) :: y3
13393 real(kind=realtype) :: abs0
13394 real(kind=realtype) :: min1
13395 real(kind=realtype) :: min2
13396 real(kind=realtype) :: min3
13397 if (
rfil .ge. 0.)
then
13517 if (x1 .ge. 0.)
then
13527 if (x2 .ge. 0.)
then
13535 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
13536 if (dss1 .lt. dss2)
then
13541 if (dssmax .gt. y1)
then
13551 dis2 = fis2*rrad*min1 +
sigma*fis4*rrad
13560 ddw =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
13562 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fs
13565 ddw =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
13567 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fs
13570 ddw =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
13572 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fs
13592 if (x3 .ge. 0.)
then
13602 if (x4 .ge. 0.)
then
13610 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
13611 if (dss1 .lt. dss2)
then
13616 if (dssmax .gt. y2)
then
13622 dis2 = fis2*rrad*min2 +
sigma*fis4*rrad
13631 ddw =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
13633 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fs
13636 ddw =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
13638 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fs
13641 ddw =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
13643 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fs
13663 if (x5 .ge. 0.)
then
13673 if (x6 .ge. 0.)
then
13681 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
13682 if (dss1 .lt. dss2)
then
13687 if (dssmax .gt. y3)
then
13693 dis2 = fis2*rrad*min3 +
sigma*fis4*rrad
13702 ddw =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
13704 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fs
13707 ddw =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
13709 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fs
13712 ddw =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
13714 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fs
13734 w(i, j, k,
ivx) =
w(i, j, k,
ivx)*rhoi
13735 w(i, j, k,
ivy) =
w(i, j, k,
ivy)*rhoi
13736 w(i, j, k,
ivz) =
w(i, j, k,
ivz)*rhoi
13744 w(0, j, k,
ivx) =
w(0, j, k,
ivx)*rhoi
13745 w(0, j, k,
ivy) =
w(0, j, k,
ivy)*rhoi
13746 w(0, j, k,
ivz) =
w(0, j, k,
ivz)*rhoi
13749 w(1, j, k,
ivx) =
w(1, j, k,
ivx)*rhoi
13750 w(1, j, k,
ivy) =
w(1, j, k,
ivy)*rhoi
13751 w(1, j, k,
ivz) =
w(1, j, k,
ivz)*rhoi
13768 w(i, 0, k,
ivx) =
w(i, 0, k,
ivx)*rhoi
13769 w(i, 0, k,
ivy) =
w(i, 0, k,
ivy)*rhoi
13770 w(i, 0, k,
ivz) =
w(i, 0, k,
ivz)*rhoi
13773 w(i, 1, k,
ivx) =
w(i, 1, k,
ivx)*rhoi
13774 w(i, 1, k,
ivy) =
w(i, 1, k,
ivy)*rhoi
13775 w(i, 1, k,
ivz) =
w(i, 1, k,
ivz)*rhoi
13823 real(kind=realtype),
parameter :: dpmax=0.25_realtype
13824 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
13825 real(kind=realtype),
parameter :: epsshear=0.025_realtype
13826 real(kind=realtype),
parameter :: omega=0.5_realtype
13827 real(kind=realtype),
parameter :: oneminomega=
one-omega
13831 integer(kind=inttype) :: i, j, k, ind
13832 real(kind=realtype) :: plim, sface
13833 real(kind=realtype) :: plimd, sfaced
13834 real(kind=realtype) :: sfil, fis2, fis4
13835 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
13836 real(kind=realtype) :: ppor, rrad, dis2
13837 real(kind=realtype) :: rradd, dis2d
13838 real(kind=realtype) :: dp1, dp2, ddw, tmp, fs
13839 real(kind=realtype) :: dp1d, dp2d, ddwd, tmpd, fsd
13840 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
13841 real(kind=realtype) :: drd, drud, drvd, drwd, dred, drkd, sxd, syd, &
13843 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
13844 real(kind=realtype) :: uavgd, vavgd, wavgd, a2avgd, aavgd, havgd
13845 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
13846 real(kind=realtype) :: alphaavgd, unavgd, ovaavgd, ova2avgd
13847 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
13848 real(kind=realtype) :: kavgd, lam1d, lam2d, lam3d, aread
13849 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
13850 real(kind=realtype) :: abv1d, abv2d, abv3d, abv4d, abv5d, abv6d, &
13852 logical :: correctfork
13857 real(kind=realtype) :: x1
13858 real(kind=realtype) :: x1d
13859 real(kind=realtype) :: x2
13860 real(kind=realtype) :: x2d
13861 real(kind=realtype) :: y1
13862 real(kind=realtype) :: y1d
13863 real(kind=realtype) :: x3
13864 real(kind=realtype) :: x3d
13865 real(kind=realtype) :: x4
13866 real(kind=realtype) :: x4d
13867 real(kind=realtype) :: y2
13868 real(kind=realtype) :: y2d
13869 real(kind=realtype) :: x5
13870 real(kind=realtype) :: x5d
13871 real(kind=realtype) :: x6
13872 real(kind=realtype) :: x6d
13873 real(kind=realtype) :: y3
13874 real(kind=realtype) :: y3d
13875 real(kind=realtype) :: abs0
13876 real(kind=realtype) :: min1
13877 real(kind=realtype) :: min1d
13878 real(realtype) :: max1
13879 real(realtype) :: max1d
13880 real(kind=realtype) :: min2
13881 real(kind=realtype) :: min2d
13882 real(realtype) :: max2
13883 real(realtype) :: max2d
13884 real(kind=realtype) :: min3
13885 real(kind=realtype) :: min3d
13886 real(realtype) :: max3
13887 real(realtype) :: max3d
13888 real(kind=realtype) :: abs1
13889 real(kind=realtype) :: abs2
13890 real(kind=realtype) :: abs3
13891 real(kind=realtype) :: abs4
13892 real(kind=realtype) :: abs5
13893 real(kind=realtype) :: abs6
13894 real(kind=realtype) :: abs7
13895 real(kind=realtype) :: abs8
13896 real(kind=realtype) :: abs9
13897 real(kind=realtype) :: abs10
13898 real(kind=realtype) :: abs11
13899 real(kind=realtype) :: abs12
13900 real(kind=realtype) :: temp
13901 real(kind=realtype) :: temp0
13902 real(kind=realtype) :: tempd
13903 real(kind=realtype) :: temp1
13904 real(kind=realtype) :: temp2
13905 real(kind=realtype) :: tempd0
13906 real(kind=realtype) :: tempd1
13907 real(kind=realtype) :: tempd2
13909 if (
rfil .ge. 0.)
then
13937 call pushreal8(abs1)
13939 call pushcontrol1b(1)
13941 call pushreal8(abs1)
13943 call pushcontrol1b(0)
13946 call pushreal8(abs7)
13948 call pushcontrol1b(0)
13950 call pushreal8(abs7)
13952 call pushcontrol1b(1)
13958 if (x1 .ge. 0.)
then
13960 call pushcontrol1b(0)
13963 call pushcontrol1b(1)
13969 call pushreal8(abs2)
13971 call pushcontrol1b(1)
13973 call pushreal8(abs2)
13975 call pushcontrol1b(0)
13979 call pushreal8(abs8)
13981 call pushcontrol1b(0)
13983 call pushreal8(abs8)
13985 call pushcontrol1b(1)
13991 if (x2 .ge. 0.)
then
13993 call pushcontrol1b(0)
13996 call pushcontrol1b(1)
13999 call pushreal8(ppor)
14002 if (dp1 .lt. dp2)
then
14004 call pushcontrol1b(0)
14007 call pushcontrol1b(1)
14009 if (dpmax .gt. y1)
then
14011 call pushcontrol1b(0)
14014 call pushcontrol1b(1)
14016 call pushreal8(dis2)
14017 dis2 = fis2*ppor*min1 +
sigma*fis4*ppor
14020 call pushreal8(ddw)
14025 & )*
w(i, j, k,
ivx)
14026 call pushreal8(dru)
14028 call pushreal8(ddw)
14030 & )*
w(i, j, k,
ivy)
14031 call pushreal8(drv)
14033 call pushreal8(ddw)
14035 & )*
w(i, j, k,
ivz)
14036 call pushreal8(drw)
14038 call pushreal8(ddw)
14040 call pushreal8(dre)
14046 if (correctfork)
then
14047 ddw =
w(i+1, j, k,
irho)*
w(i+1, j, k,
itu1) -
w(i, j, k, &
14051 call pushcontrol1b(1)
14055 call pushcontrol1b(0)
14060 gm1 = gammaavg -
one
14067 call pushreal8(a2avg)
14068 a2avg =
half*(
gamma(i+1, j, k)*
p(i+1, j, k)/
w(i+1, j, k, &
14071 sx =
si(i, j, k, 1)
14073 sy =
si(i, j, k, 2)
14075 sz =
si(i, j, k, 3)
14076 call pushreal8(area)
14077 area = sqrt(sx**2 + sy**2 + sz**2)
14078 if (1.e-25_realtype .lt. area)
then
14079 call pushreal8(max1)
14081 call pushcontrol1b(0)
14083 call pushreal8(max1)
14084 max1 = 1.e-25_realtype
14085 call pushcontrol1b(1)
14094 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
14095 call pushreal8(havg)
14096 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
14097 call pushreal8(aavg)
14099 unavg = uavg*sx + vavg*sy + wavg*sz
14103 sface =
sfacei(i, j, k)*tmp
14104 call pushcontrol1b(1)
14106 call pushcontrol1b(0)
14108 if (unavg - sface + aavg .ge. 0.)
then
14109 lam1 = unavg - sface + aavg
14110 call pushcontrol1b(0)
14112 lam1 = -(unavg-sface+aavg)
14113 call pushcontrol1b(1)
14115 if (unavg - sface - aavg .ge. 0.)
then
14116 lam2 = unavg - sface - aavg
14117 call pushcontrol1b(0)
14119 lam2 = -(unavg-sface-aavg)
14120 call pushcontrol1b(1)
14122 if (unavg - sface .ge. 0.)
then
14123 call pushreal8(lam3)
14124 lam3 = unavg - sface
14125 call pushcontrol1b(0)
14127 call pushreal8(lam3)
14128 lam3 = -(unavg-sface)
14129 call pushcontrol1b(1)
14132 if (lam1 .lt. epsacoustic*rrad)
then
14133 lam1 = epsacoustic*rrad
14134 call pushcontrol1b(0)
14136 call pushcontrol1b(1)
14139 if (lam2 .lt. epsacoustic*rrad)
then
14140 lam2 = epsacoustic*rrad
14141 call pushcontrol1b(0)
14143 call pushcontrol1b(1)
14146 if (lam3 .lt. epsshear*rrad)
then
14147 lam3 = epsshear*rrad
14148 call pushcontrol1b(0)
14151 call pushcontrol1b(1)
14155 call pushreal8(lam1)
14157 call pushreal8(lam2)
14159 call pushreal8(lam3)
14163 abv1 =
half*(lam1+lam2)
14164 call pushreal8(abv2)
14165 abv2 =
half*(lam1-lam2)
14166 call pushreal8(abv3)
14168 call pushreal8(abv4)
14169 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
14188 call pushreal8(abs3)
14190 call pushcontrol1b(1)
14192 call pushreal8(abs3)
14194 call pushcontrol1b(0)
14197 call pushreal8(abs9)
14199 call pushcontrol1b(0)
14201 call pushreal8(abs9)
14203 call pushcontrol1b(1)
14209 if (x3 .ge. 0.)
then
14211 call pushcontrol1b(0)
14214 call pushcontrol1b(1)
14220 call pushreal8(abs4)
14222 call pushcontrol1b(1)
14224 call pushreal8(abs4)
14226 call pushcontrol1b(0)
14230 call pushreal8(abs10)
14232 call pushcontrol1b(0)
14234 call pushreal8(abs10)
14236 call pushcontrol1b(1)
14241 & abs4+abs10)+plim)
14242 if (x4 .ge. 0.)
then
14244 call pushcontrol1b(0)
14247 call pushcontrol1b(1)
14250 call pushreal8(ppor)
14253 if (dp1 .lt. dp2)
then
14255 call pushcontrol1b(0)
14258 call pushcontrol1b(1)
14260 if (dpmax .gt. y2)
then
14262 call pushcontrol1b(0)
14265 call pushcontrol1b(1)
14267 call pushreal8(dis2)
14268 dis2 = fis2*ppor*min2 +
sigma*fis4*ppor
14271 call pushreal8(ddw)
14276 & )*
w(i, j, k,
ivx)
14277 call pushreal8(dru)
14279 call pushreal8(ddw)
14281 & )*
w(i, j, k,
ivy)
14282 call pushreal8(drv)
14284 call pushreal8(ddw)
14286 & )*
w(i, j, k,
ivz)
14287 call pushreal8(drw)
14289 call pushreal8(ddw)
14291 call pushreal8(dre)
14297 if (correctfork)
then
14298 ddw =
w(i, j+1, k,
irho)*
w(i, j+1, k,
itu1) -
w(i, j, k, &
14302 call pushcontrol1b(1)
14306 call pushcontrol1b(0)
14311 gm1 = gammaavg -
one
14318 call pushreal8(a2avg)
14319 a2avg =
half*(
gamma(i, j+1, k)*
p(i, j+1, k)/
w(i, j+1, k, &
14322 sx =
sj(i, j, k, 1)
14324 sy =
sj(i, j, k, 2)
14326 sz =
sj(i, j, k, 3)
14327 call pushreal8(area)
14328 area = sqrt(sx**2 + sy**2 + sz**2)
14329 if (1.e-25_realtype .lt. area)
then
14330 call pushreal8(max2)
14332 call pushcontrol1b(0)
14334 call pushreal8(max2)
14335 max2 = 1.e-25_realtype
14336 call pushcontrol1b(1)
14345 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
14346 call pushreal8(havg)
14347 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
14348 call pushreal8(aavg)
14350 unavg = uavg*sx + vavg*sy + wavg*sz
14354 sface =
sfacej(i, j, k)*tmp
14355 call pushcontrol1b(1)
14357 call pushcontrol1b(0)
14359 if (unavg - sface + aavg .ge. 0.)
then
14360 lam1 = unavg - sface + aavg
14361 call pushcontrol1b(0)
14363 lam1 = -(unavg-sface+aavg)
14364 call pushcontrol1b(1)
14366 if (unavg - sface - aavg .ge. 0.)
then
14367 lam2 = unavg - sface - aavg
14368 call pushcontrol1b(0)
14370 lam2 = -(unavg-sface-aavg)
14371 call pushcontrol1b(1)
14373 if (unavg - sface .ge. 0.)
then
14374 call pushreal8(lam3)
14375 lam3 = unavg - sface
14376 call pushcontrol1b(0)
14378 call pushreal8(lam3)
14379 lam3 = -(unavg-sface)
14380 call pushcontrol1b(1)
14383 if (lam1 .lt. epsacoustic*rrad)
then
14384 lam1 = epsacoustic*rrad
14385 call pushcontrol1b(0)
14387 call pushcontrol1b(1)
14390 if (lam2 .lt. epsacoustic*rrad)
then
14391 lam2 = epsacoustic*rrad
14392 call pushcontrol1b(0)
14394 call pushcontrol1b(1)
14397 if (lam3 .lt. epsshear*rrad)
then
14398 lam3 = epsshear*rrad
14399 call pushcontrol1b(0)
14402 call pushcontrol1b(1)
14406 call pushreal8(lam1)
14408 call pushreal8(lam2)
14410 call pushreal8(lam3)
14414 abv1 =
half*(lam1+lam2)
14415 call pushreal8(abv2)
14416 abv2 =
half*(lam1-lam2)
14417 call pushreal8(abv3)
14419 call pushreal8(abv4)
14420 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
14439 call pushreal8(abs5)
14441 call pushcontrol1b(1)
14443 call pushreal8(abs5)
14445 call pushcontrol1b(0)
14448 call pushreal8(abs11)
14450 call pushcontrol1b(0)
14452 call pushreal8(abs11)
14454 call pushcontrol1b(1)
14460 if (x5 .ge. 0.)
then
14462 call pushcontrol1b(0)
14465 call pushcontrol1b(1)
14471 call pushreal8(abs6)
14473 call pushcontrol1b(1)
14475 call pushreal8(abs6)
14477 call pushcontrol1b(0)
14481 call pushreal8(abs12)
14483 call pushcontrol1b(0)
14485 call pushreal8(abs12)
14487 call pushcontrol1b(1)
14492 & abs6+abs12)+plim)
14493 if (x6 .ge. 0.)
then
14495 call pushcontrol1b(0)
14498 call pushcontrol1b(1)
14501 call pushreal8(ppor)
14504 if (dp1 .lt. dp2)
then
14506 call pushcontrol1b(0)
14509 call pushcontrol1b(1)
14511 if (dpmax .gt. y3)
then
14513 call pushcontrol1b(0)
14516 call pushcontrol1b(1)
14518 call pushreal8(dis2)
14519 dis2 = fis2*ppor*min3 +
sigma*fis4*ppor
14522 call pushreal8(ddw)
14527 & )*
w(i, j, k,
ivx)
14528 call pushreal8(dru)
14530 call pushreal8(ddw)
14532 & )*
w(i, j, k,
ivy)
14533 call pushreal8(drv)
14535 call pushreal8(ddw)
14537 & )*
w(i, j, k,
ivz)
14538 call pushreal8(drw)
14540 call pushreal8(ddw)
14542 call pushreal8(dre)
14548 if (correctfork)
then
14549 ddw =
w(i, j, k+1,
irho)*
w(i, j, k+1,
itu1) -
w(i, j, k, &
14553 call pushcontrol1b(1)
14557 call pushcontrol1b(0)
14562 gm1 = gammaavg -
one
14569 call pushreal8(a2avg)
14570 a2avg =
half*(
gamma(i, j, k+1)*
p(i, j, k+1)/
w(i, j, k+1, &
14573 sx =
sk(i, j, k, 1)
14575 sy =
sk(i, j, k, 2)
14577 sz =
sk(i, j, k, 3)
14578 call pushreal8(area)
14579 area = sqrt(sx**2 + sy**2 + sz**2)
14580 if (1.e-25_realtype .lt. area)
then
14581 call pushreal8(max3)
14583 call pushcontrol1b(0)
14585 call pushreal8(max3)
14586 max3 = 1.e-25_realtype
14587 call pushcontrol1b(1)
14596 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
14597 call pushreal8(havg)
14598 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
14599 call pushreal8(aavg)
14601 unavg = uavg*sx + vavg*sy + wavg*sz
14605 sface =
sfacek(i, j, k)*tmp
14606 call pushcontrol1b(1)
14608 call pushcontrol1b(0)
14610 if (unavg - sface + aavg .ge. 0.)
then
14611 lam1 = unavg - sface + aavg
14612 call pushcontrol1b(0)
14614 lam1 = -(unavg-sface+aavg)
14615 call pushcontrol1b(1)
14617 if (unavg - sface - aavg .ge. 0.)
then
14618 lam2 = unavg - sface - aavg
14619 call pushcontrol1b(0)
14621 lam2 = -(unavg-sface-aavg)
14622 call pushcontrol1b(1)
14624 if (unavg - sface .ge. 0.)
then
14625 call pushreal8(lam3)
14626 lam3 = unavg - sface
14627 call pushcontrol1b(0)
14629 call pushreal8(lam3)
14630 lam3 = -(unavg-sface)
14631 call pushcontrol1b(1)
14634 if (lam1 .lt. epsacoustic*rrad)
then
14635 lam1 = epsacoustic*rrad
14636 call pushcontrol1b(0)
14638 call pushcontrol1b(1)
14641 if (lam2 .lt. epsacoustic*rrad)
then
14642 lam2 = epsacoustic*rrad
14643 call pushcontrol1b(0)
14645 call pushcontrol1b(1)
14648 if (lam3 .lt. epsshear*rrad)
then
14649 lam3 = epsshear*rrad
14650 call pushcontrol1b(0)
14653 call pushcontrol1b(1)
14657 call pushreal8(lam1)
14659 call pushreal8(lam2)
14661 call pushreal8(lam3)
14665 abv1 =
half*(lam1+lam2)
14666 call pushreal8(abv2)
14667 abv2 =
half*(lam1-lam2)
14668 call pushreal8(abv3)
14670 call pushreal8(abv4)
14671 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
14695 unavg = uavg*sx + vavg*sy + wavg*sz
14696 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
14698 ova2avg =
one/a2avg
14699 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
14700 abv7 = abv2*abv4*ovaavg + abv3*abv5
14708 lam3d = lam3d + drw*fsd
14711 abv6d = abv6d + wavg*fsd
14713 abv7d = abv7d + sz*fsd
14715 lam3d = lam3d + drv*fsd
14718 abv6d = abv6d + vavg*fsd
14720 abv7d = abv7d + sy*fsd
14722 lam3d = lam3d + dru*fsd
14725 abv6d = abv6d + uavg*fsd
14727 abv7d = abv7d + sx*fsd
14729 abv6d = abv6d + fsd
14730 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
14731 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
14732 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
14733 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
14734 lam3d = lam3d + dr*fsd - abv3d
14735 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
14736 ova2avgd = abv3*abv4*abv6d
14737 sxd = sxd + dru*abv5d
14738 syd = syd + drv*abv5d
14739 szd = szd + drw*abv5d
14740 unavgd = unavgd - dr*abv5d
14742 gm1 = gammaavg -
one
14744 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
14745 call popreal8(abv4)
14747 drd = lam3*fsd + alphaavg*tempd0 - unavg*abv5d
14748 drud = drud + sx*abv5d - uavg*tempd0
14749 drvd = drvd + sy*abv5d - vavg*tempd0
14750 drwd = drwd + sz*abv5d - wavg*tempd0
14751 drkd = -(gm53*abv4d)
14752 alphaavgd = dr*tempd0
14753 uavgd = uavgd - dru*tempd0
14754 vavgd = vavgd - drv*tempd0
14755 dred = dred + tempd0
14756 wavgd = wavgd - drw*tempd0
14757 call popreal8(abv3)
14759 call popreal8(abv2)
14762 call popreal8(lam3)
14763 call popreal8(lam2)
14764 call popreal8(lam1)
14765 aread = lam3*lam3d + lam2*lam2d + lam1*lam1d
14769 call popcontrol1b(branch)
14770 if (branch .eq. 0)
then
14771 rradd = epsshear*lam3d
14776 call popcontrol1b(branch)
14777 if (branch .eq. 0)
then
14778 rradd = rradd + epsacoustic*lam2d
14781 call popcontrol1b(branch)
14782 if (branch .eq. 0)
then
14783 rradd = rradd + epsacoustic*lam1d
14786 lam3d = lam3d + rradd
14788 call popcontrol1b(branch)
14789 if (branch .eq. 0)
then
14790 call popreal8(lam3)
14791 unavgd = unavgd + lam3d
14792 sfaced = sfaced - lam3d
14794 call popreal8(lam3)
14795 sfaced = sfaced + lam3d
14796 unavgd = unavgd - lam3d
14798 call popcontrol1b(branch)
14799 if (branch .eq. 0)
then
14800 unavgd = unavgd + lam2d
14801 sfaced = sfaced - lam2d
14802 aavgd = aavgd - lam2d
14804 sfaced = sfaced + lam2d
14805 unavgd = unavgd - lam2d
14806 aavgd = aavgd + lam2d
14808 call popcontrol1b(branch)
14809 if (branch .eq. 0)
then
14810 unavgd = unavgd + lam1d
14811 sfaced = sfaced - lam1d
14812 aavgd = aavgd + lam1d
14814 sfaced = sfaced + lam1d
14815 unavgd = unavgd - lam1d
14816 aavgd = aavgd - lam1d
14819 call popcontrol1b(branch)
14820 if (branch .eq. 0)
then
14824 tmpd =
sfacek(i, j, k)*sfaced
14827 alphaavgd = alphaavgd + havgd
14828 tempd0 =
half*alphaavgd
14830 aavgd = aavgd -
one*ovaavgd/aavg**2
14831 if (a2avg .eq. 0.0_8)
then
14832 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
14834 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 +&
14837 uavgd = uavgd + sx*unavgd + 2*uavg*tempd0
14838 sxd = sxd + uavg*unavgd
14839 vavgd = vavgd + sy*unavgd + 2*vavg*tempd0
14840 syd = syd + vavg*unavgd
14841 wavgd = wavgd + sz*unavgd + 2*wavg*tempd0
14842 szd = szd + wavg*unavgd
14843 call popreal8(aavg)
14844 call popreal8(havg)
14845 kavgd = -(gm53*ovgm1*havgd)
14849 tmpd = tmpd + sz*szd + sy*syd + sx*sxd
14853 max3d = -(
one*tmpd/max3**2)
14854 call popcontrol1b(branch)
14855 if (branch .eq. 0)
then
14856 call popreal8(max3)
14857 aread = aread + max3d
14859 call popreal8(max3)
14861 call popreal8(area)
14862 if (sx**2 + sy**2 + sz**2 .eq. 0.0_8)
then
14865 tempd0 = aread/(2.0*sqrt(sx**2+sy**2+sz**2))
14867 sxd = sxd + 2*sx*tempd0
14868 syd = syd + 2*sy*tempd0
14869 szd = szd + 2*sz*tempd0
14871 skd(i, j, k, 3) =
skd(i, j, k, 3) + szd
14873 skd(i, j, k, 2) =
skd(i, j, k, 2) + syd
14875 skd(i, j, k, 1) =
skd(i, j, k, 1) + sxd
14876 call popreal8(a2avg)
14877 temp2 =
w(i, j, k+1,
irho)
14878 temp0 =
w(i, j, k,
irho)
14879 tempd1 =
gamma(i, j, k+1)*
half*a2avgd/temp2
14880 tempd2 =
gamma(i, j, k)*
half*a2avgd/temp0
14881 pd(i, j, k) =
pd(i, j, k) + tempd2
14882 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd2/&
14884 pd(i, j, k+1) =
pd(i, j, k+1) + tempd1
14893 call popcontrol1b(branch)
14894 if (branch .eq. 0)
then
14912 dis2d = dis2d + ddw*dred
14918 dis2d = dis2d + ddw*drwd
14928 dis2d = dis2d + ddw*drvd
14938 dis2d = dis2d + ddw*drud
14948 dis2d = dis2d + ddw*drd
14953 call popreal8(dis2)
14954 min3d = fis2*ppor*dis2d
14955 call popcontrol1b(branch)
14956 if (branch .eq. 0)
then
14961 call popcontrol1b(branch)
14962 if (branch .eq. 0)
then
14968 call popreal8(ppor)
14969 call popcontrol1b(branch)
14970 if (branch .eq. 0)
then
14976 & k+1)+
shocksensor(i, j, k)) + oneminomega*(abs6+abs12) + &
14980 call popcontrol1b(branch)
14981 if (branch .eq. 0)
then
14982 call popreal8(abs12)
14984 call popreal8(abs12)
14986 call popcontrol1b(branch)
14987 if (branch .eq. 0)
then
14988 call popreal8(abs6)
14990 call popreal8(abs6)
14993 call popcontrol1b(branch)
14994 if (branch .eq. 0)
then
15000 &
shocksensor(i, j, 0)) + oneminomega*(abs5+abs11) + plim
15003 call popcontrol1b(branch)
15004 if (branch .eq. 0)
then
15005 call popreal8(abs11)
15007 call popreal8(abs11)
15009 call popcontrol1b(branch)
15010 if (branch .eq. 0)
then
15011 call popreal8(abs5)
15013 call popreal8(abs5)
15026 unavg = uavg*sx + vavg*sy + wavg*sz
15027 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
15029 ova2avg =
one/a2avg
15030 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
15031 abv7 = abv2*abv4*ovaavg + abv3*abv5
15039 lam3d = lam3d + drw*fsd
15042 abv6d = abv6d + wavg*fsd
15044 abv7d = abv7d + sz*fsd
15046 lam3d = lam3d + drv*fsd
15049 abv6d = abv6d + vavg*fsd
15051 abv7d = abv7d + sy*fsd
15053 lam3d = lam3d + dru*fsd
15056 abv6d = abv6d + uavg*fsd
15058 abv7d = abv7d + sx*fsd
15060 abv6d = abv6d + fsd
15061 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
15062 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
15063 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
15064 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
15065 lam3d = lam3d + dr*fsd - abv3d
15066 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
15067 ova2avgd = abv3*abv4*abv6d
15068 sxd = sxd + dru*abv5d
15069 syd = syd + drv*abv5d
15070 szd = szd + drw*abv5d
15071 unavgd = unavgd - dr*abv5d
15073 gm1 = gammaavg -
one
15075 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
15076 call popreal8(abv4)
15078 drd = lam3*fsd + alphaavg*tempd0 - unavg*abv5d
15079 drud = drud + sx*abv5d - uavg*tempd0
15080 drvd = drvd + sy*abv5d - vavg*tempd0
15081 drwd = drwd + sz*abv5d - wavg*tempd0
15082 drkd = -(gm53*abv4d)
15083 alphaavgd = dr*tempd0
15084 uavgd = uavgd - dru*tempd0
15085 vavgd = vavgd - drv*tempd0
15086 dred = dred + tempd0
15087 wavgd = wavgd - drw*tempd0
15088 call popreal8(abv3)
15090 call popreal8(abv2)
15093 call popreal8(lam3)
15094 call popreal8(lam2)
15095 call popreal8(lam1)
15096 aread = lam3*lam3d + lam2*lam2d + lam1*lam1d
15100 call popcontrol1b(branch)
15101 if (branch .eq. 0)
then
15102 rradd = epsshear*lam3d
15107 call popcontrol1b(branch)
15108 if (branch .eq. 0)
then
15109 rradd = rradd + epsacoustic*lam2d
15112 call popcontrol1b(branch)
15113 if (branch .eq. 0)
then
15114 rradd = rradd + epsacoustic*lam1d
15117 lam3d = lam3d + rradd
15119 call popcontrol1b(branch)
15120 if (branch .eq. 0)
then
15121 call popreal8(lam3)
15122 unavgd = unavgd + lam3d
15123 sfaced = sfaced - lam3d
15125 call popreal8(lam3)
15126 sfaced = sfaced + lam3d
15127 unavgd = unavgd - lam3d
15129 call popcontrol1b(branch)
15130 if (branch .eq. 0)
then
15131 unavgd = unavgd + lam2d
15132 sfaced = sfaced - lam2d
15133 aavgd = aavgd - lam2d
15135 sfaced = sfaced + lam2d
15136 unavgd = unavgd - lam2d
15137 aavgd = aavgd + lam2d
15139 call popcontrol1b(branch)
15140 if (branch .eq. 0)
then
15141 unavgd = unavgd + lam1d
15142 sfaced = sfaced - lam1d
15143 aavgd = aavgd + lam1d
15145 sfaced = sfaced + lam1d
15146 unavgd = unavgd - lam1d
15147 aavgd = aavgd - lam1d
15150 call popcontrol1b(branch)
15151 if (branch .eq. 0)
then
15155 tmpd =
sfacej(i, j, k)*sfaced
15158 alphaavgd = alphaavgd + havgd
15159 tempd0 =
half*alphaavgd
15161 aavgd = aavgd -
one*ovaavgd/aavg**2
15162 if (a2avg .eq. 0.0_8)
then
15163 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
15165 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 +&
15168 uavgd = uavgd + sx*unavgd + 2*uavg*tempd0
15169 sxd = sxd + uavg*unavgd
15170 vavgd = vavgd + sy*unavgd + 2*vavg*tempd0
15171 syd = syd + vavg*unavgd
15172 wavgd = wavgd + sz*unavgd + 2*wavg*tempd0
15173 szd = szd + wavg*unavgd
15174 call popreal8(aavg)
15175 call popreal8(havg)
15176 kavgd = -(gm53*ovgm1*havgd)
15180 tmpd = tmpd + sz*szd + sy*syd + sx*sxd
15184 max2d = -(
one*tmpd/max2**2)
15185 call popcontrol1b(branch)
15186 if (branch .eq. 0)
then
15187 call popreal8(max2)
15188 aread = aread + max2d
15190 call popreal8(max2)
15192 call popreal8(area)
15193 if (sx**2 + sy**2 + sz**2 .eq. 0.0_8)
then
15196 tempd0 = aread/(2.0*sqrt(sx**2+sy**2+sz**2))
15198 sxd = sxd + 2*sx*tempd0
15199 syd = syd + 2*sy*tempd0
15200 szd = szd + 2*sz*tempd0
15202 sjd(i, j, k, 3) =
sjd(i, j, k, 3) + szd
15204 sjd(i, j, k, 2) =
sjd(i, j, k, 2) + syd
15206 sjd(i, j, k, 1) =
sjd(i, j, k, 1) + sxd
15207 call popreal8(a2avg)
15208 temp2 =
w(i, j+1, k,
irho)
15209 temp0 =
w(i, j, k,
irho)
15210 tempd1 =
gamma(i, j+1, k)*
half*a2avgd/temp2
15211 tempd2 =
gamma(i, j, k)*
half*a2avgd/temp0
15212 pd(i, j, k) =
pd(i, j, k) + tempd2
15213 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd2/&
15215 pd(i, j+1, k) =
pd(i, j+1, k) + tempd1
15224 call popcontrol1b(branch)
15225 if (branch .eq. 0)
then
15243 dis2d = dis2d + ddw*dred
15249 dis2d = dis2d + ddw*drwd
15259 dis2d = dis2d + ddw*drvd
15269 dis2d = dis2d + ddw*drud
15279 dis2d = dis2d + ddw*drd
15284 call popreal8(dis2)
15285 min2d = fis2*ppor*dis2d
15286 call popcontrol1b(branch)
15287 if (branch .eq. 0)
then
15292 call popcontrol1b(branch)
15293 if (branch .eq. 0)
then
15299 call popreal8(ppor)
15300 call popcontrol1b(branch)
15301 if (branch .eq. 0)
then
15307 & , k)+
shocksensor(i, j, k)) + oneminomega*(abs4+abs10) + &
15311 call popcontrol1b(branch)
15312 if (branch .eq. 0)
then
15313 call popreal8(abs10)
15315 call popreal8(abs10)
15317 call popcontrol1b(branch)
15318 if (branch .eq. 0)
then
15319 call popreal8(abs4)
15321 call popreal8(abs4)
15324 call popcontrol1b(branch)
15325 if (branch .eq. 0)
then
15331 &
shocksensor(i, 0, k)) + oneminomega*(abs3+abs9) + plim
15334 call popcontrol1b(branch)
15335 if (branch .eq. 0)
then
15336 call popreal8(abs9)
15338 call popreal8(abs9)
15340 call popcontrol1b(branch)
15341 if (branch .eq. 0)
then
15342 call popreal8(abs3)
15344 call popreal8(abs3)
15357 unavg = uavg*sx + vavg*sy + wavg*sz
15358 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
15360 ova2avg =
one/a2avg
15361 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
15362 abv7 = abv2*abv4*ovaavg + abv3*abv5
15370 lam3d = lam3d + drw*fsd
15373 abv6d = abv6d + wavg*fsd
15375 abv7d = abv7d + sz*fsd
15377 lam3d = lam3d + drv*fsd
15380 abv6d = abv6d + vavg*fsd
15382 abv7d = abv7d + sy*fsd
15384 lam3d = lam3d + dru*fsd
15387 abv6d = abv6d + uavg*fsd
15389 abv7d = abv7d + sx*fsd
15391 abv6d = abv6d + fsd
15392 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
15393 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
15394 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
15395 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
15396 lam3d = lam3d + dr*fsd - abv3d
15397 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
15398 ova2avgd = abv3*abv4*abv6d
15399 sxd = sxd + dru*abv5d
15400 syd = syd + drv*abv5d
15401 szd = szd + drw*abv5d
15402 unavgd = unavgd - dr*abv5d
15404 gm1 = gammaavg -
one
15406 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
15407 call popreal8(abv4)
15409 drd = lam3*fsd + alphaavg*tempd0 - unavg*abv5d
15410 drud = drud + sx*abv5d - uavg*tempd0
15411 drvd = drvd + sy*abv5d - vavg*tempd0
15412 drwd = drwd + sz*abv5d - wavg*tempd0
15413 drkd = -(gm53*abv4d)
15414 alphaavgd = dr*tempd0
15415 uavgd = uavgd - dru*tempd0
15416 vavgd = vavgd - drv*tempd0
15417 dred = dred + tempd0
15418 wavgd = wavgd - drw*tempd0
15419 call popreal8(abv3)
15421 call popreal8(abv2)
15424 call popreal8(lam3)
15425 call popreal8(lam2)
15426 call popreal8(lam1)
15427 aread = lam3*lam3d + lam2*lam2d + lam1*lam1d
15431 call popcontrol1b(branch)
15432 if (branch .eq. 0)
then
15433 rradd = epsshear*lam3d
15438 call popcontrol1b(branch)
15439 if (branch .eq. 0)
then
15440 rradd = rradd + epsacoustic*lam2d
15443 call popcontrol1b(branch)
15444 if (branch .eq. 0)
then
15445 rradd = rradd + epsacoustic*lam1d
15448 lam3d = lam3d + rradd
15450 call popcontrol1b(branch)
15451 if (branch .eq. 0)
then
15452 call popreal8(lam3)
15453 unavgd = unavgd + lam3d
15454 sfaced = sfaced - lam3d
15456 call popreal8(lam3)
15457 sfaced = sfaced + lam3d
15458 unavgd = unavgd - lam3d
15460 call popcontrol1b(branch)
15461 if (branch .eq. 0)
then
15462 unavgd = unavgd + lam2d
15463 sfaced = sfaced - lam2d
15464 aavgd = aavgd - lam2d
15466 sfaced = sfaced + lam2d
15467 unavgd = unavgd - lam2d
15468 aavgd = aavgd + lam2d
15470 call popcontrol1b(branch)
15471 if (branch .eq. 0)
then
15472 unavgd = unavgd + lam1d
15473 sfaced = sfaced - lam1d
15474 aavgd = aavgd + lam1d
15476 sfaced = sfaced + lam1d
15477 unavgd = unavgd - lam1d
15478 aavgd = aavgd - lam1d
15481 call popcontrol1b(branch)
15482 if (branch .eq. 0)
then
15486 tmpd =
sfacei(i, j, k)*sfaced
15489 alphaavgd = alphaavgd + havgd
15490 tempd0 =
half*alphaavgd
15492 aavgd = aavgd -
one*ovaavgd/aavg**2
15493 if (a2avg .eq. 0.0_8)
then
15494 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
15496 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 +&
15499 uavgd = uavgd + sx*unavgd + 2*uavg*tempd0
15500 sxd = sxd + uavg*unavgd
15501 vavgd = vavgd + sy*unavgd + 2*vavg*tempd0
15502 syd = syd + vavg*unavgd
15503 wavgd = wavgd + sz*unavgd + 2*wavg*tempd0
15504 szd = szd + wavg*unavgd
15505 call popreal8(aavg)
15506 call popreal8(havg)
15507 kavgd = -(gm53*ovgm1*havgd)
15511 tmpd = tmpd + sz*szd + sy*syd + sx*sxd
15515 max1d = -(
one*tmpd/max1**2)
15516 call popcontrol1b(branch)
15517 if (branch .eq. 0)
then
15518 call popreal8(max1)
15519 aread = aread + max1d
15521 call popreal8(max1)
15523 call popreal8(area)
15524 if (sx**2 + sy**2 + sz**2 .eq. 0.0_8)
then
15527 tempd0 = aread/(2.0*sqrt(sx**2+sy**2+sz**2))
15529 sxd = sxd + 2*sx*tempd0
15530 syd = syd + 2*sy*tempd0
15531 szd = szd + 2*sz*tempd0
15533 sid(i, j, k, 3) =
sid(i, j, k, 3) + szd
15535 sid(i, j, k, 2) =
sid(i, j, k, 2) + syd
15537 sid(i, j, k, 1) =
sid(i, j, k, 1) + sxd
15538 call popreal8(a2avg)
15539 temp =
w(i+1, j, k,
irho)
15540 temp1 =
w(i, j, k,
irho)
15541 tempd =
gamma(i+1, j, k)*
half*a2avgd/temp
15542 tempd0 =
gamma(i, j, k)*
half*a2avgd/temp1
15543 pd(i, j, k) =
pd(i, j, k) + tempd0
15544 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd0/&
15546 pd(i+1, j, k) =
pd(i+1, j, k) + tempd
15555 call popcontrol1b(branch)
15556 if (branch .eq. 0)
then
15574 dis2d = dis2d + ddw*dred
15580 dis2d = dis2d + ddw*drwd
15590 dis2d = dis2d + ddw*drvd
15600 dis2d = dis2d + ddw*drud
15610 dis2d = dis2d + ddw*drd
15615 call popreal8(dis2)
15616 min1d = fis2*ppor*dis2d
15617 call popcontrol1b(branch)
15618 if (branch .eq. 0)
then
15623 call popcontrol1b(branch)
15624 if (branch .eq. 0)
then
15630 call popreal8(ppor)
15631 call popcontrol1b(branch)
15632 if (branch .eq. 0)
then
15638 & , k)+
shocksensor(i, j, k)) + oneminomega*(abs2+abs8) + &
15642 call popcontrol1b(branch)
15643 if (branch .eq. 0)
then
15644 call popreal8(abs8)
15646 call popreal8(abs8)
15648 call popcontrol1b(branch)
15649 if (branch .eq. 0)
then
15650 call popreal8(abs2)
15652 call popreal8(abs2)
15655 call popcontrol1b(branch)
15656 if (branch .eq. 0)
then
15662 &
shocksensor(0, j, k)) + oneminomega*(abs1+abs7) + plim
15665 call popcontrol1b(branch)
15666 if (branch .eq. 0)
then
15667 call popreal8(abs7)
15669 call popreal8(abs7)
15671 call popcontrol1b(branch)
15672 if (branch .eq. 0)
then
15673 call popreal8(abs1)
15675 call popreal8(abs1)
15715 real(kind=realtype),
parameter :: dpmax=0.25_realtype
15716 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
15717 real(kind=realtype),
parameter :: epsshear=0.025_realtype
15718 real(kind=realtype),
parameter :: omega=0.5_realtype
15719 real(kind=realtype),
parameter :: oneminomega=
one-omega
15723 integer(kind=inttype) :: i, j, k, ind
15724 real(kind=realtype) :: plim, sface
15725 real(kind=realtype) :: sfil, fis2, fis4
15726 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
15727 real(kind=realtype) :: ppor, rrad, dis2
15728 real(kind=realtype) :: dp1, dp2, ddw, tmp, fs
15729 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
15730 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
15731 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
15732 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
15733 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
15734 logical :: correctfork
15739 real(kind=realtype) :: x1
15740 real(kind=realtype) :: x2
15741 real(kind=realtype) :: y1
15742 real(kind=realtype) :: x3
15743 real(kind=realtype) :: x4
15744 real(kind=realtype) :: y2
15745 real(kind=realtype) :: x5
15746 real(kind=realtype) :: x6
15747 real(kind=realtype) :: y3
15748 real(kind=realtype) :: abs0
15749 real(kind=realtype) :: min1
15750 real(realtype) :: max1
15751 real(kind=realtype) :: min2
15752 real(realtype) :: max2
15753 real(kind=realtype) :: min3
15754 real(realtype) :: max3
15755 real(kind=realtype) :: abs1
15756 real(kind=realtype) :: abs2
15757 real(kind=realtype) :: abs3
15758 real(kind=realtype) :: abs4
15759 real(kind=realtype) :: abs5
15760 real(kind=realtype) :: abs6
15761 real(kind=realtype) :: abs7
15762 real(kind=realtype) :: abs8
15763 real(kind=realtype) :: abs9
15764 real(kind=realtype) :: abs10
15765 real(kind=realtype) :: abs11
15766 real(kind=realtype) :: abs12
15767 if (
rfil .ge. 0.)
then
15824 if (x1 .ge. 0.)
then
15847 if (x2 .ge. 0.)
then
15855 if (dp1 .lt. dp2)
then
15860 if (dpmax .gt. y1)
then
15865 dis2 = fis2*ppor*min1 +
sigma*fis4*ppor
15871 & )*
w(i, j, k,
ivx)
15874 & )*
w(i, j, k,
ivy)
15877 & )*
w(i, j, k,
ivz)
15885 if (correctfork)
then
15886 ddw =
w(i+1, j, k,
irho)*
w(i+1, j, k,
itu1) -
w(i, j, k, &
15897 gm1 = gammaavg -
one
15904 a2avg =
half*(
gamma(i+1, j, k)*
p(i+1, j, k)/
w(i+1, j, k, &
15906 sx =
si(i, j, k, 1)
15907 sy =
si(i, j, k, 2)
15908 sz =
si(i, j, k, 3)
15909 area = sqrt(sx**2 + sy**2 + sz**2)
15910 if (1.e-25_realtype .lt. area)
then
15913 max1 = 1.e-25_realtype
15919 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
15920 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
15922 unavg = uavg*sx + vavg*sy + wavg*sz
15924 ova2avg =
one/a2avg
15928 if (unavg - sface + aavg .ge. 0.)
then
15929 lam1 = unavg - sface + aavg
15931 lam1 = -(unavg-sface+aavg)
15933 if (unavg - sface - aavg .ge. 0.)
then
15934 lam2 = unavg - sface - aavg
15936 lam2 = -(unavg-sface-aavg)
15938 if (unavg - sface .ge. 0.)
then
15939 lam3 = unavg - sface
15941 lam3 = -(unavg-sface)
15944 if (lam1 .lt. epsacoustic*rrad)
then
15945 lam1 = epsacoustic*rrad
15949 if (lam2 .lt. epsacoustic*rrad)
then
15950 lam2 = epsacoustic*rrad
15954 if (lam3 .lt. epsshear*rrad)
then
15955 lam3 = epsshear*rrad
15966 abv1 =
half*(lam1+lam2)
15967 abv2 =
half*(lam1-lam2)
15969 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
15971 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
15972 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
15973 abv7 = abv2*abv4*ovaavg + abv3*abv5
15976 fs = lam3*dr + abv6
15980 fs = lam3*dru + uavg*abv6 + sx*abv7
15981 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fs
15984 fs = lam3*drv + vavg*abv6 + sy*abv7
15985 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fs
15988 fs = lam3*drw + wavg*abv6 + sz*abv7
15989 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fs
15992 fs = lam3*dre + havg*abv6 + unavg*abv7
16019 if (x3 .ge. 0.)
then
16041 & abs4+abs10)+plim)
16042 if (x4 .ge. 0.)
then
16050 if (dp1 .lt. dp2)
then
16055 if (dpmax .gt. y2)
then
16060 dis2 = fis2*ppor*min2 +
sigma*fis4*ppor
16066 & )*
w(i, j, k,
ivx)
16069 & )*
w(i, j, k,
ivy)
16072 & )*
w(i, j, k,
ivz)
16080 if (correctfork)
then
16081 ddw =
w(i, j+1, k,
irho)*
w(i, j+1, k,
itu1) -
w(i, j, k, &
16092 gm1 = gammaavg -
one
16099 a2avg =
half*(
gamma(i, j+1, k)*
p(i, j+1, k)/
w(i, j+1, k, &
16101 sx =
sj(i, j, k, 1)
16102 sy =
sj(i, j, k, 2)
16103 sz =
sj(i, j, k, 3)
16104 area = sqrt(sx**2 + sy**2 + sz**2)
16105 if (1.e-25_realtype .lt. area)
then
16108 max2 = 1.e-25_realtype
16114 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
16115 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
16117 unavg = uavg*sx + vavg*sy + wavg*sz
16119 ova2avg =
one/a2avg
16123 if (unavg - sface + aavg .ge. 0.)
then
16124 lam1 = unavg - sface + aavg
16126 lam1 = -(unavg-sface+aavg)
16128 if (unavg - sface - aavg .ge. 0.)
then
16129 lam2 = unavg - sface - aavg
16131 lam2 = -(unavg-sface-aavg)
16133 if (unavg - sface .ge. 0.)
then
16134 lam3 = unavg - sface
16136 lam3 = -(unavg-sface)
16139 if (lam1 .lt. epsacoustic*rrad)
then
16140 lam1 = epsacoustic*rrad
16144 if (lam2 .lt. epsacoustic*rrad)
then
16145 lam2 = epsacoustic*rrad
16149 if (lam3 .lt. epsshear*rrad)
then
16150 lam3 = epsshear*rrad
16161 abv1 =
half*(lam1+lam2)
16162 abv2 =
half*(lam1-lam2)
16164 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
16166 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
16167 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
16168 abv7 = abv2*abv4*ovaavg + abv3*abv5
16171 fs = lam3*dr + abv6
16175 fs = lam3*dru + uavg*abv6 + sx*abv7
16176 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fs
16179 fs = lam3*drv + vavg*abv6 + sy*abv7
16180 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fs
16183 fs = lam3*drw + wavg*abv6 + sz*abv7
16184 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fs
16187 fs = lam3*dre + havg*abv6 + unavg*abv7
16214 if (x5 .ge. 0.)
then
16236 & abs6+abs12)+plim)
16237 if (x6 .ge. 0.)
then
16245 if (dp1 .lt. dp2)
then
16250 if (dpmax .gt. y3)
then
16255 dis2 = fis2*ppor*min3 +
sigma*fis4*ppor
16261 & )*
w(i, j, k,
ivx)
16264 & )*
w(i, j, k,
ivy)
16267 & )*
w(i, j, k,
ivz)
16275 if (correctfork)
then
16276 ddw =
w(i, j, k+1,
irho)*
w(i, j, k+1,
itu1) -
w(i, j, k, &
16287 gm1 = gammaavg -
one
16294 a2avg =
half*(
gamma(i, j, k+1)*
p(i, j, k+1)/
w(i, j, k+1, &
16296 sx =
sk(i, j, k, 1)
16297 sy =
sk(i, j, k, 2)
16298 sz =
sk(i, j, k, 3)
16299 area = sqrt(sx**2 + sy**2 + sz**2)
16300 if (1.e-25_realtype .lt. area)
then
16303 max3 = 1.e-25_realtype
16309 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
16310 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
16312 unavg = uavg*sx + vavg*sy + wavg*sz
16314 ova2avg =
one/a2avg
16318 if (unavg - sface + aavg .ge. 0.)
then
16319 lam1 = unavg - sface + aavg
16321 lam1 = -(unavg-sface+aavg)
16323 if (unavg - sface - aavg .ge. 0.)
then
16324 lam2 = unavg - sface - aavg
16326 lam2 = -(unavg-sface-aavg)
16328 if (unavg - sface .ge. 0.)
then
16329 lam3 = unavg - sface
16331 lam3 = -(unavg-sface)
16334 if (lam1 .lt. epsacoustic*rrad)
then
16335 lam1 = epsacoustic*rrad
16339 if (lam2 .lt. epsacoustic*rrad)
then
16340 lam2 = epsacoustic*rrad
16344 if (lam3 .lt. epsshear*rrad)
then
16345 lam3 = epsshear*rrad
16356 abv1 =
half*(lam1+lam2)
16357 abv2 =
half*(lam1-lam2)
16359 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
16361 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
16362 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
16363 abv7 = abv2*abv4*ovaavg + abv3*abv5
16366 fs = lam3*dr + abv6
16370 fs = lam3*dru + uavg*abv6 + sx*abv7
16371 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fs
16374 fs = lam3*drv + vavg*abv6 + sy*abv7
16375 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fs
16378 fs = lam3*drw + wavg*abv6 + sz*abv7
16379 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fs
16382 fs = lam3*dre + havg*abv6 + unavg*abv7
subroutine riemannflux_b(left, leftd, right, rightd, flux, fluxd)
subroutine leftrightstate_b(du1, du1d, du2, du2d, du3, du3d, rotmatrix, left, leftd, right, rightd)
subroutine riemannflux(left, right, flux)
subroutine leftrightstate(du1, du2, du3, rotmatrix, left, right)
real(kind=realtype), dimension(:, :, :), pointer sfacek
integer(kind=inttype), dimension(:, :), pointer viscjminpointer
real(kind=realtype), dimension(:, :, :), pointer gamma
real(kind=realtype), dimension(:, :, :), pointer qz
real(kind=realtype), dimension(:, :, :, :), pointer fwd
real(kind=realtype), dimension(:, :, :), pointer radid
logical addgridvelocities
real(kind=realtype), dimension(:, :, :), pointer wzd
real(kind=realtype), dimension(:, :, :), pointer aad
real(kind=realtype), dimension(:, :, :), pointer radk
integer(kind=portype), dimension(:, :, :), pointer pork
integer(kind=inttype), dimension(:, :, :), pointer indfamilyj
integer(kind=inttype), dimension(:, :), pointer viscjmaxpointer
real(kind=realtype), dimension(:, :, :, :), pointer sjd
real(kind=realtype), dimension(:, :, :), pointer vxd
real(kind=realtype), dimension(:, :, :), pointer qy
real(kind=realtype), dimension(:, :, :), pointer aa
real(kind=realtype), dimension(:, :, :), pointer uz
real(kind=realtype), dimension(:, :, :, :), pointer wd
real(kind=realtype), dimension(:, :, :), pointer uzd
integer(kind=inttype), dimension(:, :, :), pointer factfamilyj
real(kind=realtype), dimension(:, :, :), pointer vold
real(kind=realtype), dimension(:, :, :), pointer qxd
integer(kind=inttype) spectralsol
real(kind=realtype), dimension(:, :, :), pointer p
real(kind=realtype), dimension(:, :, :), pointer radj
real(kind=realtype), dimension(:, :, :, :), pointer w
real(kind=realtype), dimension(:, :, :), pointer uy
integer(kind=inttype), dimension(:, :, :), pointer indfamilyk
real(kind=realtype), dimension(:, :, :), pointer sfacei
type(viscsubfacetype), dimension(:), pointer viscsubface
integer(kind=portype), dimension(:, :, :), pointer porj
real(kind=realtype), dimension(:, :, :), pointer wyd
real(kind=realtype), dimension(:, :, :), pointer revd
integer(kind=portype), dimension(:, :, :), pointer pori
real(kind=realtype), dimension(:, :, :), pointer wx
real(kind=realtype), dimension(:, :, :), pointer radjd
integer(kind=inttype) nbkglobal
integer(kind=inttype), dimension(:, :), pointer viscimaxpointer
real(kind=realtype), dimension(:, :, :, :), pointer skd
real(kind=realtype), dimension(:, :, :), pointer sfacejd
real(kind=realtype), dimension(:, :, :), pointer rlv
real(kind=realtype), dimension(:, :, :, :), pointer si
real(kind=realtype), dimension(:, :, :, :), pointer sid
real(kind=realtype), dimension(:, :, :), pointer radkd
real(kind=realtype), dimension(:, :, :, :), pointer sj
integer(kind=inttype), dimension(:, :), pointer visckminpointer
integer(kind=inttype), dimension(:, :, :), pointer factfamilyi
real(kind=realtype), dimension(:, :, :), pointer uyd
real(kind=realtype), dimension(:, :, :), pointer qx
integer(kind=inttype), dimension(:, :, :), pointer factfamilyk
real(kind=realtype), dimension(:, :, :), pointer uxd
real(kind=realtype), dimension(:, :, :), pointer vz
real(kind=realtype), dimension(:, :, :, :, :), pointer rotmatrixj
real(kind=realtype), dimension(:, :, :), pointer rev
real(kind=realtype), dimension(:, :, :), pointer qyd
real(kind=realtype), dimension(:, :, :, :), pointer dw
real(kind=realtype), dimension(:, :, :, :), pointer sk
real(kind=realtype), dimension(:, :, :), pointer ux
real(kind=realtype), dimension(:, :, :), pointer shocksensor
type(viscsubfacetype), dimension(:), pointer viscsubfaced
real(kind=realtype), dimension(:, :, :), pointer wy
real(kind=realtype), dimension(:, :, :), pointer rlvd
real(kind=realtype), dimension(:, :, :), pointer wz
real(kind=realtype), dimension(:, :, :), pointer vol
real(kind=realtype), dimension(:, :, :), pointer wxd
real(kind=realtype), dimension(:, :, :, :), pointer xd
real(kind=realtype), dimension(:, :, :), pointer sfacej
real(kind=realtype), dimension(:, :, :), pointer vy
real(kind=realtype), dimension(:, :, :, :), pointer fw
real(kind=realtype), dimension(:, :, :), pointer vx
real(kind=realtype), dimension(:, :, :), pointer radi
real(kind=realtype), dimension(:, :, :), pointer sfacekd
integer(kind=inttype), dimension(:, :, :), pointer indfamilyi
real(kind=realtype), dimension(:, :, :, :), pointer x
integer(kind=inttype), dimension(:, :), pointer visckmaxpointer
real(kind=realtype), dimension(:, :, :), pointer qzd
real(kind=realtype), dimension(:, :, :), pointer sfaceid
integer(kind=inttype), dimension(:, :), pointer visciminpointer
real(kind=realtype), dimension(:, :, :), pointer vzd
real(kind=realtype), dimension(:, :, :), pointer pd
real(kind=realtype), dimension(:, :, :), pointer vyd
real(kind=realtype), dimension(:, :, :, :, :), pointer rotmatrixi
real(kind=realtype), dimension(:, :, :, :), pointer dwd
real(kind=realtype), dimension(:, :, :, :, :), pointer rotmatrixk
type(cgnsblockinfotype), dimension(:), allocatable cgnsdoms
real(kind=realtype), dimension(:, :), allocatable massflowfamilydiss
real(kind=realtype), dimension(:, :), allocatable massflowfamilyinv
integer(kind=inttype), parameter roe
integer(kind=inttype), parameter vanleer
integer(kind=inttype), parameter firstorder
real(kind=realtype), parameter zero
real(kind=realtype), parameter three
real(kind=realtype), parameter third
real(kind=realtype), parameter thresholdreal
integer(kind=inttype), parameter ausmdv
real(kind=realtype), parameter eighth
integer(kind=inttype), parameter turkel
integer(kind=inttype), parameter choimerkle
integer(kind=inttype), parameter vanalbeda
integer(kind=portype), parameter boundflux
integer(kind=portype), parameter noflux
integer(kind=inttype), parameter eulerequations
integer(kind=portype), parameter normalflux
real(kind=realtype), parameter five
integer(kind=inttype), parameter noprecond
real(kind=realtype), parameter one
real(kind=realtype), parameter half
integer(kind=inttype), parameter steady
real(kind=realtype), parameter two
integer(kind=inttype), parameter minmod
real(kind=realtype), parameter fourth
integer(kind=inttype), parameter nolimiter
integer(kind=inttype), parameter nsequations
integer(kind=inttype), parameter ransequations
subroutine etot_b(rho, rhod, u, ud, v, vd, w, wd, p, pd, k, kd, etotal, etotald, correctfork)
subroutine etot(rho, u, v, w, p, k, etotal, correctfork)
real(kind=realtype) gammainf
real(kind=realtype) rhoinfd
real(kind=realtype) pinfcorr
real(kind=realtype) pinfcorrd
real(kind=realtype) trefd
real(kind=realtype) rgasd
integer(kind=inttype) nwf
real(kind=realtype) rhoinf
real(kind=realtype) timeref
real(kind=realtype) timerefd
subroutine invisciddissfluxmatrix_b()
subroutine inviscidcentralflux_b()
subroutine inviscidcentralflux()
subroutine invisciddissfluxmatrixapprox_b()
subroutine viscousfluxapprox_b()
subroutine viscousfluxapprox()
subroutine inviscidupwindflux_b(finegrid)
subroutine invisciddissfluxmatrixapprox()
subroutine invisciddissfluxscalarapprox()
subroutine invisciddissfluxscalarapprox_b()
subroutine invisciddissfluxmatrix()
subroutine invisciddissfluxscalar()
subroutine viscousflux_b()
subroutine inviscidupwindflux(finegrid)
subroutine invisciddissfluxscalar_b()
real(kind=realtype) totalr0
integer(kind=inttype) currentlevel
real(kind=realtype) totalr
integer(kind=inttype) groundlevel
integer(kind=inttype) rkstage
real(kind=realtype) function mydim(x, y)
logical function getcorrectfork()
subroutine terminate(routinename, errormessage)
subroutine mydim_b(x, xd, y, yd, mydimd)