21 use blockpointers,
only :
nx,
il,
ie,
ny,
jl,
je,
nz,
kl,
ke,&
22 &
spectralsol,
w,
wd,
si,
sj,
sk,
dw,
dwd,
pori,
porj,
pork, &
33 integer(kind=inttype) :: i, j, k, ind, ii
34 real(kind=realtype) :: qsp, qsm, rqsp, rqsm, porvel, porflux
35 real(kind=realtype) :: qspd, qsmd, rqspd, rqsmd
36 real(kind=realtype) :: pa, fs, sface, vnp, vnm
37 real(kind=realtype) :: pad, fsd, vnpd, vnmd
38 real(kind=realtype) :: wwx, wwy, wwz, rvol
39 real(kind=realtype) :: rvold
41 real(kind=realtype) :: tempd
51 j = mod(ii/
nx,
ny) + 2
54 rvold = (wwx*
w(i, j, k,
ivy)-wwy*
w(i, j, k,
ivx))*
dwd(i, j, k, &
60 & - wwy*rvol*
dwd(i, j, k,
imz)
62 & - wwx*rvol*
dwd(i, j, k,
imy)
71 j = mod(ii/
nx,
ny) + 2
77 vnp =
w(i, j, k+1,
ivx)*
sk(i, j, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j&
78 & , k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 3)
79 vnm =
w(i, j, k,
ivx)*
sk(i, j, k, 1) +
w(i, j, k,
ivy)*
sk(i, j, k&
80 & , 2) +
w(i, j, k,
ivz)*
sk(i, j, k, 3)
104 porvel = porvel*porflux
107 qsp = (vnp-sface)*porvel
108 qsm = (vnm-sface)*porvel
109 rqsp = qsp*
w(i, j, k+1,
irho)
110 rqsm = qsm*
w(i, j, k,
irho)
118 qspd =
w(i, j, k+1,
irhoe)*fsd
120 qsmd =
w(i, j, k,
irhoe)*fsd
124 rqspd =
w(i, j, k+1,
ivz)*fsd
125 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) + rqsp*fsd
126 rqsmd =
w(i, j, k,
ivz)*fsd
127 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + rqsm*fsd
128 pad =
sk(i, j, k, 3)*fsd
130 rqspd = rqspd +
w(i, j, k+1,
ivy)*fsd
131 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) + rqsp*fsd
132 rqsmd = rqsmd +
w(i, j, k,
ivy)*fsd
133 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + rqsm*fsd
134 pad = pad +
sk(i, j, k, 2)*fsd
136 rqspd = rqspd +
w(i, j, k+1,
ivx)*fsd
137 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) + rqsp*fsd
138 rqsmd = rqsmd +
w(i, j, k,
ivx)*fsd
139 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + rqsm*fsd
140 pad = pad +
sk(i, j, k, 1)*fsd
141 pd(i, j, k) =
pd(i, j, k) + vnm*tempd + porflux*pad
142 pd(i, j, k+1) =
pd(i, j, k+1) + vnp*tempd + porflux*pad
146 qsmd = qsmd +
w(i, j, k,
irho)*rqsmd
147 vnmd =
p(i, j, k)*tempd + porvel*qsmd
149 qspd = qspd +
w(i, j, k+1,
irho)*rqspd
150 vnpd =
p(i, j, k+1)*tempd + porvel*qspd
154 if (branch .eq. 0)
then
158 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) +
sk(i, j, k, 1)*vnmd
159 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) +
sk(i, j, k, 2)*vnmd
160 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) +
sk(i, j, k, 3)*vnmd
161 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) +
sk(i, j, k, 1)*vnpd
162 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) +
sk(i, j, k, 2)*vnpd
163 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) +
sk(i, j, k, 3)*vnpd
169 j = mod(ii/
nx,
jl) + 1
175 vnp =
w(i, j+1, k,
ivx)*
sj(i, j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j&
176 & , k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 3)
177 vnm =
w(i, j, k,
ivx)*
sj(i, j, k, 1) +
w(i, j, k,
ivy)*
sj(i, j, k&
178 & , 2) +
w(i, j, k,
ivz)*
sj(i, j, k, 3)
202 porvel = porvel*porflux
205 qsp = (vnp-sface)*porvel
206 qsm = (vnm-sface)*porvel
207 rqsp = qsp*
w(i, j+1, k,
irho)
208 rqsm = qsm*
w(i, j, k,
irho)
216 qspd =
w(i, j+1, k,
irhoe)*fsd
218 qsmd =
w(i, j, k,
irhoe)*fsd
222 rqspd =
w(i, j+1, k,
ivz)*fsd
223 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) + rqsp*fsd
224 rqsmd =
w(i, j, k,
ivz)*fsd
225 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + rqsm*fsd
226 pad =
sj(i, j, k, 3)*fsd
228 rqspd = rqspd +
w(i, j+1, k,
ivy)*fsd
229 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) + rqsp*fsd
230 rqsmd = rqsmd +
w(i, j, k,
ivy)*fsd
231 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + rqsm*fsd
232 pad = pad +
sj(i, j, k, 2)*fsd
234 rqspd = rqspd +
w(i, j+1, k,
ivx)*fsd
235 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) + rqsp*fsd
236 rqsmd = rqsmd +
w(i, j, k,
ivx)*fsd
237 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + rqsm*fsd
238 pad = pad +
sj(i, j, k, 1)*fsd
239 pd(i, j, k) =
pd(i, j, k) + vnm*tempd + porflux*pad
240 pd(i, j+1, k) =
pd(i, j+1, k) + vnp*tempd + porflux*pad
244 qsmd = qsmd +
w(i, j, k,
irho)*rqsmd
245 vnmd =
p(i, j, k)*tempd + porvel*qsmd
247 qspd = qspd +
w(i, j+1, k,
irho)*rqspd
248 vnpd =
p(i, j+1, k)*tempd + porvel*qspd
252 if (branch .eq. 0)
then
256 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) +
sj(i, j, k, 1)*vnmd
257 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) +
sj(i, j, k, 2)*vnmd
258 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) +
sj(i, j, k, 3)*vnmd
259 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) +
sj(i, j, k, 1)*vnpd
260 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) +
sj(i, j, k, 2)*vnpd
261 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) +
sj(i, j, k, 3)*vnpd
269 j = mod(ii/
il,
ny) + 2
275 vnp =
w(i+1, j, k,
ivx)*
si(i, j, k, 1) +
w(i+1, j, k,
ivy)*
si(i, j&
276 & , k, 2) +
w(i+1, j, k,
ivz)*
si(i, j, k, 3)
277 vnm =
w(i, j, k,
ivx)*
si(i, j, k, 1) +
w(i, j, k,
ivy)*
si(i, j, k&
278 & , 2) +
w(i, j, k,
ivz)*
si(i, j, k, 3)
302 porvel = porvel*porflux
305 qsp = (vnp-sface)*porvel
306 qsm = (vnm-sface)*porvel
307 rqsp = qsp*
w(i+1, j, k,
irho)
308 rqsm = qsm*
w(i, j, k,
irho)
316 qspd =
w(i+1, j, k,
irhoe)*fsd
318 qsmd =
w(i, j, k,
irhoe)*fsd
322 rqspd =
w(i+1, j, k,
ivz)*fsd
323 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) + rqsp*fsd
324 rqsmd =
w(i, j, k,
ivz)*fsd
325 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + rqsm*fsd
326 pad =
si(i, j, k, 3)*fsd
328 rqspd = rqspd +
w(i+1, j, k,
ivy)*fsd
329 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) + rqsp*fsd
330 rqsmd = rqsmd +
w(i, j, k,
ivy)*fsd
331 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + rqsm*fsd
332 pad = pad +
si(i, j, k, 2)*fsd
334 rqspd = rqspd +
w(i+1, j, k,
ivx)*fsd
335 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) + rqsp*fsd
336 rqsmd = rqsmd +
w(i, j, k,
ivx)*fsd
337 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + rqsm*fsd
338 pad = pad +
si(i, j, k, 1)*fsd
339 pd(i, j, k) =
pd(i, j, k) + vnm*tempd + porflux*pad
340 pd(i+1, j, k) =
pd(i+1, j, k) + vnp*tempd + porflux*pad
344 qsmd = qsmd +
w(i, j, k,
irho)*rqsmd
345 vnmd =
p(i, j, k)*tempd + porvel*qsmd
347 qspd = qspd +
w(i+1, j, k,
irho)*rqspd
348 vnpd =
p(i+1, j, k)*tempd + porvel*qspd
352 if (branch .eq. 0)
then
356 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) +
si(i, j, k, 1)*vnmd
357 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) +
si(i, j, k, 2)*vnmd
358 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) +
si(i, j, k, 3)*vnmd
359 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) +
si(i, j, k, 1)*vnpd
360 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) +
si(i, j, k, 2)*vnpd
361 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) +
si(i, j, k, 3)*vnpd
373 use blockpointers,
only :
nx,
il,
ie,
ny,
jl,
je,
nz,
kl,
ke,&
374 &
spectralsol,
w,
si,
sj,
sk,
dw,
pori,
porj,
pork,
indfamilyi, &
385 integer(kind=inttype) :: i, j, k, ind, ii
386 real(kind=realtype) :: qsp, qsm, rqsp, rqsm, porvel, porflux
387 real(kind=realtype) :: pa, fs, sface, vnp, vnm
388 real(kind=realtype) :: wwx, wwy, wwz, rvol
400 j = mod(ii/
il,
ny) + 2
406 vnp =
w(i+1, j, k,
ivx)*
si(i, j, k, 1) +
w(i+1, j, k,
ivy)*
si(i, j&
407 & , k, 2) +
w(i+1, j, k,
ivz)*
si(i, j, k, 3)
408 vnm =
w(i, j, k,
ivx)*
si(i, j, k, 1) +
w(i, j, k,
ivy)*
si(i, j, k&
409 & , 2) +
w(i, j, k,
ivz)*
si(i, j, k, 3)
428 porvel = porvel*porflux
431 qsp = (vnp-sface)*porvel
432 qsm = (vnm-sface)*porvel
433 rqsp = qsp*
w(i+1, j, k,
irho)
434 rqsm = qsm*
w(i, j, k,
irho)
438 pa = porflux*(
p(i+1, j, k)+
p(i, j, k))
445 fs = rqsp*
w(i+1, j, k,
ivx) + rqsm*
w(i, j, k,
ivx) + pa*
si(i, j, k&
449 fs = rqsp*
w(i+1, j, k,
ivy) + rqsm*
w(i, j, k,
ivy) + pa*
si(i, j, k&
453 fs = rqsp*
w(i+1, j, k,
ivz) + rqsm*
w(i, j, k,
ivz) + pa*
si(i, j, k&
457 fs = qsp*
w(i+1, j, k,
irhoe) + qsm*
w(i, j, k,
irhoe) + porflux*(&
458 & vnp*
p(i+1, j, k)+vnm*
p(i, j, k))
472 j = mod(ii/
nx,
jl) + 1
478 vnp =
w(i, j+1, k,
ivx)*
sj(i, j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j&
479 & , k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 3)
480 vnm =
w(i, j, k,
ivx)*
sj(i, j, k, 1) +
w(i, j, k,
ivy)*
sj(i, j, k&
481 & , 2) +
w(i, j, k,
ivz)*
sj(i, j, k, 3)
500 porvel = porvel*porflux
503 qsp = (vnp-sface)*porvel
504 qsm = (vnm-sface)*porvel
505 rqsp = qsp*
w(i, j+1, k,
irho)
506 rqsm = qsm*
w(i, j, k,
irho)
510 pa = porflux*(
p(i, j+1, k)+
p(i, j, k))
517 fs = rqsp*
w(i, j+1, k,
ivx) + rqsm*
w(i, j, k,
ivx) + pa*
sj(i, j, k&
521 fs = rqsp*
w(i, j+1, k,
ivy) + rqsm*
w(i, j, k,
ivy) + pa*
sj(i, j, k&
525 fs = rqsp*
w(i, j+1, k,
ivz) + rqsm*
w(i, j, k,
ivz) + pa*
sj(i, j, k&
529 fs = qsp*
w(i, j+1, k,
irhoe) + qsm*
w(i, j, k,
irhoe) + porflux*(&
530 & vnp*
p(i, j+1, k)+vnm*
p(i, j, k))
543 j = mod(ii/
nx,
ny) + 2
549 vnp =
w(i, j, k+1,
ivx)*
sk(i, j, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j&
550 & , k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 3)
551 vnm =
w(i, j, k,
ivx)*
sk(i, j, k, 1) +
w(i, j, k,
ivy)*
sk(i, j, k&
552 & , 2) +
w(i, j, k,
ivz)*
sk(i, j, k, 3)
571 porvel = porvel*porflux
574 qsp = (vnp-sface)*porvel
575 qsm = (vnm-sface)*porvel
576 rqsp = qsp*
w(i, j, k+1,
irho)
577 rqsm = qsm*
w(i, j, k,
irho)
581 pa = porflux*(
p(i, j, k+1)+
p(i, j, k))
588 fs = rqsp*
w(i, j, k+1,
ivx) + rqsm*
w(i, j, k,
ivx) + pa*
sk(i, j, k&
592 fs = rqsp*
w(i, j, k+1,
ivy) + rqsm*
w(i, j, k,
ivy) + pa*
sk(i, j, k&
596 fs = rqsp*
w(i, j, k+1,
ivz) + rqsm*
w(i, j, k,
ivz) + pa*
sk(i, j, k&
600 fs = qsp*
w(i, j, k+1,
irhoe) + qsm*
w(i, j, k,
irhoe) + porflux*(&
601 & vnp*
p(i, j, k+1)+vnm*
p(i, j, k))
624 j = mod(ii/
nx,
ny) + 2
626 rvol =
w(i, j, k,
irho)*
vol(i, j, k)
628 & wwz*
w(i, j, k,
ivy))
630 & wwx*
w(i, j, k,
ivz))
632 & wwy*
w(i, j, k,
ivx))
654 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,&
655 &
ib,
jb,
kb,
w,
wd,
p,
pd,
pori,
porj,
pork,
fw,
fwd,
gamma,
si,
sj, &
669 real(kind=realtype),
parameter :: dpmax=0.25_realtype
670 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
671 real(kind=realtype),
parameter :: epsshear=0.025_realtype
672 real(kind=realtype),
parameter :: omega=0.5_realtype
673 real(kind=realtype),
parameter :: oneminomega=
one-omega
677 integer(kind=inttype) :: i, j, k, ind, ii
678 real(kind=realtype) :: plim, sface
679 real(kind=realtype) :: sfil, fis2, fis4
680 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
681 real(kind=realtype) :: ppor, rrad, dis2, dis4
682 real(kind=realtype) :: rradd, dis2d, dis4d
683 real(kind=realtype) :: dp1, dp2, tmp, fs
684 real(kind=realtype) :: fsd
685 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, ddw6
686 real(kind=realtype) :: ddw1d, ddw2d, ddw3d, ddw4d, ddw5d, ddw6d
687 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
688 real(kind=realtype) :: drd, drud, drvd, drwd, dred, drkd
689 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
690 real(kind=realtype) :: uavgd, vavgd, wavgd, a2avgd, aavgd, havgd
691 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
692 real(kind=realtype) :: alphaavgd, unavgd, ovaavgd, ova2avgd
693 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
694 real(kind=realtype) :: kavgd, lam1d, lam2d, lam3d
695 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
696 real(kind=realtype) :: abv1d, abv2d, abv3d, abv4d, abv5d, abv6d, &
698 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
699 real(kind=realtype),
dimension(ie, je, ke, 3) :: dssd
700 logical :: correctfork
706 real(kind=realtype) :: x1
707 real(kind=realtype) :: x1d
708 real(kind=realtype) :: x2
709 real(kind=realtype) :: x2d
710 real(kind=realtype) :: x3
711 real(kind=realtype) :: x3d
712 real(kind=realtype) :: y1
713 real(kind=realtype) :: y1d
714 real(kind=realtype) :: y2
715 real(kind=realtype) :: y2d
716 real(kind=realtype) :: y3
717 real(kind=realtype) :: y3d
718 real(kind=realtype) :: abs0
719 real(kind=realtype) :: min1
720 real(kind=realtype) :: min1d
721 real(realtype) :: max1
722 real(kind=realtype) :: max2
723 real(kind=realtype) :: max2d
724 real(kind=realtype) :: max3
725 real(kind=realtype) :: max3d
726 real(kind=realtype) :: max4
727 real(kind=realtype) :: max4d
728 real(kind=realtype) :: min2
729 real(kind=realtype) :: min2d
730 real(realtype) :: max5
731 real(kind=realtype) :: max6
732 real(kind=realtype) :: max6d
733 real(kind=realtype) :: max7
734 real(kind=realtype) :: max7d
735 real(kind=realtype) :: max8
736 real(kind=realtype) :: max8d
737 real(kind=realtype) :: min3
738 real(kind=realtype) :: min3d
739 real(realtype) :: max9
740 real(kind=realtype) :: max10
741 real(kind=realtype) :: max10d
742 real(kind=realtype) :: max11
743 real(kind=realtype) :: max11d
744 real(kind=realtype) :: max12
745 real(kind=realtype) :: max12d
746 real(kind=realtype) :: abs1
747 real(kind=realtype) :: abs1d
748 real(kind=realtype) :: abs2
749 real(kind=realtype) :: abs2d
750 real(kind=realtype) :: abs3
751 real(kind=realtype) :: abs3d
752 real(kind=realtype) :: abs4
753 real(kind=realtype) :: abs4d
754 real(kind=realtype) :: abs5
755 real(kind=realtype) :: abs5d
756 real(kind=realtype) :: abs6
757 real(kind=realtype) :: abs6d
758 real(kind=realtype) :: arg1
759 real(kind=realtype) :: arg1d
760 real(kind=realtype) :: temp
761 real(kind=realtype) :: temp0
762 real(kind=realtype) :: tempd
763 real(kind=realtype) :: tempd0
764 real(kind=realtype) :: temp1
765 real(kind=realtype) :: tempd1
767 real(kind=realtype) :: temp2
768 real(kind=realtype) :: temp3
769 real(kind=realtype) :: tempd2
770 real(kind=realtype) :: tempd3
771 if (
rfil .ge. 0.)
then
799 j = mod(ii/
ie,
je) + 1
801 if (
p(i+1, j, k) -
p(i, j, k) .ge. 0.)
then
802 abs1 =
p(i+1, j, k) -
p(i, j, k)
804 abs1 = -(
p(i+1, j, k)-
p(i, j, k))
806 if (
p(i, j, k) -
p(i-1, j, k) .ge. 0.)
then
807 abs4 =
p(i, j, k) -
p(i-1, j, k)
809 abs4 = -(
p(i, j, k)-
p(i-1, j, k))
811 x1 = (
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))/(omega*(
p(i+1, j&
812 & , k)+
two*
p(i, j, k)+
p(i-1, j, k))+oneminomega*(abs1+abs4)+plim&
817 dss(i, j, k, 1) = -x1
819 if (
p(i, j+1, k) -
p(i, j, k) .ge. 0.)
then
820 abs2 =
p(i, j+1, k) -
p(i, j, k)
822 abs2 = -(
p(i, j+1, k)-
p(i, j, k))
824 if (
p(i, j, k) -
p(i, j-1, k) .ge. 0.)
then
825 abs5 =
p(i, j, k) -
p(i, j-1, k)
827 abs5 = -(
p(i, j, k)-
p(i, j-1, k))
829 x2 = (
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))/(omega*(
p(i, j+1&
830 & , k)+
two*
p(i, j, k)+
p(i, j-1, k))+oneminomega*(abs2+abs5)+plim&
835 dss(i, j, k, 2) = -x2
837 if (
p(i, j, k+1) -
p(i, j, k) .ge. 0.)
then
838 abs3 =
p(i, j, k+1) -
p(i, j, k)
840 abs3 = -(
p(i, j, k+1)-
p(i, j, k))
842 if (
p(i, j, k) -
p(i, j, k-1) .ge. 0.)
then
843 abs6 =
p(i, j, k) -
p(i, j, k-1)
845 abs6 = -(
p(i, j, k)-
p(i, j, k-1))
847 x3 = (
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))/(omega*(
p(i, j, &
848 & k+1)+
two*
p(i, j, k)+
p(i, j, k-1))+oneminomega*(abs3+abs6)+plim&
853 dss(i, j, k, 3) = -x3
862 j = mod(ii/
il,
ny) + 2
867 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
868 y1 = dss(i+1, j, k, 1)
872 if (dpmax .gt. y1)
then
877 dis2 = ppor*fis2*min1
879 dis4 =
mydim(arg1, dis2)
883 dr = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
887 dru = dis2*ddw2 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivx)-
w(i&
891 drv = dis2*ddw3 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivy)-
w(i&
895 drw = dis2*ddw4 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivz)-
w(i&
898 dre = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)-
w(i-1, j, k,
irhoe)-&
904 if (correctfork)
then
907 drk = dis2*ddw6 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
itu1)-&
926 area = sqrt(
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 +
si(i, j, k, &
928 if (1.e-25_realtype .lt. area)
then
931 max1 = 1.e-25_realtype
934 sx =
si(i, j, k, 1)*tmp
935 sy =
si(i, j, k, 2)*tmp
936 sz =
si(i, j, k, 3)*tmp
937 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
938 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
940 unavg = uavg*sx + vavg*sy + wavg*sz
946 if (unavg - sface + aavg .ge. 0.)
then
947 lam1 = unavg - sface + aavg
949 lam1 = -(unavg-sface+aavg)
951 if (unavg - sface - aavg .ge. 0.)
then
952 lam2 = unavg - sface - aavg
954 lam2 = -(unavg-sface-aavg)
956 if (unavg - sface .ge. 0.)
then
959 lam3 = -(unavg-sface)
962 if (lam1 .lt. epsacoustic*rrad)
then
963 max2 = epsacoustic*rrad
970 if (lam2 .lt. epsacoustic*rrad)
then
971 max3 = epsacoustic*rrad
976 if (lam3 .lt. epsshear*rrad)
then
984 abv1 =
half*(lam1+lam2)
985 abv2 =
half*(lam1-lam2)
987 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
989 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
990 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
991 abv7 = abv2*abv4*ovaavg + abv3*abv5
998 fs = lam3*dru + uavg*abv6 + sx*abv7
1002 fs = lam3*drv + vavg*abv6 + sy*abv7
1006 fs = lam3*drw + wavg*abv6 + sz*abv7
1010 fs = lam3*dre + havg*abv6 + unavg*abv7
1020 j = mod(ii/
nx,
jl) + 1
1025 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
1026 y2 = dss(i, j+1, k, 2)
1028 y2 = dss(i, j, k, 2)
1030 if (dpmax .gt. y2)
then
1035 dis2 = ppor*fis2*min2
1037 dis4 =
mydim(arg1, dis2)
1041 dr = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
1045 dru = dis2*ddw2 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivx)-
w(i&
1049 drv = dis2*ddw3 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivy)-
w(i&
1053 drw = dis2*ddw4 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivz)-
w(i&
1056 dre = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)-
w(i, j-1, k,
irhoe)-&
1062 if (correctfork)
then
1064 & )*
w(i, j, k,
itu1)
1065 drk = dis2*ddw6 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
itu1)-&
1075 gm1 = gammaavg -
one
1084 area = sqrt(
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 +
sj(i, j, k, &
1086 if (1.e-25_realtype .lt. area)
then
1089 max5 = 1.e-25_realtype
1092 sx =
sj(i, j, k, 1)*tmp
1093 sy =
sj(i, j, k, 2)*tmp
1094 sz =
sj(i, j, k, 3)*tmp
1095 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1096 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1098 unavg = uavg*sx + vavg*sy + wavg*sz
1104 if (unavg - sface + aavg .ge. 0.)
then
1105 lam1 = unavg - sface + aavg
1107 lam1 = -(unavg-sface+aavg)
1109 if (unavg - sface - aavg .ge. 0.)
then
1110 lam2 = unavg - sface - aavg
1112 lam2 = -(unavg-sface-aavg)
1114 if (unavg - sface .ge. 0.)
then
1115 lam3 = unavg - sface
1117 lam3 = -(unavg-sface)
1120 if (lam1 .lt. epsacoustic*rrad)
then
1121 max6 = epsacoustic*rrad
1128 if (lam2 .lt. epsacoustic*rrad)
then
1129 max7 = epsacoustic*rrad
1134 if (lam3 .lt. epsshear*rrad)
then
1135 max8 = epsshear*rrad
1142 abv1 =
half*(lam1+lam2)
1143 abv2 =
half*(lam1-lam2)
1145 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1147 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1148 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1149 abv7 = abv2*abv4*ovaavg + abv3*abv5
1156 fs = lam3*dru + uavg*abv6 + sx*abv7
1160 fs = lam3*drv + vavg*abv6 + sy*abv7
1164 fs = lam3*drw + wavg*abv6 + sz*abv7
1168 fs = lam3*dre + havg*abv6 + unavg*abv7
1176 j = mod(ii/
nx,
ny) + 2
1181 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
1182 y3 = dss(i, j, k+1, 3)
1186 y3 = dss(i, j, k, 3)
1190 if (dpmax .gt. y3)
then
1199 dis2 = ppor*fis2*min3
1201 dis4 =
mydim(arg1, dis2)
1205 dr = dis2*ddw1 - dis4*(
w(i, j, k+2,
irho)-
w(i, j, k-1,
irho)-&
1209 dru = dis2*ddw2 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivx)-
w(i&
1213 drv = dis2*ddw3 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivy)-
w(i&
1217 drw = dis2*ddw4 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivz)-
w(i&
1220 dre = dis2*ddw5 - dis4*(
w(i, j, k+2,
irhoe)-
w(i, j, k-1,
irhoe)-&
1226 if (correctfork)
then
1228 & )*
w(i, j, k,
itu1)
1229 drk = dis2*ddw6 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
itu1)-&
1243 gm1 = gammaavg -
one
1252 area = sqrt(
sk(i, j, k, 1)**2 +
sk(i, j, k, 2)**2 +
sk(i, j, k, &
1254 if (1.e-25_realtype .lt. area)
then
1257 max9 = 1.e-25_realtype
1260 sx =
sk(i, j, k, 1)*tmp
1261 sy =
sk(i, j, k, 2)*tmp
1262 sz =
sk(i, j, k, 3)*tmp
1263 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1264 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1266 unavg = uavg*sx + vavg*sy + wavg*sz
1272 if (unavg - sface + aavg .ge. 0.)
then
1273 lam1 = unavg - sface + aavg
1277 lam1 = -(unavg-sface+aavg)
1281 if (unavg - sface - aavg .ge. 0.)
then
1282 lam2 = unavg - sface - aavg
1286 lam2 = -(unavg-sface-aavg)
1290 if (unavg - sface .ge. 0.)
then
1291 lam3 = unavg - sface
1295 lam3 = -(unavg-sface)
1300 if (lam1 .lt. epsacoustic*rrad)
then
1301 max10 = epsacoustic*rrad
1312 if (lam2 .lt. epsacoustic*rrad)
then
1313 max11 = epsacoustic*rrad
1322 if (lam3 .lt. epsshear*rrad)
then
1323 max12 = epsshear*rrad
1334 abv1 =
half*(lam1+lam2)
1335 abv2 =
half*(lam1-lam2)
1337 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1339 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1340 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1341 abv7 = abv2*abv4*ovaavg + abv3*abv5
1356 lam3d = lam3d + drw*fsd
1359 abv6d = abv6d + wavg*fsd
1360 abv7d = abv7d + sz*fsd
1362 lam3d = lam3d + drv*fsd
1365 abv6d = abv6d + vavg*fsd
1366 abv7d = abv7d + sy*fsd
1368 lam3d = lam3d + dru*fsd
1371 abv6d = abv6d + uavg*fsd
1372 abv7d = abv7d + sx*fsd
1375 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
1376 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
1377 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
1378 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
1379 lam3d = lam3d + dr*fsd - abv3d
1380 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
1381 ova2avgd = abv3*abv4*abv6d
1382 unavgd = unavgd - dr*abv5d
1384 drd = lam3*fsd + alphaavg*tempd2 - unavg*abv5d
1385 drud = drud + sx*abv5d - uavg*tempd2
1386 drvd = drvd + sy*abv5d - vavg*tempd2
1387 drwd = drwd + sz*abv5d - wavg*tempd2
1388 drkd = -(gm53*abv4d)
1389 alphaavgd = dr*tempd2
1390 uavgd = uavgd - dru*tempd2
1391 vavgd = vavgd - drv*tempd2
1392 dred = dred + tempd2
1393 wavgd = wavgd - drw*tempd2
1400 if (branch .eq. 0)
then
1401 rradd = epsshear*max12d
1410 if (branch .eq. 0)
then
1411 rradd = rradd + epsacoustic*max11d
1419 if (branch .eq. 0)
then
1420 rradd = rradd + epsacoustic*max10d
1425 lam3d = lam3d + rradd
1429 if (branch .eq. 0)
then
1430 unavgd = unavgd + lam3d
1432 unavgd = unavgd - lam3d
1436 if (branch .eq. 0)
then
1437 unavgd = unavgd + lam2d
1438 aavgd = aavgd - lam2d
1440 aavgd = aavgd + lam2d
1441 unavgd = unavgd - lam2d
1445 if (branch .eq. 0)
then
1446 unavgd = unavgd + lam1d
1447 aavgd = aavgd + lam1d
1449 unavgd = unavgd - lam1d
1450 aavgd = aavgd - lam1d
1452 alphaavgd = alphaavgd + havgd
1453 tempd2 =
half*alphaavgd
1454 aavgd = aavgd -
one*ovaavgd/aavg**2
1455 if (a2avg .eq. 0.0_8)
then
1456 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
1458 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 + &
1461 uavgd = uavgd + sx*unavgd + 2*uavg*tempd2
1462 vavgd = vavgd + sy*unavgd + 2*vavg*tempd2
1463 wavgd = wavgd + sz*unavgd + 2*wavg*tempd2
1464 kavgd = -(gm53*ovgm1*havgd)
1465 temp3 =
w(i, j, k+1,
irho)
1466 temp1 =
w(i, j, k,
irho)
1467 tempd3 =
gamma(i, j, k+1)*
half*a2avgd/temp3
1468 tempd =
gamma(i, j, k)*
half*a2avgd/temp1
1469 pd(i, j, k) =
pd(i, j, k) + tempd
1470 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd/temp1
1471 pd(i, j, k+1) =
pd(i, j, k+1) + tempd3
1472 wd(i, j, k+1,
irho) =
wd(i, j, k+1,
irho) -
p(i, j, k+1)*tempd3/&
1482 if (branch .eq. 0)
then
1486 tempd0 = -(dis4*drkd)
1489 temp3 =
w(i, j, k-1,
itu1)
1490 temp2 =
w(i, j, k-1,
irho)
1491 temp1 =
w(i, j, k+2,
itu1)
1492 temp0 =
w(i, j, k+2,
irho)
1494 ddw6d = dis2*drkd -
three*tempd0
1495 dis4d = -((temp0*temp1-temp2*temp3-
three*ddw6)*drkd)
1496 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1497 wd(i, j, k+2,
itu1) =
wd(i, j, k+2,
itu1) + temp0*tempd0
1498 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1499 wd(i, j, k-1,
itu1) =
wd(i, j, k-1,
itu1) - temp2*tempd0
1507 tempd0 = -(dis4*drwd)
1508 temp0 =
w(i, j, k+2,
irho)
1509 temp1 =
w(i, j, k+2,
ivz)
1510 temp2 =
w(i, j, k-1,
irho)
1511 temp3 =
w(i, j, k-1,
ivz)
1512 tempd2 = -(dis4*dred)
1513 dis2d = dis2d + ddw5*dred + ddw4*drwd + ddw3*drvd + ddw2*drud + &
1515 ddw5d = dis2*dred -
three*tempd2
1517 & ddw5)*dred - (temp0*temp1-temp2*temp3-
three*ddw4)*drwd
1522 ddw4d = dis2*drwd -
three*tempd0
1523 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1524 wd(i, j, k+2,
ivz) =
wd(i, j, k+2,
ivz) + temp0*tempd0
1525 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1526 wd(i, j, k-1,
ivz) =
wd(i, j, k-1,
ivz) - temp2*tempd0
1533 temp3 =
w(i, j, k-1,
ivy)
1534 temp2 =
w(i, j, k-1,
irho)
1535 temp1 =
w(i, j, k+2,
ivy)
1536 temp0 =
w(i, j, k+2,
irho)
1537 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*drvd
1538 tempd0 = -(dis4*drvd)
1539 ddw3d = dis2*drvd -
three*tempd0
1540 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1541 wd(i, j, k+2,
ivy) =
wd(i, j, k+2,
ivy) + temp0*tempd0
1542 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1543 wd(i, j, k-1,
ivy) =
wd(i, j, k-1,
ivy) - temp2*tempd0
1550 temp3 =
w(i, j, k-1,
ivx)
1551 temp2 =
w(i, j, k-1,
irho)
1552 temp1 =
w(i, j, k+2,
ivx)
1553 temp0 =
w(i, j, k+2,
irho)
1554 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*drud - (
w(i&
1556 tempd0 = -(dis4*drud)
1557 ddw2d = dis2*drud -
three*tempd0
1558 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp1*tempd0
1559 wd(i, j, k+2,
ivx) =
wd(i, j, k+2,
ivx) + temp0*tempd0
1560 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp3*tempd0
1561 wd(i, j, k-1,
ivx) =
wd(i, j, k-1,
ivx) - temp2*tempd0
1568 tempd2 = -(dis4*drd)
1569 ddw1d = dis2*drd -
three*tempd2
1575 min3d = ppor*fis2*dis2d
1578 if (branch .eq. 0)
then
1585 if (branch .eq. 0)
then
1586 dssd(i, j, k+1, 3) = dssd(i, j, k+1, 3) + y3d
1588 dssd(i, j, k, 3) = dssd(i, j, k, 3) + y3d
1594 j = mod(ii/
nx,
jl) + 1
1599 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
1600 y2 = dss(i, j+1, k, 2)
1604 y2 = dss(i, j, k, 2)
1608 if (dpmax .gt. y2)
then
1617 dis2 = ppor*fis2*min2
1619 dis4 =
mydim(arg1, dis2)
1623 dr = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
1627 dru = dis2*ddw2 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivx)-
w(i&
1631 drv = dis2*ddw3 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivy)-
w(i&
1635 drw = dis2*ddw4 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivz)-
w(i&
1638 dre = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)-
w(i, j-1, k,
irhoe)-&
1644 if (correctfork)
then
1646 & )*
w(i, j, k,
itu1)
1647 drk = dis2*ddw6 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
itu1)-&
1661 gm1 = gammaavg -
one
1670 area = sqrt(
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 +
sj(i, j, k, &
1672 if (1.e-25_realtype .lt. area)
then
1675 max5 = 1.e-25_realtype
1678 sx =
sj(i, j, k, 1)*tmp
1679 sy =
sj(i, j, k, 2)*tmp
1680 sz =
sj(i, j, k, 3)*tmp
1681 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
1682 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
1684 unavg = uavg*sx + vavg*sy + wavg*sz
1690 if (unavg - sface + aavg .ge. 0.)
then
1691 lam1 = unavg - sface + aavg
1695 lam1 = -(unavg-sface+aavg)
1699 if (unavg - sface - aavg .ge. 0.)
then
1700 lam2 = unavg - sface - aavg
1704 lam2 = -(unavg-sface-aavg)
1708 if (unavg - sface .ge. 0.)
then
1709 lam3 = unavg - sface
1713 lam3 = -(unavg-sface)
1718 if (lam1 .lt. epsacoustic*rrad)
then
1719 max6 = epsacoustic*rrad
1730 if (lam2 .lt. epsacoustic*rrad)
then
1731 max7 = epsacoustic*rrad
1740 if (lam3 .lt. epsshear*rrad)
then
1741 max8 = epsshear*rrad
1752 abv1 =
half*(lam1+lam2)
1753 abv2 =
half*(lam1-lam2)
1755 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
1757 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
1758 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
1759 abv7 = abv2*abv4*ovaavg + abv3*abv5
1774 lam3d = lam3d + drw*fsd
1777 abv6d = abv6d + wavg*fsd
1778 abv7d = abv7d + sz*fsd
1780 lam3d = lam3d + drv*fsd
1783 abv6d = abv6d + vavg*fsd
1784 abv7d = abv7d + sy*fsd
1786 lam3d = lam3d + dru*fsd
1789 abv6d = abv6d + uavg*fsd
1790 abv7d = abv7d + sx*fsd
1793 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
1794 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
1795 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
1796 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
1797 lam3d = lam3d + dr*fsd - abv3d
1798 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
1799 ova2avgd = abv3*abv4*abv6d
1800 unavgd = unavgd - dr*abv5d
1802 drd = lam3*fsd + alphaavg*tempd2 - unavg*abv5d
1803 drud = drud + sx*abv5d - uavg*tempd2
1804 drvd = drvd + sy*abv5d - vavg*tempd2
1805 drwd = drwd + sz*abv5d - wavg*tempd2
1806 drkd = -(gm53*abv4d)
1807 alphaavgd = dr*tempd2
1808 uavgd = uavgd - dru*tempd2
1809 vavgd = vavgd - drv*tempd2
1810 dred = dred + tempd2
1811 wavgd = wavgd - drw*tempd2
1818 if (branch .eq. 0)
then
1819 rradd = epsshear*max8d
1828 if (branch .eq. 0)
then
1829 rradd = rradd + epsacoustic*max7d
1837 if (branch .eq. 0)
then
1838 rradd = rradd + epsacoustic*max6d
1843 lam3d = lam3d + rradd
1847 if (branch .eq. 0)
then
1848 unavgd = unavgd + lam3d
1850 unavgd = unavgd - lam3d
1854 if (branch .eq. 0)
then
1855 unavgd = unavgd + lam2d
1856 aavgd = aavgd - lam2d
1858 aavgd = aavgd + lam2d
1859 unavgd = unavgd - lam2d
1863 if (branch .eq. 0)
then
1864 unavgd = unavgd + lam1d
1865 aavgd = aavgd + lam1d
1867 unavgd = unavgd - lam1d
1868 aavgd = aavgd - lam1d
1870 alphaavgd = alphaavgd + havgd
1871 tempd2 =
half*alphaavgd
1872 aavgd = aavgd -
one*ovaavgd/aavg**2
1873 if (a2avg .eq. 0.0_8)
then
1874 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
1876 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 + &
1879 uavgd = uavgd + sx*unavgd + 2*uavg*tempd2
1880 vavgd = vavgd + sy*unavgd + 2*vavg*tempd2
1881 wavgd = wavgd + sz*unavgd + 2*wavg*tempd2
1882 kavgd = -(gm53*ovgm1*havgd)
1883 temp3 =
w(i, j+1, k,
irho)
1884 temp1 =
w(i, j, k,
irho)
1885 tempd3 =
gamma(i, j+1, k)*
half*a2avgd/temp3
1886 tempd =
gamma(i, j, k)*
half*a2avgd/temp1
1887 pd(i, j, k) =
pd(i, j, k) + tempd
1888 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd/temp1
1889 pd(i, j+1, k) =
pd(i, j+1, k) + tempd3
1890 wd(i, j+1, k,
irho) =
wd(i, j+1, k,
irho) -
p(i, j+1, k)*tempd3/&
1900 if (branch .eq. 0)
then
1904 tempd0 = -(dis4*drkd)
1907 temp3 =
w(i, j-1, k,
itu1)
1908 temp2 =
w(i, j-1, k,
irho)
1909 temp1 =
w(i, j+2, k,
itu1)
1910 temp0 =
w(i, j+2, k,
irho)
1912 ddw6d = dis2*drkd -
three*tempd0
1913 dis4d = -((temp0*temp1-temp2*temp3-
three*ddw6)*drkd)
1914 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
1915 wd(i, j+2, k,
itu1) =
wd(i, j+2, k,
itu1) + temp0*tempd0
1916 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
1917 wd(i, j-1, k,
itu1) =
wd(i, j-1, k,
itu1) - temp2*tempd0
1925 tempd0 = -(dis4*drwd)
1926 temp0 =
w(i, j+2, k,
irho)
1927 temp1 =
w(i, j+2, k,
ivz)
1928 temp2 =
w(i, j-1, k,
irho)
1929 temp3 =
w(i, j-1, k,
ivz)
1930 tempd2 = -(dis4*dred)
1931 dis2d = dis2d + ddw5*dred + ddw4*drwd + ddw3*drvd + ddw2*drud + &
1933 ddw5d = dis2*dred -
three*tempd2
1935 & ddw5)*dred - (temp0*temp1-temp2*temp3-
three*ddw4)*drwd
1940 ddw4d = dis2*drwd -
three*tempd0
1941 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
1942 wd(i, j+2, k,
ivz) =
wd(i, j+2, k,
ivz) + temp0*tempd0
1943 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
1944 wd(i, j-1, k,
ivz) =
wd(i, j-1, k,
ivz) - temp2*tempd0
1951 temp3 =
w(i, j-1, k,
ivy)
1952 temp2 =
w(i, j-1, k,
irho)
1953 temp1 =
w(i, j+2, k,
ivy)
1954 temp0 =
w(i, j+2, k,
irho)
1955 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*drvd
1956 tempd0 = -(dis4*drvd)
1957 ddw3d = dis2*drvd -
three*tempd0
1958 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
1959 wd(i, j+2, k,
ivy) =
wd(i, j+2, k,
ivy) + temp0*tempd0
1960 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
1961 wd(i, j-1, k,
ivy) =
wd(i, j-1, k,
ivy) - temp2*tempd0
1968 temp3 =
w(i, j-1, k,
ivx)
1969 temp2 =
w(i, j-1, k,
irho)
1970 temp1 =
w(i, j+2, k,
ivx)
1971 temp0 =
w(i, j+2, k,
irho)
1972 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*drud - (
w(i&
1974 tempd0 = -(dis4*drud)
1975 ddw2d = dis2*drud -
three*tempd0
1976 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp1*tempd0
1977 wd(i, j+2, k,
ivx) =
wd(i, j+2, k,
ivx) + temp0*tempd0
1978 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp3*tempd0
1979 wd(i, j-1, k,
ivx) =
wd(i, j-1, k,
ivx) - temp2*tempd0
1986 tempd2 = -(dis4*drd)
1987 ddw1d = dis2*drd -
three*tempd2
1993 min2d = ppor*fis2*dis2d
1996 if (branch .eq. 0)
then
2003 if (branch .eq. 0)
then
2004 dssd(i, j+1, k, 2) = dssd(i, j+1, k, 2) + y2d
2006 dssd(i, j, k, 2) = dssd(i, j, k, 2) + y2d
2012 j = mod(ii/
il,
ny) + 2
2017 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
2018 y1 = dss(i+1, j, k, 1)
2022 y1 = dss(i, j, k, 1)
2026 if (dpmax .gt. y1)
then
2035 dis2 = ppor*fis2*min1
2037 dis4 =
mydim(arg1, dis2)
2041 dr = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
2045 dru = dis2*ddw2 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivx)-
w(i&
2049 drv = dis2*ddw3 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivy)-
w(i&
2053 drw = dis2*ddw4 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivz)-
w(i&
2056 dre = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)-
w(i-1, j, k,
irhoe)-&
2062 if (correctfork)
then
2064 & )*
w(i, j, k,
itu1)
2065 drk = dis2*ddw6 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
itu1)-&
2079 gm1 = gammaavg -
one
2088 area = sqrt(
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 +
si(i, j, k, &
2090 if (1.e-25_realtype .lt. area)
then
2093 max1 = 1.e-25_realtype
2096 sx =
si(i, j, k, 1)*tmp
2097 sy =
si(i, j, k, 2)*tmp
2098 sz =
si(i, j, k, 3)*tmp
2099 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
2100 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
2102 unavg = uavg*sx + vavg*sy + wavg*sz
2108 if (unavg - sface + aavg .ge. 0.)
then
2109 lam1 = unavg - sface + aavg
2113 lam1 = -(unavg-sface+aavg)
2117 if (unavg - sface - aavg .ge. 0.)
then
2118 lam2 = unavg - sface - aavg
2122 lam2 = -(unavg-sface-aavg)
2126 if (unavg - sface .ge. 0.)
then
2127 lam3 = unavg - sface
2131 lam3 = -(unavg-sface)
2136 if (lam1 .lt. epsacoustic*rrad)
then
2137 max2 = epsacoustic*rrad
2148 if (lam2 .lt. epsacoustic*rrad)
then
2149 max3 = epsacoustic*rrad
2158 if (lam3 .lt. epsshear*rrad)
then
2159 max4 = epsshear*rrad
2170 abv1 =
half*(lam1+lam2)
2171 abv2 =
half*(lam1-lam2)
2173 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
2175 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
2176 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
2177 abv7 = abv2*abv4*ovaavg + abv3*abv5
2192 lam3d = lam3d + drw*fsd
2195 abv6d = abv6d + wavg*fsd
2196 abv7d = abv7d + sz*fsd
2198 lam3d = lam3d + drv*fsd
2201 abv6d = abv6d + vavg*fsd
2202 abv7d = abv7d + sy*fsd
2204 lam3d = lam3d + dru*fsd
2207 abv6d = abv6d + uavg*fsd
2208 abv7d = abv7d + sx*fsd
2211 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
2212 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
2213 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
2214 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
2215 lam3d = lam3d + dr*fsd - abv3d
2216 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
2217 ova2avgd = abv3*abv4*abv6d
2218 unavgd = unavgd - dr*abv5d
2220 drd = lam3*fsd + alphaavg*tempd2 - unavg*abv5d
2221 drud = drud + sx*abv5d - uavg*tempd2
2222 drvd = drvd + sy*abv5d - vavg*tempd2
2223 drwd = drwd + sz*abv5d - wavg*tempd2
2224 drkd = -(gm53*abv4d)
2225 alphaavgd = dr*tempd2
2226 uavgd = uavgd - dru*tempd2
2227 vavgd = vavgd - drv*tempd2
2228 dred = dred + tempd2
2229 wavgd = wavgd - drw*tempd2
2236 if (branch .eq. 0)
then
2237 rradd = epsshear*max4d
2246 if (branch .eq. 0)
then
2247 rradd = rradd + epsacoustic*max3d
2255 if (branch .eq. 0)
then
2256 rradd = rradd + epsacoustic*max2d
2261 lam3d = lam3d + rradd
2265 if (branch .eq. 0)
then
2266 unavgd = unavgd + lam3d
2268 unavgd = unavgd - lam3d
2272 if (branch .eq. 0)
then
2273 unavgd = unavgd + lam2d
2274 aavgd = aavgd - lam2d
2276 aavgd = aavgd + lam2d
2277 unavgd = unavgd - lam2d
2281 if (branch .eq. 0)
then
2282 unavgd = unavgd + lam1d
2283 aavgd = aavgd + lam1d
2285 unavgd = unavgd - lam1d
2286 aavgd = aavgd - lam1d
2288 alphaavgd = alphaavgd + havgd
2289 tempd2 =
half*alphaavgd
2290 aavgd = aavgd -
one*ovaavgd/aavg**2
2291 if (a2avg .eq. 0.0_8)
then
2292 a2avgd = ovgm1*havgd -
one*ova2avgd/a2avg**2
2294 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2 + &
2297 uavgd = uavgd + sx*unavgd + 2*uavg*tempd2
2298 vavgd = vavgd + sy*unavgd + 2*vavg*tempd2
2299 wavgd = wavgd + sz*unavgd + 2*wavg*tempd2
2300 kavgd = -(gm53*ovgm1*havgd)
2301 temp3 =
w(i+1, j, k,
irho)
2302 temp1 =
w(i, j, k,
irho)
2303 tempd3 =
gamma(i+1, j, k)*
half*a2avgd/temp3
2304 tempd =
gamma(i, j, k)*
half*a2avgd/temp1
2305 pd(i, j, k) =
pd(i, j, k) + tempd
2306 wd(i, j, k,
irho) =
wd(i, j, k,
irho) -
p(i, j, k)*tempd/temp1
2307 pd(i+1, j, k) =
pd(i+1, j, k) + tempd3
2308 wd(i+1, j, k,
irho) =
wd(i+1, j, k,
irho) -
p(i+1, j, k)*tempd3/&
2318 if (branch .eq. 0)
then
2322 tempd0 = -(dis4*drkd)
2325 temp3 =
w(i-1, j, k,
itu1)
2326 temp2 =
w(i-1, j, k,
irho)
2327 temp1 =
w(i+2, j, k,
itu1)
2328 temp0 =
w(i+2, j, k,
irho)
2330 ddw6d = dis2*drkd -
three*tempd0
2331 dis4d = -((temp0*temp1-temp2*temp3-
three*ddw6)*drkd)
2332 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp1*tempd0
2333 wd(i+2, j, k,
itu1) =
wd(i+2, j, k,
itu1) + temp0*tempd0
2334 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp3*tempd0
2335 wd(i-1, j, k,
itu1) =
wd(i-1, j, k,
itu1) - temp2*tempd0
2343 tempd1 = -(dis4*drd)
2344 tempd0 = -(dis4*drwd)
2345 temp0 =
w(i+2, j, k,
irho)
2346 temp1 =
w(i+2, j, k,
ivz)
2347 temp2 =
w(i-1, j, k,
irho)
2348 temp3 =
w(i-1, j, k,
ivz)
2349 tempd2 = -(dis4*dred)
2350 dis2d = dis2d + ddw5*dred + ddw4*drwd + ddw3*drvd + ddw2*drud + &
2352 ddw5d = dis2*dred -
three*tempd2
2354 & ddw5)*dred - (temp0*temp1-temp2*temp3-
three*ddw4)*drwd
2359 ddw4d = dis2*drwd -
three*tempd0
2360 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp1*tempd0
2361 wd(i+2, j, k,
ivz) =
wd(i+2, j, k,
ivz) + temp0*tempd0
2362 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp3*tempd0
2363 wd(i-1, j, k,
ivz) =
wd(i-1, j, k,
ivz) - temp2*tempd0
2370 temp3 =
w(i-1, j, k,
ivy)
2371 temp2 =
w(i-1, j, k,
irho)
2372 temp1 =
w(i+2, j, k,
ivy)
2373 temp0 =
w(i+2, j, k,
irho)
2374 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*drvd
2375 tempd0 = -(dis4*drvd)
2376 ddw3d = dis2*drvd -
three*tempd0
2377 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp1*tempd0
2378 wd(i+2, j, k,
ivy) =
wd(i+2, j, k,
ivy) + temp0*tempd0
2379 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp3*tempd0
2380 wd(i-1, j, k,
ivy) =
wd(i-1, j, k,
ivy) - temp2*tempd0
2387 temp1 =
w(i-1, j, k,
ivx)
2388 temp0 =
w(i-1, j, k,
irho)
2389 temp =
w(i+2, j, k,
ivx)
2390 temp2 =
w(i+2, j, k,
irho)
2391 dis4d = dis4d - (temp2*temp-temp0*temp1-
three*ddw2)*drud - (
w(i+&
2393 tempd2 = -(dis4*drud)
2394 ddw2d = dis2*drud -
three*tempd2
2395 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp*tempd2
2396 wd(i+2, j, k,
ivx) =
wd(i+2, j, k,
ivx) + temp2*tempd2
2397 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp1*tempd2
2398 wd(i-1, j, k,
ivx) =
wd(i-1, j, k,
ivx) - temp0*tempd2
2405 ddw1d = dis2*drd -
three*tempd1
2411 min1d = ppor*fis2*dis2d
2414 if (branch .eq. 0)
then
2421 if (branch .eq. 0)
then
2422 dssd(i+1, j, k, 1) = dssd(i+1, j, k, 1) + y1d
2424 dssd(i, j, k, 1) = dssd(i, j, k, 1) + y1d
2430 j = mod(ii/
ie,
je) + 1
2432 if (
p(i+1, j, k) -
p(i, j, k) .ge. 0.)
then
2433 abs1 =
p(i+1, j, k) -
p(i, j, k)
2437 abs1 = -(
p(i+1, j, k)-
p(i, j, k))
2441 if (
p(i, j, k) -
p(i-1, j, k) .ge. 0.)
then
2442 abs4 =
p(i, j, k) -
p(i-1, j, k)
2446 abs4 = -(
p(i, j, k)-
p(i-1, j, k))
2450 x1 = (
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))/(omega*(
p(i+1, j&
2451 & , k)+
two*
p(i, j, k)+
p(i-1, j, k))+oneminomega*(abs1+abs4)+plim&
2453 if (x1 .ge. 0.)
then
2460 if (
p(i, j+1, k) -
p(i, j, k) .ge. 0.)
then
2461 abs2 =
p(i, j+1, k) -
p(i, j, k)
2465 abs2 = -(
p(i, j+1, k)-
p(i, j, k))
2469 if (
p(i, j, k) -
p(i, j-1, k) .ge. 0.)
then
2470 abs5 =
p(i, j, k) -
p(i, j-1, k)
2474 abs5 = -(
p(i, j, k)-
p(i, j-1, k))
2478 x2 = (
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))/(omega*(
p(i, j+1&
2479 & , k)+
two*
p(i, j, k)+
p(i, j-1, k))+oneminomega*(abs2+abs5)+plim&
2481 if (x2 .ge. 0.)
then
2488 if (
p(i, j, k+1) -
p(i, j, k) .ge. 0.)
then
2489 abs3 =
p(i, j, k+1) -
p(i, j, k)
2493 abs3 = -(
p(i, j, k+1)-
p(i, j, k))
2497 if (
p(i, j, k) -
p(i, j, k-1) .ge. 0.)
then
2498 abs6 =
p(i, j, k) -
p(i, j, k-1)
2502 abs6 = -(
p(i, j, k)-
p(i, j, k-1))
2506 x3 = (
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))/(omega*(
p(i, j, &
2507 & k+1)+
two*
p(i, j, k)+
p(i, j, k-1))+oneminomega*(abs3+abs6)+plim&
2509 if (x3 .ge. 0.)
then
2510 x3d = dssd(i, j, k, 3)
2511 dssd(i, j, k, 3) = 0.0_8
2513 x3d = -dssd(i, j, k, 3)
2514 dssd(i, j, k, 3) = 0.0_8
2516 temp1 = plim + omega*(
p(i, j, k+1)+
two*
p(i, j, k)+
p(i, j, k-1)) &
2517 & + oneminomega*(abs3+abs6)
2519 tempd1 = -((
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))*tempd/&
2521 tempd0 = omega*tempd1
2522 pd(i, j, k+1) =
pd(i, j, k+1) + tempd + tempd0
2523 pd(i, j, k) =
pd(i, j, k) +
two*tempd0 -
two*tempd
2524 pd(i, j, k-1) =
pd(i, j, k-1) + tempd + tempd0
2525 abs3d = oneminomega*tempd1
2526 abs6d = oneminomega*tempd1
2529 if (branch .eq. 0)
then
2530 pd(i, j, k) =
pd(i, j, k) + abs6d
2531 pd(i, j, k-1) =
pd(i, j, k-1) - abs6d
2533 pd(i, j, k-1) =
pd(i, j, k-1) + abs6d
2534 pd(i, j, k) =
pd(i, j, k) - abs6d
2538 if (branch .eq. 0)
then
2539 pd(i, j, k) =
pd(i, j, k) + abs3d
2540 pd(i, j, k+1) =
pd(i, j, k+1) - abs3d
2542 pd(i, j, k+1) =
pd(i, j, k+1) + abs3d
2543 pd(i, j, k) =
pd(i, j, k) - abs3d
2547 if (branch .eq. 0)
then
2548 x2d = dssd(i, j, k, 2)
2549 dssd(i, j, k, 2) = 0.0_8
2551 x2d = -dssd(i, j, k, 2)
2552 dssd(i, j, k, 2) = 0.0_8
2554 temp1 = plim + omega*(
p(i, j+1, k)+
two*
p(i, j, k)+
p(i, j-1, k)) &
2555 & + oneminomega*(abs2+abs5)
2557 tempd1 = -((
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))*tempd/&
2559 tempd0 = omega*tempd1
2560 pd(i, j+1, k) =
pd(i, j+1, k) + tempd + tempd0
2561 pd(i, j, k) =
pd(i, j, k) +
two*tempd0 -
two*tempd
2562 pd(i, j-1, k) =
pd(i, j-1, k) + tempd + tempd0
2563 abs2d = oneminomega*tempd1
2564 abs5d = oneminomega*tempd1
2567 if (branch .eq. 0)
then
2568 pd(i, j, k) =
pd(i, j, k) + abs5d
2569 pd(i, j-1, k) =
pd(i, j-1, k) - abs5d
2571 pd(i, j-1, k) =
pd(i, j-1, k) + abs5d
2572 pd(i, j, k) =
pd(i, j, k) - abs5d
2576 if (branch .eq. 0)
then
2577 pd(i, j, k) =
pd(i, j, k) + abs2d
2578 pd(i, j+1, k) =
pd(i, j+1, k) - abs2d
2580 pd(i, j+1, k) =
pd(i, j+1, k) + abs2d
2581 pd(i, j, k) =
pd(i, j, k) - abs2d
2585 if (branch .eq. 0)
then
2586 x1d = dssd(i, j, k, 1)
2587 dssd(i, j, k, 1) = 0.0_8
2589 x1d = -dssd(i, j, k, 1)
2590 dssd(i, j, k, 1) = 0.0_8
2592 temp = plim + omega*(
p(i+1, j, k)+
two*
p(i, j, k)+
p(i-1, j, k)) +&
2593 & oneminomega*(abs1+abs4)
2595 tempd0 = -((
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))*tempd/temp&
2597 tempd1 = omega*tempd0
2598 pd(i+1, j, k) =
pd(i+1, j, k) + tempd + tempd1
2599 pd(i, j, k) =
pd(i, j, k) +
two*tempd1 -
two*tempd
2600 pd(i-1, j, k) =
pd(i-1, j, k) + tempd + tempd1
2601 abs1d = oneminomega*tempd0
2602 abs4d = oneminomega*tempd0
2605 if (branch .eq. 0)
then
2606 pd(i, j, k) =
pd(i, j, k) + abs4d
2607 pd(i-1, j, k) =
pd(i-1, j, k) - abs4d
2609 pd(i-1, j, k) =
pd(i-1, j, k) + abs4d
2610 pd(i, j, k) =
pd(i, j, k) - abs4d
2614 if (branch .eq. 0)
then
2615 pd(i, j, k) =
pd(i, j, k) + abs1d
2616 pd(i+1, j, k) =
pd(i+1, j, k) - abs1d
2618 pd(i+1, j, k) =
pd(i+1, j, k) + abs1d
2619 pd(i, j, k) =
pd(i, j, k) - abs1d
2636 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,&
2637 &
ib,
jb,
kb,
w,
p,
pori,
porj,
pork,
fw,
gamma,
si,
sj,
sk, &
2650 real(kind=realtype),
parameter :: dpmax=0.25_realtype
2651 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
2652 real(kind=realtype),
parameter :: epsshear=0.025_realtype
2653 real(kind=realtype),
parameter :: omega=0.5_realtype
2654 real(kind=realtype),
parameter :: oneminomega=
one-omega
2658 integer(kind=inttype) :: i, j, k, ind, ii
2659 real(kind=realtype) :: plim, sface
2660 real(kind=realtype) :: sfil, fis2, fis4
2661 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
2662 real(kind=realtype) :: ppor, rrad, dis2, dis4
2663 real(kind=realtype) :: dp1, dp2, tmp, fs
2664 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, ddw6
2665 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
2666 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
2667 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
2668 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
2669 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
2670 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
2671 logical :: correctfork
2677 real(kind=realtype) :: x1
2678 real(kind=realtype) :: x2
2679 real(kind=realtype) :: x3
2680 real(kind=realtype) :: y1
2681 real(kind=realtype) :: y2
2682 real(kind=realtype) :: y3
2683 real(kind=realtype) :: abs0
2684 real(kind=realtype) :: min1
2685 real(realtype) :: max1
2686 real(kind=realtype) :: max2
2687 real(kind=realtype) :: max3
2688 real(kind=realtype) :: max4
2689 real(kind=realtype) :: min2
2690 real(realtype) :: max5
2691 real(kind=realtype) :: max6
2692 real(kind=realtype) :: max7
2693 real(kind=realtype) :: max8
2694 real(kind=realtype) :: min3
2695 real(realtype) :: max9
2696 real(kind=realtype) :: max10
2697 real(kind=realtype) :: max11
2698 real(kind=realtype) :: max12
2699 real(kind=realtype) :: abs1
2700 real(kind=realtype) :: abs2
2701 real(kind=realtype) :: abs3
2702 real(kind=realtype) :: abs4
2703 real(kind=realtype) :: abs5
2704 real(kind=realtype) :: abs6
2705 real(kind=realtype) :: arg1
2706 if (
rfil .ge. 0.)
then
2737 j = mod(ii/
ie,
je) + 1
2739 if (
p(i+1, j, k) -
p(i, j, k) .ge. 0.)
then
2740 abs1 =
p(i+1, j, k) -
p(i, j, k)
2742 abs1 = -(
p(i+1, j, k)-
p(i, j, k))
2744 if (
p(i, j, k) -
p(i-1, j, k) .ge. 0.)
then
2745 abs4 =
p(i, j, k) -
p(i-1, j, k)
2747 abs4 = -(
p(i, j, k)-
p(i-1, j, k))
2749 x1 = (
p(i+1, j, k)-
two*
p(i, j, k)+
p(i-1, j, k))/(omega*(
p(i+1, j&
2750 & , k)+
two*
p(i, j, k)+
p(i-1, j, k))+oneminomega*(abs1+abs4)+plim&
2752 if (x1 .ge. 0.)
then
2753 dss(i, j, k, 1) = x1
2755 dss(i, j, k, 1) = -x1
2757 if (
p(i, j+1, k) -
p(i, j, k) .ge. 0.)
then
2758 abs2 =
p(i, j+1, k) -
p(i, j, k)
2760 abs2 = -(
p(i, j+1, k)-
p(i, j, k))
2762 if (
p(i, j, k) -
p(i, j-1, k) .ge. 0.)
then
2763 abs5 =
p(i, j, k) -
p(i, j-1, k)
2765 abs5 = -(
p(i, j, k)-
p(i, j-1, k))
2767 x2 = (
p(i, j+1, k)-
two*
p(i, j, k)+
p(i, j-1, k))/(omega*(
p(i, j+1&
2768 & , k)+
two*
p(i, j, k)+
p(i, j-1, k))+oneminomega*(abs2+abs5)+plim&
2770 if (x2 .ge. 0.)
then
2771 dss(i, j, k, 2) = x2
2773 dss(i, j, k, 2) = -x2
2775 if (
p(i, j, k+1) -
p(i, j, k) .ge. 0.)
then
2776 abs3 =
p(i, j, k+1) -
p(i, j, k)
2778 abs3 = -(
p(i, j, k+1)-
p(i, j, k))
2780 if (
p(i, j, k) -
p(i, j, k-1) .ge. 0.)
then
2781 abs6 =
p(i, j, k) -
p(i, j, k-1)
2783 abs6 = -(
p(i, j, k)-
p(i, j, k-1))
2785 x3 = (
p(i, j, k+1)-
two*
p(i, j, k)+
p(i, j, k-1))/(omega*(
p(i, j, &
2786 & k+1)+
two*
p(i, j, k)+
p(i, j, k-1))+oneminomega*(abs3+abs6)+plim&
2788 if (x3 .ge. 0.)
then
2789 dss(i, j, k, 3) = x3
2791 dss(i, j, k, 3) = -x3
2800 j = mod(ii/
il,
ny) + 2
2805 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
2806 y1 = dss(i+1, j, k, 1)
2808 y1 = dss(i, j, k, 1)
2810 if (dpmax .gt. y1)
then
2815 dis2 = ppor*fis2*min1
2817 dis4 =
mydim(arg1, dis2)
2821 dr = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
2825 dru = dis2*ddw2 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivx)-
w(i&
2829 drv = dis2*ddw3 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivy)-
w(i&
2833 drw = dis2*ddw4 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
ivz)-
w(i&
2836 dre = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)-
w(i-1, j, k,
irhoe)-&
2842 if (correctfork)
then
2844 & )*
w(i, j, k,
itu1)
2845 drk = dis2*ddw6 - dis4*(
w(i+2, j, k,
irho)*
w(i+2, j, k,
itu1)-&
2855 gm1 = gammaavg -
one
2864 area = sqrt(
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 +
si(i, j, k, &
2866 if (1.e-25_realtype .lt. area)
then
2869 max1 = 1.e-25_realtype
2872 sx =
si(i, j, k, 1)*tmp
2873 sy =
si(i, j, k, 2)*tmp
2874 sz =
si(i, j, k, 3)*tmp
2875 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
2876 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
2878 unavg = uavg*sx + vavg*sy + wavg*sz
2884 if (unavg - sface + aavg .ge. 0.)
then
2885 lam1 = unavg - sface + aavg
2887 lam1 = -(unavg-sface+aavg)
2889 if (unavg - sface - aavg .ge. 0.)
then
2890 lam2 = unavg - sface - aavg
2892 lam2 = -(unavg-sface-aavg)
2894 if (unavg - sface .ge. 0.)
then
2895 lam3 = unavg - sface
2897 lam3 = -(unavg-sface)
2900 if (lam1 .lt. epsacoustic*rrad)
then
2901 max2 = epsacoustic*rrad
2908 if (lam2 .lt. epsacoustic*rrad)
then
2909 max3 = epsacoustic*rrad
2914 if (lam3 .lt. epsshear*rrad)
then
2915 max4 = epsshear*rrad
2922 abv1 =
half*(lam1+lam2)
2923 abv2 =
half*(lam1-lam2)
2925 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
2927 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
2928 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
2929 abv7 = abv2*abv4*ovaavg + abv3*abv5
2936 fs = lam3*dru + uavg*abv6 + sx*abv7
2940 fs = lam3*drv + vavg*abv6 + sy*abv7
2944 fs = lam3*drw + wavg*abv6 + sz*abv7
2948 fs = lam3*dre + havg*abv6 + unavg*abv7
2958 j = mod(ii/
nx,
jl) + 1
2963 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
2964 y2 = dss(i, j+1, k, 2)
2966 y2 = dss(i, j, k, 2)
2968 if (dpmax .gt. y2)
then
2973 dis2 = ppor*fis2*min2
2975 dis4 =
mydim(arg1, dis2)
2979 dr = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
2983 dru = dis2*ddw2 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivx)-
w(i&
2987 drv = dis2*ddw3 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivy)-
w(i&
2991 drw = dis2*ddw4 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
ivz)-
w(i&
2994 dre = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)-
w(i, j-1, k,
irhoe)-&
3000 if (correctfork)
then
3002 & )*
w(i, j, k,
itu1)
3003 drk = dis2*ddw6 - dis4*(
w(i, j+2, k,
irho)*
w(i, j+2, k,
itu1)-&
3013 gm1 = gammaavg -
one
3022 area = sqrt(
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 +
sj(i, j, k, &
3024 if (1.e-25_realtype .lt. area)
then
3027 max5 = 1.e-25_realtype
3030 sx =
sj(i, j, k, 1)*tmp
3031 sy =
sj(i, j, k, 2)*tmp
3032 sz =
sj(i, j, k, 3)*tmp
3033 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
3034 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
3036 unavg = uavg*sx + vavg*sy + wavg*sz
3042 if (unavg - sface + aavg .ge. 0.)
then
3043 lam1 = unavg - sface + aavg
3045 lam1 = -(unavg-sface+aavg)
3047 if (unavg - sface - aavg .ge. 0.)
then
3048 lam2 = unavg - sface - aavg
3050 lam2 = -(unavg-sface-aavg)
3052 if (unavg - sface .ge. 0.)
then
3053 lam3 = unavg - sface
3055 lam3 = -(unavg-sface)
3058 if (lam1 .lt. epsacoustic*rrad)
then
3059 max6 = epsacoustic*rrad
3066 if (lam2 .lt. epsacoustic*rrad)
then
3067 max7 = epsacoustic*rrad
3072 if (lam3 .lt. epsshear*rrad)
then
3073 max8 = epsshear*rrad
3080 abv1 =
half*(lam1+lam2)
3081 abv2 =
half*(lam1-lam2)
3083 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
3085 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
3086 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
3087 abv7 = abv2*abv4*ovaavg + abv3*abv5
3094 fs = lam3*dru + uavg*abv6 + sx*abv7
3098 fs = lam3*drv + vavg*abv6 + sy*abv7
3102 fs = lam3*drw + wavg*abv6 + sz*abv7
3106 fs = lam3*dre + havg*abv6 + unavg*abv7
3116 j = mod(ii/
nx,
ny) + 2
3121 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
3122 y3 = dss(i, j, k+1, 3)
3124 y3 = dss(i, j, k, 3)
3126 if (dpmax .gt. y3)
then
3131 dis2 = ppor*fis2*min3
3133 dis4 =
mydim(arg1, dis2)
3137 dr = dis2*ddw1 - dis4*(
w(i, j, k+2,
irho)-
w(i, j, k-1,
irho)-&
3141 dru = dis2*ddw2 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivx)-
w(i&
3145 drv = dis2*ddw3 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivy)-
w(i&
3149 drw = dis2*ddw4 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
ivz)-
w(i&
3152 dre = dis2*ddw5 - dis4*(
w(i, j, k+2,
irhoe)-
w(i, j, k-1,
irhoe)-&
3158 if (correctfork)
then
3160 & )*
w(i, j, k,
itu1)
3161 drk = dis2*ddw6 - dis4*(
w(i, j, k+2,
irho)*
w(i, j, k+2,
itu1)-&
3171 gm1 = gammaavg -
one
3180 area = sqrt(
sk(i, j, k, 1)**2 +
sk(i, j, k, 2)**2 +
sk(i, j, k, &
3182 if (1.e-25_realtype .lt. area)
then
3185 max9 = 1.e-25_realtype
3188 sx =
sk(i, j, k, 1)*tmp
3189 sy =
sk(i, j, k, 2)*tmp
3190 sz =
sk(i, j, k, 3)*tmp
3191 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
3192 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
3194 unavg = uavg*sx + vavg*sy + wavg*sz
3200 if (unavg - sface + aavg .ge. 0.)
then
3201 lam1 = unavg - sface + aavg
3203 lam1 = -(unavg-sface+aavg)
3205 if (unavg - sface - aavg .ge. 0.)
then
3206 lam2 = unavg - sface - aavg
3208 lam2 = -(unavg-sface-aavg)
3210 if (unavg - sface .ge. 0.)
then
3211 lam3 = unavg - sface
3213 lam3 = -(unavg-sface)
3216 if (lam1 .lt. epsacoustic*rrad)
then
3217 max10 = epsacoustic*rrad
3224 if (lam2 .lt. epsacoustic*rrad)
then
3225 max11 = epsacoustic*rrad
3230 if (lam3 .lt. epsshear*rrad)
then
3231 max12 = epsshear*rrad
3238 abv1 =
half*(lam1+lam2)
3239 abv2 =
half*(lam1-lam2)
3241 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53*&
3243 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
3244 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
3245 abv7 = abv2*abv4*ovaavg + abv3*abv5
3252 fs = lam3*dru + uavg*abv6 + sx*abv7
3256 fs = lam3*drv + vavg*abv6 + sy*abv7
3260 fs = lam3*drw + wavg*abv6 + sz*abv7
3264 fs = lam3*dre + havg*abv6 + unavg*abv7
3286 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,&
3287 &
ib,
jb,
kb,
w,
wd,
p,
pd,
pori,
porj,
pork,
fw,
fwd,
radi,
radid, &
3300 real(kind=realtype),
parameter :: dssmax=0.25_realtype
3304 integer(kind=inttype) :: i, j, k, ind, ii
3305 real(kind=realtype) :: sslim, rhoi
3306 real(kind=realtype) :: sfil, fis2, fis4
3307 real(kind=realtype) :: ppor, rrad, dis2, dis4
3308 real(kind=realtype) :: rradd, dis2d, dis4d
3309 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, fs
3310 real(kind=realtype) :: ddw1d, ddw2d, ddw3d, ddw4d, ddw5d, fsd
3311 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
3312 real(kind=realtype),
dimension(ie, je, ke, 3) :: dssd
3313 real(kind=realtype),
dimension(0:ib, 0:jb, 0:kb) :: ss
3314 real(kind=realtype),
dimension(0:ib, 0:jb, 0:kb) :: ssd
3321 real(kind=realtype) :: x1
3322 real(kind=realtype) :: x1d
3323 real(kind=realtype) :: x2
3324 real(kind=realtype) :: x2d
3325 real(kind=realtype) :: x3
3326 real(kind=realtype) :: x3d
3327 real(kind=realtype) :: y1
3328 real(kind=realtype) :: y1d
3329 real(kind=realtype) :: y2
3330 real(kind=realtype) :: y2d
3331 real(kind=realtype) :: y3
3332 real(kind=realtype) :: y3d
3333 real(kind=realtype) :: abs0
3334 real(kind=realtype) :: min1
3335 real(kind=realtype) :: min1d
3336 real(kind=realtype) :: min2
3337 real(kind=realtype) :: min2d
3338 real(kind=realtype) :: min3
3339 real(kind=realtype) :: min3d
3340 real(kind=realtype) :: arg1
3341 real(kind=realtype) :: arg1d
3342 real(kind=realtype) :: temp
3343 real(kind=realtype) :: temp0
3344 real(kind=realtype) :: temp1
3345 real(kind=realtype) :: tempd
3346 real(kind=realtype) :: tempd0
3348 real(kind=realtype) :: temp2
3349 real(kind=realtype) :: temp3
3350 real(kind=realtype) :: tempd1
3351 real(kind=realtype) :: tempd2
3352 if (
rfil .ge. 0.)
then
3379 call pushcontrol2b(1)
3388 do ii=0,(
ib+1)*(
jb+1)*(
kb+1)-1
3390 j = mod(ii/(
ib+1),
jb + 1)
3391 k = ii/((
ib+1)*(
jb+1))
3392 ss(i, j, k) =
p(i, j, k)/
w(i, j, k,
irho)**
gamma(i, j, k)
3394 call pushcontrol2b(2)
3396 call pushcontrol2b(0)
3402 j = mod(ii/
ie,
je) + 1
3404 x1 = (ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))/(ss(i+1, j, k&
3405 & )+
two*ss(i, j, k)+ss(i-1, j, k)+sslim)
3406 if (x1 .ge. 0.)
then
3407 dss(i, j, k, 1) = x1
3409 dss(i, j, k, 1) = -x1
3411 x2 = (ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))/(ss(i, j+1, k&
3412 & )+
two*ss(i, j, k)+ss(i, j-1, k)+sslim)
3413 if (x2 .ge. 0.)
then
3414 dss(i, j, k, 2) = x2
3416 dss(i, j, k, 2) = -x2
3418 x3 = (ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))/(ss(i, j, k+1&
3419 & )+
two*ss(i, j, k)+ss(i, j, k-1)+sslim)
3420 if (x3 .ge. 0.)
then
3421 dss(i, j, k, 3) = x3
3423 dss(i, j, k, 3) = -x3
3460 j = mod(ii/
nx,
ny) + 2
3465 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
3466 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
3467 y3 = dss(i, j, k+1, 3)
3471 y3 = dss(i, j, k, 3)
3475 if (dssmax .gt. y3)
then
3484 dis2 = fis2*rrad*min3
3486 dis4 =
mydim(arg1, dis2)
3492 ddw2 =
w(i, j, k+1,
ivx)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivx)*
w(&
3495 ddw3 =
w(i, j, k+1,
ivy)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivy)*
w(&
3498 ddw4 =
w(i, j, k+1,
ivz)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivz)*
w(&
3501 ddw5 =
w(i, j, k+1,
irhoe) +
p(i, j, k+1) - (
w(i, j, k,
irhoe)+
p&
3505 dis4d = -((
w(i, j, k+2,
irhoe)+
p(i, j, k+2)-
w(i, j, k-1,
irhoe)-&
3506 &
p(i, j, k-1)-
three*ddw5)*fsd)
3507 tempd1 = -(dis4*fsd)
3508 ddw5d = dis2*fsd -
three*tempd1
3510 pd(i, j, k+2) =
pd(i, j, k+2) + tempd1
3512 pd(i, j, k-1) =
pd(i, j, k-1) - tempd1
3514 pd(i, j, k+1) =
pd(i, j, k+1) + ddw5d
3516 pd(i, j, k) =
pd(i, j, k) - ddw5d
3518 temp3 =
w(i, j, k-1,
irho)
3519 temp2 =
w(i, j, k-1,
ivz)
3520 temp1 =
w(i, j, k+2,
irho)
3521 temp0 =
w(i, j, k+2,
ivz)
3522 dis2d = dis2d + ddw4*fsd
3523 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw4)*fsd
3524 tempd2 = -(dis4*fsd)
3525 ddw4d = dis2*fsd -
three*tempd2
3526 wd(i, j, k+2,
ivz) =
wd(i, j, k+2,
ivz) + temp1*tempd2
3527 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp0*tempd2
3528 wd(i, j, k-1,
ivz) =
wd(i, j, k-1,
ivz) - temp3*tempd2
3529 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp2*tempd2
3537 temp3 =
w(i, j, k-1,
irho)
3538 temp2 =
w(i, j, k-1,
ivy)
3539 temp1 =
w(i, j, k+2,
irho)
3540 temp0 =
w(i, j, k+2,
ivy)
3541 dis2d = dis2d + ddw3*fsd
3542 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*fsd
3543 tempd2 = -(dis4*fsd)
3544 ddw3d = dis2*fsd -
three*tempd2
3545 wd(i, j, k+2,
ivy) =
wd(i, j, k+2,
ivy) + temp1*tempd2
3546 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp0*tempd2
3547 wd(i, j, k-1,
ivy) =
wd(i, j, k-1,
ivy) - temp3*tempd2
3548 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp2*tempd2
3556 temp3 =
w(i, j, k-1,
irho)
3557 temp2 =
w(i, j, k-1,
ivx)
3558 temp1 =
w(i, j, k+2,
irho)
3559 temp0 =
w(i, j, k+2,
ivx)
3560 dis2d = dis2d + ddw2*fsd
3561 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*fsd
3562 tempd2 = -(dis4*fsd)
3563 ddw2d = dis2*fsd -
three*tempd2
3564 wd(i, j, k+2,
ivx) =
wd(i, j, k+2,
ivx) + temp1*tempd2
3565 wd(i, j, k+2,
irho) =
wd(i, j, k+2,
irho) + temp0*tempd2
3566 wd(i, j, k-1,
ivx) =
wd(i, j, k-1,
ivx) - temp3*tempd2
3567 wd(i, j, k-1,
irho) =
wd(i, j, k-1,
irho) - temp2*tempd2
3575 dis2d = dis2d + ddw1*fsd
3578 tempd1 = -(dis4*fsd)
3579 ddw1d = dis2*fsd -
three*tempd1
3585 rradd = fis4*arg1d + min3*fis2*dis2d
3586 min3d = rrad*fis2*dis2d
3589 if (branch .eq. 0)
then
3596 if (branch .eq. 0)
then
3597 dssd(i, j, k+1, 3) = dssd(i, j, k+1, 3) + y3d
3599 dssd(i, j, k, 3) = dssd(i, j, k, 3) + y3d
3602 radkd(i, j, k+1) =
radkd(i, j, k+1) + ppor*rradd
3608 j = mod(ii/
nx,
jl) + 1
3613 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
3614 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
3615 y2 = dss(i, j+1, k, 2)
3619 y2 = dss(i, j, k, 2)
3623 if (dssmax .gt. y2)
then
3632 dis2 = fis2*rrad*min2
3634 dis4 =
mydim(arg1, dis2)
3640 ddw2 =
w(i, j+1, k,
ivx)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivx)*
w(&
3643 ddw3 =
w(i, j+1, k,
ivy)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivy)*
w(&
3646 ddw4 =
w(i, j+1, k,
ivz)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivz)*
w(&
3649 ddw5 =
w(i, j+1, k,
irhoe) +
p(i, j+1, k) - (
w(i, j, k,
irhoe)+
p&
3653 dis4d = -((
w(i, j+2, k,
irhoe)+
p(i, j+2, k)-
w(i, j-1, k,
irhoe)-&
3654 &
p(i, j-1, k)-
three*ddw5)*fsd)
3655 tempd1 = -(dis4*fsd)
3656 ddw5d = dis2*fsd -
three*tempd1
3658 pd(i, j+2, k) =
pd(i, j+2, k) + tempd1
3660 pd(i, j-1, k) =
pd(i, j-1, k) - tempd1
3662 pd(i, j+1, k) =
pd(i, j+1, k) + ddw5d
3664 pd(i, j, k) =
pd(i, j, k) - ddw5d
3666 temp3 =
w(i, j-1, k,
irho)
3667 temp2 =
w(i, j-1, k,
ivz)
3668 temp1 =
w(i, j+2, k,
irho)
3669 temp0 =
w(i, j+2, k,
ivz)
3670 dis2d = dis2d + ddw4*fsd
3671 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw4)*fsd
3672 tempd2 = -(dis4*fsd)
3673 ddw4d = dis2*fsd -
three*tempd2
3674 wd(i, j+2, k,
ivz) =
wd(i, j+2, k,
ivz) + temp1*tempd2
3675 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp0*tempd2
3676 wd(i, j-1, k,
ivz) =
wd(i, j-1, k,
ivz) - temp3*tempd2
3677 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp2*tempd2
3685 temp3 =
w(i, j-1, k,
irho)
3686 temp2 =
w(i, j-1, k,
ivy)
3687 temp1 =
w(i, j+2, k,
irho)
3688 temp0 =
w(i, j+2, k,
ivy)
3689 dis2d = dis2d + ddw3*fsd
3690 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*fsd
3691 tempd2 = -(dis4*fsd)
3692 ddw3d = dis2*fsd -
three*tempd2
3693 wd(i, j+2, k,
ivy) =
wd(i, j+2, k,
ivy) + temp1*tempd2
3694 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp0*tempd2
3695 wd(i, j-1, k,
ivy) =
wd(i, j-1, k,
ivy) - temp3*tempd2
3696 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp2*tempd2
3704 temp3 =
w(i, j-1, k,
irho)
3705 temp2 =
w(i, j-1, k,
ivx)
3706 temp1 =
w(i, j+2, k,
irho)
3707 temp0 =
w(i, j+2, k,
ivx)
3708 dis2d = dis2d + ddw2*fsd
3709 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw2)*fsd
3710 tempd2 = -(dis4*fsd)
3711 ddw2d = dis2*fsd -
three*tempd2
3712 wd(i, j+2, k,
ivx) =
wd(i, j+2, k,
ivx) + temp1*tempd2
3713 wd(i, j+2, k,
irho) =
wd(i, j+2, k,
irho) + temp0*tempd2
3714 wd(i, j-1, k,
ivx) =
wd(i, j-1, k,
ivx) - temp3*tempd2
3715 wd(i, j-1, k,
irho) =
wd(i, j-1, k,
irho) - temp2*tempd2
3723 dis2d = dis2d + ddw1*fsd
3726 tempd1 = -(dis4*fsd)
3727 ddw1d = dis2*fsd -
three*tempd1
3733 rradd = fis4*arg1d + min2*fis2*dis2d
3734 min2d = rrad*fis2*dis2d
3737 if (branch .eq. 0)
then
3744 if (branch .eq. 0)
then
3745 dssd(i, j+1, k, 2) = dssd(i, j+1, k, 2) + y2d
3747 dssd(i, j, k, 2) = dssd(i, j, k, 2) + y2d
3750 radjd(i, j+1, k) =
radjd(i, j+1, k) + ppor*rradd
3756 j = mod(ii/
il,
ny) + 2
3761 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
3762 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
3763 y1 = dss(i+1, j, k, 1)
3767 y1 = dss(i, j, k, 1)
3771 if (dssmax .gt. y1)
then
3780 dis2 = fis2*rrad*min1
3782 dis4 =
mydim(arg1, dis2)
3788 ddw2 =
w(i+1, j, k,
ivx)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivx)*
w(&
3791 ddw3 =
w(i+1, j, k,
ivy)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivy)*
w(&
3794 ddw4 =
w(i+1, j, k,
ivz)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivz)*
w(&
3797 ddw5 =
w(i+1, j, k,
irhoe) +
p(i+1, j, k) - (
w(i, j, k,
irhoe)+
p&
3801 dis4d = -((
w(i+2, j, k,
irhoe)+
p(i+2, j, k)-
w(i-1, j, k,
irhoe)-&
3802 &
p(i-1, j, k)-
three*ddw5)*fsd)
3803 tempd1 = -(dis4*fsd)
3804 ddw5d = dis2*fsd -
three*tempd1
3806 pd(i+2, j, k) =
pd(i+2, j, k) + tempd1
3808 pd(i-1, j, k) =
pd(i-1, j, k) - tempd1
3810 pd(i+1, j, k) =
pd(i+1, j, k) + ddw5d
3812 pd(i, j, k) =
pd(i, j, k) - ddw5d
3814 temp3 =
w(i-1, j, k,
irho)
3815 temp2 =
w(i-1, j, k,
ivz)
3816 temp1 =
w(i+2, j, k,
irho)
3817 temp0 =
w(i+2, j, k,
ivz)
3818 dis2d = dis2d + ddw4*fsd
3819 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw4)*fsd
3820 tempd2 = -(dis4*fsd)
3821 ddw4d = dis2*fsd -
three*tempd2
3822 wd(i+2, j, k,
ivz) =
wd(i+2, j, k,
ivz) + temp1*tempd2
3823 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp0*tempd2
3824 wd(i-1, j, k,
ivz) =
wd(i-1, j, k,
ivz) - temp3*tempd2
3825 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp2*tempd2
3833 temp3 =
w(i-1, j, k,
irho)
3834 temp2 =
w(i-1, j, k,
ivy)
3835 temp1 =
w(i+2, j, k,
irho)
3836 temp0 =
w(i+2, j, k,
ivy)
3837 dis2d = dis2d + ddw3*fsd
3838 dis4d = dis4d - (temp0*temp1-temp2*temp3-
three*ddw3)*fsd
3839 tempd2 = -(dis4*fsd)
3840 ddw3d = dis2*fsd -
three*tempd2
3841 wd(i+2, j, k,
ivy) =
wd(i+2, j, k,
ivy) + temp1*tempd2
3842 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp0*tempd2
3843 wd(i-1, j, k,
ivy) =
wd(i-1, j, k,
ivy) - temp3*tempd2
3844 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp2*tempd2
3852 temp1 =
w(i-1, j, k,
irho)
3853 temp0 =
w(i-1, j, k,
ivx)
3854 temp =
w(i+2, j, k,
irho)
3855 temp2 =
w(i+2, j, k,
ivx)
3856 dis2d = dis2d + ddw2*fsd
3857 dis4d = dis4d - (temp2*temp-temp0*temp1-
three*ddw2)*fsd
3858 tempd1 = -(dis4*fsd)
3859 ddw2d = dis2*fsd -
three*tempd1
3860 wd(i+2, j, k,
ivx) =
wd(i+2, j, k,
ivx) + temp*tempd1
3861 wd(i+2, j, k,
irho) =
wd(i+2, j, k,
irho) + temp2*tempd1
3862 wd(i-1, j, k,
ivx) =
wd(i-1, j, k,
ivx) - temp1*tempd1
3863 wd(i-1, j, k,
irho) =
wd(i-1, j, k,
irho) - temp0*tempd1
3871 dis2d = dis2d + ddw1*fsd
3874 tempd0 = -(dis4*fsd)
3875 ddw1d = dis2*fsd -
three*tempd0
3881 rradd = fis4*arg1d + min1*fis2*dis2d
3882 min1d = rrad*fis2*dis2d
3885 if (branch .eq. 0)
then
3892 if (branch .eq. 0)
then
3893 dssd(i+1, j, k, 1) = dssd(i+1, j, k, 1) + y1d
3895 dssd(i, j, k, 1) = dssd(i, j, k, 1) + y1d
3898 radid(i+1, j, k) =
radid(i+1, j, k) + ppor*rradd
3907 j = mod(ii/
ie,
je) + 1
3909 x1 = (ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))/(ss(i+1, j, k&
3910 & )+
two*ss(i, j, k)+ss(i-1, j, k)+sslim)
3911 if (x1 .ge. 0.)
then
3918 x2 = (ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))/(ss(i, j+1, k&
3919 & )+
two*ss(i, j, k)+ss(i, j-1, k)+sslim)
3920 if (x2 .ge. 0.)
then
3927 x3 = (ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))/(ss(i, j, k+1&
3928 & )+
two*ss(i, j, k)+ss(i, j, k-1)+sslim)
3929 if (x3 .ge. 0.)
then
3930 x3d = dssd(i, j, k, 3)
3931 dssd(i, j, k, 3) = 0.0_8
3933 x3d = -dssd(i, j, k, 3)
3934 dssd(i, j, k, 3) = 0.0_8
3936 temp1 = sslim + ss(i, j, k+1) +
two*ss(i, j, k) + ss(i, j, k-1)
3938 tempd0 = -((ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))*tempd/&
3940 ssd(i, j, k+1) = ssd(i, j, k+1) + tempd + tempd0
3941 ssd(i, j, k) = ssd(i, j, k) +
two*tempd0 -
two*tempd
3942 ssd(i, j, k-1) = ssd(i, j, k-1) + tempd + tempd0
3945 if (branch .eq. 0)
then
3946 x2d = dssd(i, j, k, 2)
3947 dssd(i, j, k, 2) = 0.0_8
3949 x2d = -dssd(i, j, k, 2)
3950 dssd(i, j, k, 2) = 0.0_8
3952 temp1 = sslim + ss(i, j+1, k) +
two*ss(i, j, k) + ss(i, j-1, k)
3954 tempd0 = -((ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))*tempd/&
3956 ssd(i, j+1, k) = ssd(i, j+1, k) + tempd + tempd0
3957 ssd(i, j, k) = ssd(i, j, k) +
two*tempd0 -
two*tempd
3958 ssd(i, j-1, k) = ssd(i, j-1, k) + tempd + tempd0
3961 if (branch .eq. 0)
then
3962 x1d = dssd(i, j, k, 1)
3963 dssd(i, j, k, 1) = 0.0_8
3965 x1d = -dssd(i, j, k, 1)
3966 dssd(i, j, k, 1) = 0.0_8
3968 temp1 = sslim + ss(i+1, j, k) +
two*ss(i, j, k) + ss(i-1, j, k)
3970 tempd0 = -((ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))*tempd/&
3972 ssd(i+1, j, k) = ssd(i+1, j, k) + tempd + tempd0
3973 ssd(i, j, k) = ssd(i, j, k) +
two*tempd0 -
two*tempd
3974 ssd(i-1, j, k) = ssd(i-1, j, k) + tempd + tempd0
3976 call popcontrol2b(branch)
3977 if (branch .ne. 0)
then
3978 if (branch .eq. 1)
then
3982 do ii=0,(
ib+1)*(
jb+1)*(
kb+1)-1
3984 j = mod(ii/(
ib+1),
jb + 1)
3985 k = ii/((
ib+1)*(
jb+1))
3986 temp =
gamma(i, j, k)
3987 temp0 =
w(i, j, k,
irho)
3989 pd(i, j, k) =
pd(i, j, k) + ssd(i, j, k)/temp1
3990 if (.not.(temp0 .le. 0.0_8 .and. (temp .eq. 0.0_8 .or. temp &
3991 & .ne. int(temp))))
wd(i, j, k,
irho) =
wd(i, j, k,
irho) &
3992 & - temp*temp0**(temp-1)*
p(i, j, k)*ssd(i, j, k)/temp1**2
3993 ssd(i, j, k) = 0.0_8
4008 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
ie,
je,
ke,&
4009 &
ib,
jb,
kb,
w,
p,
pori,
porj,
pork,
fw,
radi,
radj,
radk,
gamma
4021 real(kind=realtype),
parameter :: dssmax=0.25_realtype
4025 integer(kind=inttype) :: i, j, k, ind, ii
4026 real(kind=realtype) :: sslim, rhoi
4027 real(kind=realtype) :: sfil, fis2, fis4
4028 real(kind=realtype) :: ppor, rrad, dis2, dis4
4029 real(kind=realtype) :: ddw1, ddw2, ddw3, ddw4, ddw5, fs
4030 real(kind=realtype),
dimension(ie, je, ke, 3) :: dss
4031 real(kind=realtype),
dimension(0:ib, 0:jb, 0:kb) :: ss
4038 real(kind=realtype) :: x1
4039 real(kind=realtype) :: x2
4040 real(kind=realtype) :: x3
4041 real(kind=realtype) :: y1
4042 real(kind=realtype) :: y2
4043 real(kind=realtype) :: y3
4044 real(kind=realtype) :: abs0
4045 real(kind=realtype) :: min1
4046 real(kind=realtype) :: min2
4047 real(kind=realtype) :: min3
4048 real(kind=realtype) :: arg1
4049 if (
rfil .ge. 0.)
then
4082 do ii=0,(
ib+1)*(
jb+1)*(
kb+1)-1
4084 j = mod(ii/(
ib+1),
jb + 1)
4085 k = ii/((
ib+1)*(
jb+1))
4086 ss(i, j, k) =
p(i, j, k)/
w(i, j, k,
irho)**
gamma(i, j, k)
4093 j = mod(ii/
ie,
je) + 1
4095 x1 = (ss(i+1, j, k)-
two*ss(i, j, k)+ss(i-1, j, k))/(ss(i+1, j, k&
4096 & )+
two*ss(i, j, k)+ss(i-1, j, k)+sslim)
4097 if (x1 .ge. 0.)
then
4098 dss(i, j, k, 1) = x1
4100 dss(i, j, k, 1) = -x1
4102 x2 = (ss(i, j+1, k)-
two*ss(i, j, k)+ss(i, j-1, k))/(ss(i, j+1, k&
4103 & )+
two*ss(i, j, k)+ss(i, j-1, k)+sslim)
4104 if (x2 .ge. 0.)
then
4105 dss(i, j, k, 2) = x2
4107 dss(i, j, k, 2) = -x2
4109 x3 = (ss(i, j, k+1)-
two*ss(i, j, k)+ss(i, j, k-1))/(ss(i, j, k+1&
4110 & )+
two*ss(i, j, k)+ss(i, j, k-1)+sslim)
4111 if (x3 .ge. 0.)
then
4112 dss(i, j, k, 3) = x3
4114 dss(i, j, k, 3) = -x3
4147 j = mod(ii/
il,
ny) + 2
4152 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
4153 if (dss(i, j, k, 1) .lt. dss(i+1, j, k, 1))
then
4154 y1 = dss(i+1, j, k, 1)
4156 y1 = dss(i, j, k, 1)
4158 if (dssmax .gt. y1)
then
4163 dis2 = fis2*rrad*min1
4165 dis4 =
mydim(arg1, dis2)
4170 fs = dis2*ddw1 - dis4*(
w(i+2, j, k,
irho)-
w(i-1, j, k,
irho)-&
4175 ddw2 =
w(i+1, j, k,
ivx)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivx)*
w(&
4177 fs = dis2*ddw2 - dis4*(
w(i+2, j, k,
ivx)*
w(i+2, j, k,
irho)-
w(i-&
4182 ddw3 =
w(i+1, j, k,
ivy)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivy)*
w(&
4184 fs = dis2*ddw3 - dis4*(
w(i+2, j, k,
ivy)*
w(i+2, j, k,
irho)-
w(i-&
4189 ddw4 =
w(i+1, j, k,
ivz)*
w(i+1, j, k,
irho) -
w(i, j, k,
ivz)*
w(&
4191 fs = dis2*ddw4 - dis4*(
w(i+2, j, k,
ivz)*
w(i+2, j, k,
irho)-
w(i-&
4196 ddw5 =
w(i+1, j, k,
irhoe) +
p(i+1, j, k) - (
w(i, j, k,
irhoe)+
p&
4198 fs = dis2*ddw5 - dis4*(
w(i+2, j, k,
irhoe)+
p(i+2, j, k)-(
w(i-1, &
4209 j = mod(ii/
nx,
jl) + 1
4214 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
4215 if (dss(i, j, k, 2) .lt. dss(i, j+1, k, 2))
then
4216 y2 = dss(i, j+1, k, 2)
4218 y2 = dss(i, j, k, 2)
4220 if (dssmax .gt. y2)
then
4225 dis2 = fis2*rrad*min2
4227 dis4 =
mydim(arg1, dis2)
4232 fs = dis2*ddw1 - dis4*(
w(i, j+2, k,
irho)-
w(i, j-1, k,
irho)-&
4237 ddw2 =
w(i, j+1, k,
ivx)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivx)*
w(&
4239 fs = dis2*ddw2 - dis4*(
w(i, j+2, k,
ivx)*
w(i, j+2, k,
irho)-
w(i&
4244 ddw3 =
w(i, j+1, k,
ivy)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivy)*
w(&
4246 fs = dis2*ddw3 - dis4*(
w(i, j+2, k,
ivy)*
w(i, j+2, k,
irho)-
w(i&
4251 ddw4 =
w(i, j+1, k,
ivz)*
w(i, j+1, k,
irho) -
w(i, j, k,
ivz)*
w(&
4253 fs = dis2*ddw4 - dis4*(
w(i, j+2, k,
ivz)*
w(i, j+2, k,
irho)-
w(i&
4258 ddw5 =
w(i, j+1, k,
irhoe) +
p(i, j+1, k) - (
w(i, j, k,
irhoe)+
p&
4260 fs = dis2*ddw5 - dis4*(
w(i, j+2, k,
irhoe)+
p(i, j+2, k)-(
w(i, j-&
4271 j = mod(ii/
nx,
ny) + 2
4276 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
4277 if (dss(i, j, k, 3) .lt. dss(i, j, k+1, 3))
then
4278 y3 = dss(i, j, k+1, 3)
4280 y3 = dss(i, j, k, 3)
4282 if (dssmax .gt. y3)
then
4287 dis2 = fis2*rrad*min3
4289 dis4 =
mydim(arg1, dis2)
4294 fs = dis2*ddw1 - dis4*(
w(i, j, k+2,
irho)-
w(i, j, k-1,
irho)-&
4299 ddw2 =
w(i, j, k+1,
ivx)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivx)*
w(&
4301 fs = dis2*ddw2 - dis4*(
w(i, j, k+2,
ivx)*
w(i, j, k+2,
irho)-
w(i&
4306 ddw3 =
w(i, j, k+1,
ivy)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivy)*
w(&
4308 fs = dis2*ddw3 - dis4*(
w(i, j, k+2,
ivy)*
w(i, j, k+2,
irho)-
w(i&
4313 ddw4 =
w(i, j, k+1,
ivz)*
w(i, j, k+1,
irho) -
w(i, j, k,
ivz)*
w(&
4315 fs = dis2*ddw4 - dis4*(
w(i, j, k+2,
ivz)*
w(i, j, k+2,
irho)-
w(i&
4320 ddw5 =
w(i, j, k+1,
irhoe) +
p(i, j, k+1) - (
w(i, j, k,
irhoe)+
p&
4322 fs = dis2*ddw5 - dis4*(
w(i, j, k+2,
irhoe)+
p(i, j, k+2)-(
w(i, j&
4348 use blockpointers,
only :
il,
jl,
kl,
ie,
je,
ke,
ib,
jb,
kb,&
4349 &
w,
wd,
p,
pd,
pori,
porj,
pork,
fw,
fwd,
gamma,
si,
sj,
sk, &
4365 logical,
intent(in) :: finegrid
4369 integer(kind=portype) :: por
4370 integer(kind=inttype) :: nwint
4371 integer(kind=inttype) :: i, j, k, ind
4372 integer(kind=inttype) :: limused, riemannused
4373 real(kind=realtype) :: sx, sy, sz, omk, opk, sfil, gammaface
4374 real(kind=realtype) :: factminmod, sface
4375 real(kind=realtype),
dimension(nw) :: left, right
4376 real(kind=realtype),
dimension(nw) :: leftd, rightd
4377 real(kind=realtype),
dimension(nw) :: du1, du2, du3
4378 real(kind=realtype),
dimension(nw) :: du1d, du2d, du3d
4379 real(kind=realtype),
dimension(nwf) :: flux
4380 real(kind=realtype),
dimension(nwf) :: fluxd
4381 logical :: firstorderk, correctfork, rotationalperiodic
4383 intrinsic associated
4385 real(kind=realtype) :: abs0
4386 real(realtype) :: max1
4388 if (
rfil .ge. 0.)
then
4400 rotationalperiodic = .true.
4402 rotationalperiodic = .false.
4414 max1 = 1.e-10_realtype
4422 if (finegrid) limused =
limiter
4427 if (finegrid) riemannused =
riemann
4439 if (correctfork)
then
4444 firstorderk = .true.
4449 firstorderk = .false.
4455 firstorderk = .false.
4490 if (correctfork)
then
4499 right(
ivx) =
w(i+1, j, k,
ivx)
4500 right(
ivy) =
w(i+1, j, k,
ivy)
4501 right(
ivz) =
w(i+1, j, k,
ivz)
4502 right(
irhoe) =
p(i+1, j, k)
4503 if (correctfork)
then
4537 if (correctfork)
then
4546 right(
ivx) =
w(i, j+1, k,
ivx)
4547 right(
ivy) =
w(i, j+1, k,
ivy)
4548 right(
ivz) =
w(i, j+1, k,
ivz)
4549 right(
irhoe) =
p(i, j+1, k)
4550 if (correctfork)
then
4584 if (correctfork)
then
4593 right(
ivx) =
w(i, j, k+1,
ivx)
4594 right(
ivy) =
w(i, j, k+1,
ivy)
4595 right(
ivz) =
w(i, j, k+1,
ivz)
4596 right(
irhoe) =
p(i, j, k+1)
4597 if (correctfork)
then
4630 if (branch .eq. 0)
then
4632 rightd(
itu1) = 0.0_8
4634 pd(i, j, k+1) =
pd(i, j, k+1) + rightd(
irhoe)
4635 rightd(
irhoe) = 0.0_8
4643 rightd(
irho) = 0.0_8
4646 if (branch .eq. 0)
then
4650 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
4651 leftd(
irhoe) = 0.0_8
4662 if (branch .eq. 0)
call popreal8(sface)
4685 if (branch .eq. 0)
then
4687 rightd(
itu1) = 0.0_8
4689 pd(i, j+1, k) =
pd(i, j+1, k) + rightd(
irhoe)
4690 rightd(
irhoe) = 0.0_8
4698 rightd(
irho) = 0.0_8
4701 if (branch .eq. 0)
then
4705 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
4706 leftd(
irhoe) = 0.0_8
4717 if (branch .eq. 0)
call popreal8(sface)
4740 if (branch .eq. 0)
then
4742 rightd(
itu1) = 0.0_8
4744 pd(i+1, j, k) =
pd(i+1, j, k) + rightd(
irhoe)
4745 rightd(
irhoe) = 0.0_8
4753 rightd(
irho) = 0.0_8
4756 if (branch .eq. 0)
then
4760 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
4761 leftd(
irhoe) = 0.0_8
4772 if (branch .eq. 0)
call popreal8(sface)
4805 du1(
irhoe) =
p(i, j, k) -
p(i-1, j, k)
4806 du2(
irhoe) =
p(i+1, j, k) -
p(i, j, k)
4807 du3(
irhoe) =
p(i+2, j, k) -
p(i+1, j, k)
4808 if (correctfork)
then
4834 if (correctfork)
then
4877 du1(
irhoe) =
p(i, j, k) -
p(i, j-1, k)
4878 du2(
irhoe) =
p(i, j+1, k) -
p(i, j, k)
4879 du3(
irhoe) =
p(i, j+2, k) -
p(i, j+1, k)
4880 if (correctfork)
then
4906 if (correctfork)
then
4949 du1(
irhoe) =
p(i, j, k) -
p(i, j, k-1)
4950 du2(
irhoe) =
p(i, j, k+1) -
p(i, j, k)
4951 du3(
irhoe) =
p(i, j, k+2) -
p(i, j, k+1)
4952 if (correctfork)
then
4978 if (correctfork)
then
5028 if (branch .eq. 0)
call popreal8(sface)
5031 if (branch .eq. 0)
then
5035 pd(i, j, k+1) =
pd(i, j, k+1) + rightd(
irhoe)
5040 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
5050 if (branch .eq. 0)
then
5061 pd(i, j, k+2) =
pd(i, j, k+2) + du3d(
irhoe)
5066 pd(i, j, k-1) =
pd(i, j, k-1) - du1d(
irhoe)
5126 if (branch .eq. 0)
call popreal8(sface)
5129 if (branch .eq. 0)
then
5133 pd(i, j+1, k) =
pd(i, j+1, k) + rightd(
irhoe)
5138 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
5148 if (branch .eq. 0)
then
5159 pd(i, j+2, k) =
pd(i, j+2, k) + du3d(
irhoe)
5164 pd(i, j-1, k) =
pd(i, j-1, k) - du1d(
irhoe)
5224 if (branch .eq. 0)
call popreal8(sface)
5227 if (branch .eq. 0)
then
5231 pd(i+1, j, k) =
pd(i+1, j, k) + rightd(
irhoe)
5236 pd(i, j, k) =
pd(i, j, k) + leftd(
irhoe)
5246 if (branch .eq. 0)
then
5257 pd(i+2, j, k) =
pd(i+2, j, k) + du3d(
irhoe)
5262 pd(i-1, j, k) =
pd(i-1, j, k) - du1d(
irhoe)
5325 & rotmatrix, left, leftd, right, rightd)
5330 real(kind=realtype),
parameter :: epslim=1.e-10_realtype
5334 real(kind=realtype),
dimension(:),
intent(inout) :: du1, du2, du3
5335 real(kind=realtype),
dimension(:),
intent(inout) :: du1d, du2d, &
5337 real(kind=realtype),
dimension(:) :: left, right
5338 real(kind=realtype),
dimension(:) :: leftd, rightd
5339 real(kind=realtype),
dimension(:, :, :, :, :),
pointer :: &
5344 integer(kind=inttype) :: l
5345 real(kind=realtype) :: rl1, rl2, rr1, rr2, tmp, dvx, dvy, dvz
5346 real(kind=realtype) :: rl1d, rl2d, rr1d, rr2d, tmpd, dvxd, dvyd, &
5348 real(kind=realtype),
dimension(3, 3) :: rot
5353 real(kind=realtype) :: x1
5354 real(kind=realtype) :: x1d
5355 real(kind=realtype) :: y1
5356 real(kind=realtype) :: y1d
5357 real(kind=realtype) :: y2
5358 real(kind=realtype) :: y2d
5359 real(kind=realtype) :: x2
5360 real(kind=realtype) :: x2d
5361 real(kind=realtype) :: y3
5362 real(kind=realtype) :: y3d
5363 real(kind=realtype) :: y4
5364 real(kind=realtype) :: y4d
5365 real(kind=realtype) :: x3
5366 real(kind=realtype) :: x3d
5367 real(kind=realtype) :: x4
5368 real(kind=realtype) :: x4d
5369 real(kind=realtype) :: x5
5370 real(kind=realtype) :: x5d
5371 real(kind=realtype) :: x6
5372 real(kind=realtype) :: x6d
5373 real(kind=realtype) :: max2
5374 real(kind=realtype) :: max2d
5375 real(kind=realtype) :: max3
5376 real(kind=realtype) :: max3d
5377 real(kind=realtype) :: max4
5378 real(kind=realtype) :: max4d
5379 real(kind=realtype) :: max5
5380 real(kind=realtype) :: max5d
5381 real(kind=realtype) :: max6
5382 real(kind=realtype) :: max6d
5383 real(kind=realtype) :: max7
5384 real(kind=realtype) :: max7d
5385 real(kind=realtype) :: temp
5386 real(kind=realtype) :: tempd
5390 if (rotationalperiodic)
then
5393 rot(1, 1) = rotmatrix(i, j, k, 1, 1)
5394 rot(1, 2) = rotmatrix(i, j, k, 1, 2)
5395 rot(1, 3) = rotmatrix(i, j, k, 1, 3)
5396 rot(2, 1) = rotmatrix(i, j, k, 2, 1)
5397 rot(2, 2) = rotmatrix(i, j, k, 2, 2)
5398 rot(2, 3) = rotmatrix(i, j, k, 2, 3)
5399 rot(3, 1) = rotmatrix(i, j, k, 3, 1)
5400 rot(3, 2) = rotmatrix(i, j, k, 3, 2)
5401 rot(3, 3) = rotmatrix(i, j, k, 3, 3)
5407 du1(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
5408 du1(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
5409 du1(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
5413 du2(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
5414 du2(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
5415 du2(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
5419 du3(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
5420 du3(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
5421 du3(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
5429 select case (limused)
5431 call pushcontrol2b(1)
5437 if (du2(l) .ge. 0.)
then
5446 if (x1 .lt. epslim)
then
5457 tmp =
one/sign(max2, du2(l))
5458 if (du1(l) .ge. 0.)
then
5467 if (x3 .lt. epslim)
then
5476 y1 = du2(l)/sign(max4, du1(l))
5477 if (
zero .lt. y1)
then
5486 if (
zero .lt. du1(l)*tmp)
then
5495 if (
zero .lt. du3(l)*tmp)
then
5504 if (du3(l) .ge. 0.)
then
5513 if (x4 .lt. epslim)
then
5522 y2 = du2(l)/sign(max5, du3(l))
5523 if (
zero .lt. y2)
then
5533 rl1 = rl1*(rl1+
one)/(rl1*rl1+
one)
5534 rl2 = rl2*(rl2+
one)/(rl2*rl2+
one)
5535 rr1 = rr1*(rr1+
one)/(rr1*rr1+
one)
5536 rr2 = rr2*(rr2+
one)/(rr2*rr2+
one)
5540 call pushcontrol2b(2)
5546 if (du2(l) .ge. 0.)
then
5555 if (x2 .lt. epslim)
then
5566 tmp =
one/sign(max3, du2(l))
5567 if (du1(l) .ge. 0.)
then
5576 if (x5 .lt. epslim)
then
5585 y3 = du2(l)/sign(max6, du1(l))
5586 if (
zero .lt. y3)
then
5595 if (
zero .lt. du1(l)*tmp)
then
5604 if (
zero .lt. du3(l)*tmp)
then
5613 if (du3(l) .ge. 0.)
then
5622 if (x6 .lt. epslim)
then
5631 y4 = du2(l)/sign(max7, du3(l))
5632 if (
zero .lt. y4)
then
5641 if (
one .gt. factminmod*rl1)
then
5642 rl1 = factminmod*rl1
5650 if (
one .gt. factminmod*rl2)
then
5651 rl2 = factminmod*rl2
5659 if (
one .gt. factminmod*rr1)
then
5660 rr1 = factminmod*rr1
5668 if (
one .gt. factminmod*rr2)
then
5669 rr2 = factminmod*rr2
5678 call pushcontrol2b(3)
5680 call pushcontrol2b(0)
5685 if (firstorderk)
then
5695 if (rotationalperiodic)
then
5696 dvxd = rot(1, 3)*rightd(
ivz)
5697 dvyd = rot(2, 3)*rightd(
ivz)
5698 dvzd = rot(3, 3)*rightd(
ivz)
5700 dvxd = dvxd + rot(1, 2)*rightd(
ivy)
5701 dvyd = dvyd + rot(2, 2)*rightd(
ivy)
5702 dvzd = dvzd + rot(3, 2)*rightd(
ivy)
5704 dvxd = dvxd + rot(1, 1)*rightd(
ivx)
5705 dvyd = dvyd + rot(2, 1)*rightd(
ivx)
5706 dvzd = dvzd + rot(3, 1)*rightd(
ivx)
5708 rightd(
ivz) = rightd(
ivz) + dvzd
5709 rightd(
ivy) = rightd(
ivy) + dvyd
5710 rightd(
ivx) = rightd(
ivx) + dvxd
5711 dvxd = rot(1, 3)*leftd(
ivz)
5712 dvyd = rot(2, 3)*leftd(
ivz)
5713 dvzd = rot(3, 3)*leftd(
ivz)
5715 dvxd = dvxd + rot(1, 2)*leftd(
ivy)
5716 dvyd = dvyd + rot(2, 2)*leftd(
ivy)
5717 dvzd = dvzd + rot(3, 2)*leftd(
ivy)
5719 dvxd = dvxd + rot(1, 1)*leftd(
ivx)
5720 dvyd = dvyd + rot(2, 1)*leftd(
ivx)
5721 dvzd = dvzd + rot(3, 1)*leftd(
ivx)
5723 leftd(
ivz) = leftd(
ivz) + dvzd
5724 leftd(
ivy) = leftd(
ivy) + dvyd
5725 leftd(
ivx) = leftd(
ivx) + dvxd
5729 if (branch .eq. 0)
then
5730 rightd(
itu1) = 0.0_8
5733 call popcontrol2b(branch)
5734 if (branch .lt. 2)
then
5735 if (branch .ne. 0)
then
5737 du3d(l) = du3d(l) - omk*rightd(l)
5738 du2d(l) = du2d(l) + opk*leftd(l) - opk*rightd(l)
5740 du1d(l) = du1d(l) + omk*leftd(l)
5744 else if (branch .eq. 2)
then
5746 rr1d = -(du2(l)*opk*rightd(l))
5747 du2d(l) = du2d(l) + rl2*opk*leftd(l) - rr1*opk*rightd(l)
5748 rr2d = -(du3(l)*omk*rightd(l))
5749 du3d(l) = du3d(l) - rr2*omk*rightd(l)
5751 rl1d = du1(l)*omk*leftd(l)
5752 du1d(l) = du1d(l) + rl1*omk*leftd(l)
5753 rl2d = du2(l)*opk*leftd(l)
5755 tempd = rr2d/(
one+rr2**2)
5756 rr2d = (
one+2*rr2-2*rr2**2*(
one+rr2)/(
one+rr2**2))*tempd
5757 tempd = rr1d/(
one+rr1**2)
5758 rr1d = (
one+2*rr1-2*rr1**2*(
one+rr1)/(
one+rr1**2))*tempd
5759 tempd = rl2d/(
one+rl2**2)
5760 rl2d = (
one+2*rl2-2*rl2**2*(
one+rl2)/(
one+rl2**2))*tempd
5761 tempd = rl1d/(
one+rl1**2)
5762 rl1d = (
one+2*rl1-2*rl1**2*(
one+rl1)/(
one+rl1**2))*tempd
5765 if (branch .eq. 0)
then
5770 temp = sign(max5, du3(l))
5771 du2d(l) = du2d(l) + y2d/temp
5772 tempd = -(du2(l)*y2d/temp**2)
5773 max5d = sign(1.d0, max5*du3(l))*tempd
5776 if (branch .eq. 0)
then
5783 if (branch .eq. 0)
then
5784 du3d(l) = du3d(l) + x4d
5786 du3d(l) = du3d(l) - x4d
5790 if (branch .eq. 0)
then
5791 du3d(l) = du3d(l) + tmp*rr1d
5798 if (branch .eq. 0)
then
5799 du1d(l) = du1d(l) + tmp*rl2d
5800 tmpd = tmpd + du1(l)*rl2d
5805 if (branch .eq. 0)
then
5810 temp = sign(max4, du1(l))
5811 du2d(l) = du2d(l) + y1d/temp
5812 tempd = -(du2(l)*y1d/temp**2)
5813 max4d = sign(1.d0, max4*du1(l))*tempd
5816 if (branch .eq. 0)
then
5823 if (branch .eq. 0)
then
5824 du1d(l) = du1d(l) + x3d
5826 du1d(l) = du1d(l) - x3d
5828 temp = sign(max2, du2(l))
5829 tempd = -(
one*tmpd/temp**2)
5830 max2d = sign(1.d0, max2*du2(l))*tempd
5833 if (branch .eq. 0)
then
5840 if (branch .eq. 0)
then
5841 du2d(l) = du2d(l) + x1d
5843 du2d(l) = du2d(l) - x1d
5848 rr1d = -(du2(l)*opk*rightd(l))
5849 du2d(l) = du2d(l) + rl2*opk*leftd(l) - rr1*opk*rightd(l)
5850 rr2d = -(du3(l)*omk*rightd(l))
5851 du3d(l) = du3d(l) - rr2*omk*rightd(l)
5853 rl1d = du1(l)*omk*leftd(l)
5854 du1d(l) = du1d(l) + rl1*omk*leftd(l)
5855 rl2d = du2(l)*opk*leftd(l)
5859 if (branch .eq. 0)
then
5860 rr2d = factminmod*rr2d
5866 if (branch .eq. 0)
then
5867 rr1d = factminmod*rr1d
5873 if (branch .eq. 0)
then
5874 rl2d = factminmod*rl2d
5880 if (branch .eq. 0)
then
5881 rl1d = factminmod*rl1d
5887 if (branch .eq. 0)
then
5892 temp = sign(max7, du3(l))
5893 du2d(l) = du2d(l) + y4d/temp
5894 tempd = -(du2(l)*y4d/temp**2)
5895 max7d = sign(1.d0, max7*du3(l))*tempd
5898 if (branch .eq. 0)
then
5905 if (branch .eq. 0)
then
5906 du3d(l) = du3d(l) + x6d
5908 du3d(l) = du3d(l) - x6d
5912 if (branch .eq. 0)
then
5913 du3d(l) = du3d(l) + tmp*rr1d
5920 if (branch .eq. 0)
then
5921 du1d(l) = du1d(l) + tmp*rl2d
5922 tmpd = tmpd + du1(l)*rl2d
5927 if (branch .eq. 0)
then
5932 temp = sign(max6, du1(l))
5933 du2d(l) = du2d(l) + y3d/temp
5934 tempd = -(du2(l)*y3d/temp**2)
5935 max6d = sign(1.d0, max6*du1(l))*tempd
5938 if (branch .eq. 0)
then
5945 if (branch .eq. 0)
then
5946 du1d(l) = du1d(l) + x5d
5948 du1d(l) = du1d(l) - x5d
5950 temp = sign(max3, du2(l))
5951 tempd = -(
one*tmpd/temp**2)
5952 max3d = sign(1.d0, max3*du2(l))*tempd
5955 if (branch .eq. 0)
then
5962 if (branch .eq. 0)
then
5963 du2d(l) = du2d(l) + x2d
5965 du2d(l) = du2d(l) - x2d
5971 if (branch .eq. 0)
then
5972 dvxd = rot(3, 1)*du3d(
ivz)
5973 dvyd = rot(3, 2)*du3d(
ivz)
5974 dvzd = rot(3, 3)*du3d(
ivz)
5976 dvxd = dvxd + rot(2, 1)*du3d(
ivy)
5977 dvyd = dvyd + rot(2, 2)*du3d(
ivy)
5978 dvzd = dvzd + rot(2, 3)*du3d(
ivy)
5980 dvxd = dvxd + rot(1, 1)*du3d(
ivx)
5981 dvyd = dvyd + rot(1, 2)*du3d(
ivx)
5982 dvzd = dvzd + rot(1, 3)*du3d(
ivx)
5984 du3d(
ivz) = du3d(
ivz) + dvzd
5985 du3d(
ivy) = du3d(
ivy) + dvyd
5986 du3d(
ivx) = du3d(
ivx) + dvxd
5987 dvxd = rot(3, 1)*du2d(
ivz)
5988 dvyd = rot(3, 2)*du2d(
ivz)
5989 dvzd = rot(3, 3)*du2d(
ivz)
5991 dvxd = dvxd + rot(2, 1)*du2d(
ivy)
5992 dvyd = dvyd + rot(2, 2)*du2d(
ivy)
5993 dvzd = dvzd + rot(2, 3)*du2d(
ivy)
5995 dvxd = dvxd + rot(1, 1)*du2d(
ivx)
5996 dvyd = dvyd + rot(1, 2)*du2d(
ivx)
5997 dvzd = dvzd + rot(1, 3)*du2d(
ivx)
5999 du2d(
ivz) = du2d(
ivz) + dvzd
6000 du2d(
ivy) = du2d(
ivy) + dvyd
6001 du2d(
ivx) = du2d(
ivx) + dvxd
6002 dvxd = rot(3, 1)*du1d(
ivz)
6003 dvyd = rot(3, 2)*du1d(
ivz)
6004 dvzd = rot(3, 3)*du1d(
ivz)
6006 dvxd = dvxd + rot(2, 1)*du1d(
ivy)
6007 dvyd = dvyd + rot(2, 2)*du1d(
ivy)
6008 dvzd = dvzd + rot(2, 3)*du1d(
ivy)
6010 dvxd = dvxd + rot(1, 1)*du1d(
ivx)
6011 dvyd = dvyd + rot(1, 2)*du1d(
ivx)
6012 dvzd = dvzd + rot(1, 3)*du1d(
ivx)
6014 du1d(
ivz) = du1d(
ivz) + dvzd
6015 du1d(
ivy) = du1d(
ivy) + dvyd
6016 du1d(
ivx) = du1d(
ivx) + dvxd
6026 real(kind=realtype),
parameter :: epslim=1.e-10_realtype
6030 real(kind=realtype),
dimension(:),
intent(inout) :: du1, du2, du3
6031 real(kind=realtype),
dimension(:),
intent(out) :: left, right
6032 real(kind=realtype),
dimension(:, :, :, :, :),
pointer :: &
6037 integer(kind=inttype) :: l
6038 real(kind=realtype) :: rl1, rl2, rr1, rr2, tmp, dvx, dvy, dvz
6039 real(kind=realtype),
dimension(3, 3) :: rot
6044 real(kind=realtype) :: x1
6045 real(kind=realtype) :: y1
6046 real(kind=realtype) :: y2
6047 real(kind=realtype) :: x2
6048 real(kind=realtype) :: y3
6049 real(kind=realtype) :: y4
6050 real(kind=realtype) :: x3
6051 real(kind=realtype) :: x4
6052 real(kind=realtype) :: x5
6053 real(kind=realtype) :: x6
6054 real(kind=realtype) :: max2
6055 real(kind=realtype) :: max3
6056 real(kind=realtype) :: max4
6057 real(kind=realtype) :: max5
6058 real(kind=realtype) :: max6
6059 real(kind=realtype) :: max7
6062 if (rotationalperiodic)
then
6065 rot(1, 1) = rotmatrix(i, j, k, 1, 1)
6066 rot(1, 2) = rotmatrix(i, j, k, 1, 2)
6067 rot(1, 3) = rotmatrix(i, j, k, 1, 3)
6068 rot(2, 1) = rotmatrix(i, j, k, 2, 1)
6069 rot(2, 2) = rotmatrix(i, j, k, 2, 2)
6070 rot(2, 3) = rotmatrix(i, j, k, 2, 3)
6071 rot(3, 1) = rotmatrix(i, j, k, 3, 1)
6072 rot(3, 2) = rotmatrix(i, j, k, 3, 2)
6073 rot(3, 3) = rotmatrix(i, j, k, 3, 3)
6079 du1(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
6080 du1(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
6081 du1(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
6085 du2(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
6086 du2(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
6087 du2(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
6091 du3(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
6092 du3(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
6093 du3(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
6096 select case (limused)
6101 left(l) = omk*du1(l) + opk*du2(l)
6102 right(l) = -(omk*du3(l)) - opk*du2(l)
6109 if (du2(l) .ge. 0.)
then
6114 if (x1 .lt. epslim)
then
6121 tmp =
one/sign(max2, du2(l))
6122 if (du1(l) .ge. 0.)
then
6127 if (x3 .lt. epslim)
then
6132 y1 = du2(l)/sign(max4, du1(l))
6133 if (
zero .lt. y1)
then
6138 if (
zero .lt. du1(l)*tmp)
then
6143 if (
zero .lt. du3(l)*tmp)
then
6148 if (du3(l) .ge. 0.)
then
6153 if (x4 .lt. epslim)
then
6158 y2 = du2(l)/sign(max5, du3(l))
6159 if (
zero .lt. y2)
then
6165 rl1 = rl1*(rl1+
one)/(rl1*rl1+
one)
6166 rl2 = rl2*(rl2+
one)/(rl2*rl2+
one)
6167 rr1 = rr1*(rr1+
one)/(rr1*rr1+
one)
6168 rr2 = rr2*(rr2+
one)/(rr2*rr2+
one)
6171 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
6172 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
6179 if (du2(l) .ge. 0.)
then
6184 if (x2 .lt. epslim)
then
6191 tmp =
one/sign(max3, du2(l))
6192 if (du1(l) .ge. 0.)
then
6197 if (x5 .lt. epslim)
then
6202 y3 = du2(l)/sign(max6, du1(l))
6203 if (
zero .lt. y3)
then
6208 if (
zero .lt. du1(l)*tmp)
then
6213 if (
zero .lt. du3(l)*tmp)
then
6218 if (du3(l) .ge. 0.)
then
6223 if (x6 .lt. epslim)
then
6228 y4 = du2(l)/sign(max7, du3(l))
6229 if (
zero .lt. y4)
then
6234 if (
one .gt. factminmod*rl1)
then
6235 rl1 = factminmod*rl1
6239 if (
one .gt. factminmod*rl2)
then
6240 rl2 = factminmod*rl2
6244 if (
one .gt. factminmod*rr1)
then
6245 rr1 = factminmod*rr1
6249 if (
one .gt. factminmod*rr2)
then
6250 rr2 = factminmod*rr2
6256 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
6257 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
6263 if (firstorderk)
then
6270 if (rotationalperiodic)
then
6275 left(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
6276 left(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
6277 left(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
6282 right(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
6283 right(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
6284 right(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
6298 real(kind=realtype),
dimension(*),
intent(in) :: left, right
6299 real(kind=realtype),
dimension(*) :: leftd, rightd
6300 real(kind=realtype),
dimension(*) :: flux
6301 real(kind=realtype),
dimension(*) :: fluxd
6305 real(kind=realtype) :: porflux, rface
6306 real(kind=realtype) :: etl, etr, z1l, z1r, tmp
6307 real(kind=realtype) :: etld, etrd, z1ld, z1rd, tmpd
6308 real(kind=realtype) :: dr, dru, drv, drw, dre, drk
6309 real(kind=realtype) :: drd, drud, drvd, drwd, dred, drkd
6310 real(kind=realtype) :: ravg, uavg, vavg, wavg, havg, kavg
6311 real(kind=realtype) :: uavgd, vavgd, wavgd, havgd, kavgd
6312 real(kind=realtype) :: alphaavg, a2avg, aavg, unavg
6313 real(kind=realtype) :: alphaavgd, a2avgd, aavgd, unavgd
6314 real(kind=realtype) :: ovaavg, ova2avg, area, eta
6315 real(kind=realtype) :: ovaavgd, ova2avgd, etad
6316 real(kind=realtype) :: gm1, gm53
6317 real(kind=realtype) :: lam1, lam2, lam3
6318 real(kind=realtype) :: lam1d, lam2d, lam3d
6319 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
6320 real(kind=realtype) :: abv1d, abv2d, abv3d, abv4d, abv5d, abv6d, &
6322 real(kind=realtype),
dimension(2) :: ktmp
6323 real(kind=realtype),
dimension(2) :: ktmpd
6327 real(kind=realtype) :: x1
6328 real(kind=realtype) :: x1d
6329 real(kind=realtype) :: x2
6330 real(kind=realtype) :: x2d
6331 real(realtype) :: max2
6332 real(kind=realtype) :: abs1
6333 real(kind=realtype) :: abs1d
6334 real(kind=realtype) :: abs2
6335 real(kind=realtype) :: abs2d
6336 real(kind=realtype) :: temp
6337 real(kind=realtype) :: tempd
6338 real(kind=realtype) :: temp0
6339 real(kind=realtype) :: temp1
6340 real(kind=realtype) :: tempd0
6341 real(kind=realtype) :: tempd1
6348 gm1 = gammaface -
one
6351 select case (riemannused)
6360 z1l = sqrt(left(
irho))
6361 z1r = sqrt(right(
irho))
6365 if (correctfork)
then
6368 ktmp(1) = left(
itu1)
6369 ktmp(2) = right(
itu1)
6375 kavg = tmp*(z1l*left(
itu1)+z1r*right(
itu1))
6389 &
irhoe), ktmp(1), etl, correctfork)
6391 & right(
irhoe), ktmp(2), etr, correctfork)
6401 uavg = tmp*(z1l*left(
ivx)+z1r*right(
ivx))
6402 vavg = tmp*(z1l*left(
ivy)+z1r*right(
ivy))
6403 wavg = tmp*(z1l*left(
ivz)+z1r*right(
ivz))
6404 havg = tmp*((etl+left(
irhoe))/z1l+(etr+right(
irhoe))/z1r)
6407 area = sqrt(sx**2 + sy**2 + sz**2)
6408 if (1.e-25_realtype .lt. area)
then
6411 max2 = 1.e-25_realtype
6420 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
6421 if (gm1*(havg-alphaavg) - gm53*kavg .ge. 0.)
then
6422 a2avg = gm1*(havg-alphaavg) - gm53*kavg
6426 a2avg = -(gm1*(havg-alphaavg)-gm53*kavg)
6431 unavg = uavg*sx + vavg*sy + wavg*sz
6444 x1 = (left(
ivx)-right(
ivx))*sx + (left(
ivy)-right(
ivy))*sy + (&
6445 & left(
ivz)-right(
ivz))*sz
6446 if (x1 .ge. 0.)
then
6455 x2 = sqrt(gammaface*left(
irhoe)/left(
irho)) - sqrt(gammaface*&
6457 if (x2 .ge. 0.)
then
6476 eta =
half*(abs1+abs2)
6477 if (unavg - rface + aavg .ge. 0.)
then
6478 lam1 = unavg - rface + aavg
6482 lam1 = -(unavg-rface+aavg)
6486 if (unavg - rface - aavg .ge. 0.)
then
6487 lam2 = unavg - rface - aavg
6491 lam2 = -(unavg-rface-aavg)
6495 if (unavg - rface .ge. 0.)
then
6496 lam3 = unavg - rface
6500 lam3 = -(unavg-rface)
6506 if (lam1 .lt. tmp)
then
6507 lam1 = eta +
fourth*lam1*lam1/eta
6514 if (lam2 .lt. tmp)
then
6515 lam2 = eta +
fourth*lam2*lam2/eta
6522 if (lam3 .lt. tmp)
then
6523 lam3 = eta +
fourth*lam3*lam3/eta
6537 abv1 =
half*(lam1+lam2)
6538 abv2 =
half*(lam1-lam2)
6540 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53&
6542 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
6543 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
6544 abv7 = abv2*abv4*ovaavg + abv3*abv5
6554 tempd0 = -(porflux*fluxd(
irhoe))
6555 fluxd(
irhoe) = 0.0_8
6560 unavgd = abv7*tempd0
6561 abv7d = unavg*tempd0
6562 tempd0 = -(porflux*fluxd(
imz))
6564 lam3d = lam3d + drw*tempd0
6567 abv6d = abv6d + wavg*tempd0
6568 abv7d = abv7d + sz*tempd0
6569 tempd0 = -(porflux*fluxd(
imy))
6571 lam3d = lam3d + drv*tempd0
6574 abv6d = abv6d + vavg*tempd0
6575 abv7d = abv7d + sy*tempd0
6576 tempd0 = -(porflux*fluxd(
imx))
6578 lam3d = lam3d + dru*tempd0
6581 abv6d = abv6d + uavg*tempd0
6582 abv7d = abv7d + sx*tempd0
6583 tempd0 = -(porflux*fluxd(
irho))
6586 abv6d = abv6d + tempd0
6587 abv2d = abv4*ovaavg*abv7d + abv5*ovaavg*abv6d
6588 abv4d = abv2*ovaavg*abv7d + abv3*ova2avg*abv6d
6589 ovaavgd = abv2*abv4*abv7d + abv2*abv5*abv6d
6590 abv3d = abv5*abv7d + abv4*ova2avg*abv6d
6591 lam3d = lam3d + dr*tempd0 - abv3d
6592 abv5d = abv3*abv7d + abv2*ovaavg*abv6d
6593 ova2avgd = abv3*abv4*abv6d
6594 unavgd = unavgd - dr*abv5d
6596 drud = drud + sx*abv5d - uavg*tempd0
6597 drvd = drvd + sy*abv5d - vavg*tempd0
6598 drwd = drwd + sz*abv5d - wavg*tempd0
6599 drd = drd + alphaavg*tempd0 - unavg*abv5d
6600 drkd = -(gm53*abv4d)
6601 alphaavgd = dr*tempd0
6602 uavgd = uavgd - dru*tempd0
6603 vavgd = vavgd - drv*tempd0
6604 dred = dred + tempd0
6605 wavgd = wavgd - drw*tempd0
6614 if (branch .eq. 0)
then
6615 tempd0 =
fourth*lam3d/eta
6616 etad = lam3d - lam3**2*tempd0/eta
6617 lam3d = 2*lam3*tempd0
6623 if (branch .eq. 0)
then
6624 tempd0 =
fourth*lam2d/eta
6625 etad = etad + lam2d - lam2**2*tempd0/eta
6626 lam2d = 2*lam2*tempd0
6630 if (branch .eq. 0)
then
6631 tempd0 =
fourth*lam1d/eta
6632 etad = etad + lam1d - lam1**2*tempd0/eta
6633 lam1d = 2*lam1*tempd0
6637 if (branch .eq. 0)
then
6638 unavgd = unavgd + lam3d
6640 unavgd = unavgd - lam3d
6644 if (branch .eq. 0)
then
6645 unavgd = unavgd + lam2d
6649 unavgd = unavgd - lam2d
6653 if (branch .eq. 0)
then
6654 unavgd = unavgd + lam1d
6655 aavgd = aavgd + lam1d
6657 unavgd = unavgd - lam1d
6658 aavgd = aavgd - lam1d
6664 if (branch .eq. 0)
then
6671 if (gammaface*temp1 .eq. 0.0_8)
then
6674 tempd0 = gammaface*x2d/(left(
irho)*2.0*sqrt(gammaface*temp1)&
6677 if (gammaface*temp0 .eq. 0.0_8)
then
6680 tempd1 = -(gammaface*x2d/(right(
irho)*2.0*sqrt(gammaface*&
6684 rightd(
irho) = rightd(
irho) - temp0*tempd1
6686 leftd(
irho) = leftd(
irho) - temp1*tempd0
6689 if (branch .eq. 0)
then
6694 leftd(
ivx) = leftd(
ivx) + sx*x1d
6695 rightd(
ivx) = rightd(
ivx) - sx*x1d
6696 leftd(
ivy) = leftd(
ivy) + sy*x1d
6697 rightd(
ivy) = rightd(
ivy) - sy*x1d
6698 leftd(
ivz) = leftd(
ivz) + sz*x1d
6699 rightd(
ivz) = rightd(
ivz) - sz*x1d
6702 if (branch .ne. 0) unavgd = 0.0_8
6703 aavgd = aavgd -
one*ovaavgd/aavg**2
6704 if (a2avg .eq. 0.0_8)
then
6705 a2avgd = -(
one*ova2avgd/a2avg**2)
6707 a2avgd = aavgd/(2.0*sqrt(a2avg)) -
one*ova2avgd/a2avg**2
6709 uavgd = uavgd + sx*unavgd
6710 vavgd = vavgd + sy*unavgd
6711 wavgd = wavgd + sz*unavgd
6714 if (branch .eq. 0)
then
6715 havgd = havgd + gm1*a2avgd
6716 alphaavgd = alphaavgd - gm1*a2avgd
6717 kavgd = -(gm53*a2avgd)
6720 havgd = havgd - gm1*a2avgd
6721 alphaavgd = alphaavgd + gm1*a2avgd
6723 tempd0 =
half*alphaavgd
6724 uavgd = uavgd + 2*uavg*tempd0
6725 vavgd = vavgd + 2*vavg*tempd0
6726 wavgd = wavgd + 2*wavg*tempd0
6728 temp = (etr+right(
irhoe))/z1r
6729 temp0 = (etl+left(
irhoe))/z1l
6730 tmpd = (temp0+temp)*havgd + (z1l*left(
ivz)+z1r*right(
ivz))*&
6731 & wavgd + (z1l*left(
ivy)+z1r*right(
ivy))*vavgd + (z1l*left(
ivx&
6732 & )+z1r*right(
ivx))*uavgd
6738 z1rd = -(temp*tempd)
6739 etld = tempd1 - dred
6742 z1ld = left(
ivz)*tempd - temp0*tempd1
6743 leftd(
ivz) = leftd(
ivz) + z1l*tempd
6744 z1rd = z1rd + right(
ivz)*tempd
6745 rightd(
ivz) = rightd(
ivz) + z1r*tempd
6747 z1ld = z1ld + left(
ivy)*tempd
6748 leftd(
ivy) = leftd(
ivy) + z1l*tempd
6749 z1rd = z1rd + right(
ivy)*tempd
6750 rightd(
ivy) = rightd(
ivy) + z1r*tempd
6752 z1ld = z1ld + left(
ivx)*tempd
6753 leftd(
ivx) = leftd(
ivx) + z1l*tempd
6754 z1rd = z1rd + right(
ivx)*tempd
6755 rightd(
ivx) = rightd(
ivx) + z1r*tempd
6774 & ), etr, etrd, correctfork)
6777 & left(
irhoe), leftd(
irhoe), ktmp(1), ktmpd(1), etl, &
6778 & etld, correctfork)
6781 if (branch .ne. 0)
then
6782 tmpd = tmpd + (z1l*left(
itu1)+z1r*right(
itu1))*kavgd
6784 z1ld = z1ld + left(
itu1)*tempd
6785 leftd(
itu1) = leftd(
itu1) + z1l*tempd
6786 z1rd = z1rd + right(
itu1)*tempd
6787 rightd(
itu1) = rightd(
itu1) + z1r*tempd
6789 rightd(
itu1) = rightd(
itu1) + right(
irho)*drkd + ktmpd(2)
6794 tempd = -(
one*tmpd/(z1l+z1r)**2)
6797 if (.not.right(
irho) .eq. 0.0_8) rightd(
irho) = rightd(
irho) +&
6798 & z1rd/(2.0*sqrt(right(
irho)))
6799 if (.not.left(
irho) .eq. 0.0_8) leftd(
irho) = leftd(
irho) + &
6800 & z1ld/(2.0*sqrt(left(
irho)))
6811 real(kind=realtype),
dimension(*),
intent(in) :: left, right
6812 real(kind=realtype),
dimension(*),
intent(out) :: flux
6816 real(kind=realtype) :: porflux, rface
6817 real(kind=realtype) :: etl, etr, z1l, z1r, tmp
6818 real(kind=realtype) :: dr, dru, drv, drw, dre, drk
6819 real(kind=realtype) :: ravg, uavg, vavg, wavg, havg, kavg
6820 real(kind=realtype) :: alphaavg, a2avg, aavg, unavg
6821 real(kind=realtype) :: ovaavg, ova2avg, area, eta
6822 real(kind=realtype) :: gm1, gm53
6823 real(kind=realtype) :: lam1, lam2, lam3
6824 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
6825 real(kind=realtype),
dimension(2) :: ktmp
6829 real(kind=realtype) :: x1
6830 real(kind=realtype) :: x2
6831 real(realtype) :: max2
6832 real(kind=realtype) :: abs1
6833 real(kind=realtype) :: abs2
6839 gm1 = gammaface -
one
6842 select case (riemannused)
6851 z1l = sqrt(left(
irho))
6852 z1r = sqrt(right(
irho))
6856 if (correctfork)
then
6859 ktmp(1) = left(
itu1)
6860 ktmp(2) = right(
itu1)
6866 kavg = tmp*(z1l*left(
itu1)+z1r*right(
itu1))
6876 &
irhoe), ktmp(1), etl, correctfork)
6878 & right(
irhoe), ktmp(2), etr, correctfork)
6888 ravg =
fourth*(z1r+z1l)**2
6889 uavg = tmp*(z1l*left(
ivx)+z1r*right(
ivx))
6890 vavg = tmp*(z1l*left(
ivy)+z1r*right(
ivy))
6891 wavg = tmp*(z1l*left(
ivz)+z1r*right(
ivz))
6892 havg = tmp*((etl+left(
irhoe))/z1l+(etr+right(
irhoe))/z1r)
6895 area = sqrt(sx**2 + sy**2 + sz**2)
6896 if (1.e-25_realtype .lt. area)
then
6899 max2 = 1.e-25_realtype
6908 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
6909 if (gm1*(havg-alphaavg) - gm53*kavg .ge. 0.)
then
6910 a2avg = gm1*(havg-alphaavg) - gm53*kavg
6912 a2avg = -(gm1*(havg-alphaavg)-gm53*kavg)
6915 unavg = uavg*sx + vavg*sy + wavg*sz
6921 x1 = (left(
ivx)-right(
ivx))*sx + (left(
ivy)-right(
ivy))*sy + (&
6922 & left(
ivz)-right(
ivz))*sz
6923 if (x1 .ge. 0.)
then
6928 x2 = sqrt(gammaface*left(
irhoe)/left(
irho)) - sqrt(gammaface*&
6930 if (x2 .ge. 0.)
then
6945 eta =
half*(abs1+abs2)
6946 if (unavg - rface + aavg .ge. 0.)
then
6947 lam1 = unavg - rface + aavg
6949 lam1 = -(unavg-rface+aavg)
6951 if (unavg - rface - aavg .ge. 0.)
then
6952 lam2 = unavg - rface - aavg
6954 lam2 = -(unavg-rface-aavg)
6956 if (unavg - rface .ge. 0.)
then
6957 lam3 = unavg - rface
6959 lam3 = -(unavg-rface)
6963 if (lam1 .lt. tmp) lam1 = eta +
fourth*lam1*lam1/eta
6964 if (lam2 .lt. tmp) lam2 = eta +
fourth*lam2*lam2/eta
6965 if (lam3 .lt. tmp) lam3 = eta +
fourth*lam3*lam3/eta
6973 abv1 =
half*(lam1+lam2)
6974 abv2 =
half*(lam1-lam2)
6976 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53&
6978 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
6979 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
6980 abv7 = abv2*abv4*ovaavg + abv3*abv5
6984 flux(
irho) = -(porflux*(lam3*dr+abv6))
6985 flux(
imx) = -(porflux*(lam3*dru+uavg*abv6+sx*abv7))
6986 flux(
imy) = -(porflux*(lam3*drv+vavg*abv6+sy*abv7))
6987 flux(
imz) = -(porflux*(lam3*drw+wavg*abv6+sz*abv7))
6988 flux(
irhoe) = -(porflux*(lam3*dre+havg*abv6+unavg*abv7))
6997 &
'turkel preconditioner not implemented yet')
7000 &
'choi merkle preconditioner not implemented yet')
7003 call terminate(
'riemannflux',
'van leer fvs not implemented yet'&
7006 call terminate(
'riemannflux',
'ausmdv fvs not implemented yet')
7025 use blockpointers,
only :
il,
jl,
kl,
ie,
je,
ke,
ib,
jb,
kb,&
7026 &
w,
p,
pori,
porj,
pork,
fw,
gamma,
si,
sj,
sk,
indfamilyi, &
7042 logical,
intent(in) :: finegrid
7046 integer(kind=portype) :: por
7047 integer(kind=inttype) :: nwint
7048 integer(kind=inttype) :: i, j, k, ind
7049 integer(kind=inttype) :: limused, riemannused
7050 real(kind=realtype) :: sx, sy, sz, omk, opk, sfil, gammaface
7051 real(kind=realtype) :: factminmod, sface
7052 real(kind=realtype),
dimension(nw) :: left, right
7053 real(kind=realtype),
dimension(nw) :: du1, du2, du3
7054 real(kind=realtype),
dimension(nwf) :: flux
7055 logical :: firstorderk, correctfork, rotationalperiodic
7057 intrinsic associated
7059 real(kind=realtype) :: abs0
7060 real(realtype) :: max1
7061 if (
rfil .ge. 0.)
then
7075 rotationalperiodic = .true.
7077 rotationalperiodic = .false.
7100 max1 = 1.e-10_realtype
7108 if (finegrid) limused =
limiter
7113 if (finegrid) riemannused =
riemann
7125 if (correctfork)
then
7128 firstorderk = .true.
7131 firstorderk = .false.
7135 firstorderk = .false.
7164 if (correctfork) left(
itu1) =
w(i, j, k,
itu1)
7166 right(
ivx) =
w(i+1, j, k,
ivx)
7167 right(
ivy) =
w(i+1, j, k,
ivy)
7168 right(
ivz) =
w(i+1, j, k,
ivz)
7169 right(
irhoe) =
p(i+1, j, k)
7170 if (correctfork) right(
itu1) =
w(i+1, j, k,
itu1)
7209 if (correctfork) left(
itu1) =
w(i, j, k,
itu1)
7211 right(
ivx) =
w(i, j+1, k,
ivx)
7212 right(
ivy) =
w(i, j+1, k,
ivy)
7213 right(
ivz) =
w(i, j+1, k,
ivz)
7214 right(
irhoe) =
p(i, j+1, k)
7215 if (correctfork) right(
itu1) =
w(i, j+1, k,
itu1)
7254 if (correctfork) left(
itu1) =
w(i, j, k,
itu1)
7256 right(
ivx) =
w(i, j, k+1,
ivx)
7257 right(
ivy) =
w(i, j, k+1,
ivy)
7258 right(
ivz) =
w(i, j, k+1,
ivz)
7259 right(
irhoe) =
p(i, j, k+1)
7260 if (correctfork) right(
itu1) =
w(i, j, k+1,
itu1)
7311 du1(
irhoe) =
p(i, j, k) -
p(i-1, j, k)
7312 du2(
irhoe) =
p(i+1, j, k) -
p(i, j, k)
7313 du3(
irhoe) =
p(i+2, j, k) -
p(i+1, j, k)
7314 if (correctfork)
then
7335 if (correctfork)
then
7385 du1(
irhoe) =
p(i, j, k) -
p(i, j-1, k)
7386 du2(
irhoe) =
p(i, j+1, k) -
p(i, j, k)
7387 du3(
irhoe) =
p(i, j+2, k) -
p(i, j+1, k)
7388 if (correctfork)
then
7409 if (correctfork)
then
7459 du1(
irhoe) =
p(i, j, k) -
p(i, j, k-1)
7460 du2(
irhoe) =
p(i, j, k+1) -
p(i, j, k)
7461 du3(
irhoe) =
p(i, j, k+2) -
p(i, j, k+1)
7462 if (correctfork)
then
7483 if (correctfork)
then
7525 real(kind=realtype),
parameter :: epslim=1.e-10_realtype
7529 real(kind=realtype),
dimension(:),
intent(inout) :: du1, du2, du3
7530 real(kind=realtype),
dimension(:),
intent(out) :: left, right
7531 real(kind=realtype),
dimension(:, :, :, :, :),
pointer :: &
7536 integer(kind=inttype) :: l
7537 real(kind=realtype) :: rl1, rl2, rr1, rr2, tmp, dvx, dvy, dvz
7538 real(kind=realtype),
dimension(3, 3) :: rot
7543 real(kind=realtype) :: x1
7544 real(kind=realtype) :: y1
7545 real(kind=realtype) :: y2
7546 real(kind=realtype) :: x2
7547 real(kind=realtype) :: y3
7548 real(kind=realtype) :: y4
7549 real(kind=realtype) :: x3
7550 real(kind=realtype) :: x4
7551 real(kind=realtype) :: x5
7552 real(kind=realtype) :: x6
7553 real(kind=realtype) :: max2
7554 real(kind=realtype) :: max3
7555 real(kind=realtype) :: max4
7556 real(kind=realtype) :: max5
7557 real(kind=realtype) :: max6
7558 real(kind=realtype) :: max7
7561 if (rotationalperiodic)
then
7564 rot(1, 1) = rotmatrix(i, j, k, 1, 1)
7565 rot(1, 2) = rotmatrix(i, j, k, 1, 2)
7566 rot(1, 3) = rotmatrix(i, j, k, 1, 3)
7567 rot(2, 1) = rotmatrix(i, j, k, 2, 1)
7568 rot(2, 2) = rotmatrix(i, j, k, 2, 2)
7569 rot(2, 3) = rotmatrix(i, j, k, 2, 3)
7570 rot(3, 1) = rotmatrix(i, j, k, 3, 1)
7571 rot(3, 2) = rotmatrix(i, j, k, 3, 2)
7572 rot(3, 3) = rotmatrix(i, j, k, 3, 3)
7578 du1(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
7579 du1(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
7580 du1(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
7584 du2(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
7585 du2(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
7586 du2(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
7590 du3(
ivx) = rot(1, 1)*dvx + rot(1, 2)*dvy + rot(1, 3)*dvz
7591 du3(
ivy) = rot(2, 1)*dvx + rot(2, 2)*dvy + rot(2, 3)*dvz
7592 du3(
ivz) = rot(3, 1)*dvx + rot(3, 2)*dvy + rot(3, 3)*dvz
7595 select case (limused)
7600 left(l) = omk*du1(l) + opk*du2(l)
7601 right(l) = -(omk*du3(l)) - opk*du2(l)
7608 if (du2(l) .ge. 0.)
then
7613 if (x1 .lt. epslim)
then
7620 tmp =
one/sign(max2, du2(l))
7621 if (du1(l) .ge. 0.)
then
7626 if (x3 .lt. epslim)
then
7631 y1 = du2(l)/sign(max4, du1(l))
7632 if (
zero .lt. y1)
then
7637 if (
zero .lt. du1(l)*tmp)
then
7642 if (
zero .lt. du3(l)*tmp)
then
7647 if (du3(l) .ge. 0.)
then
7652 if (x4 .lt. epslim)
then
7657 y2 = du2(l)/sign(max5, du3(l))
7658 if (
zero .lt. y2)
then
7664 rl1 = rl1*(rl1+
one)/(rl1*rl1+
one)
7665 rl2 = rl2*(rl2+
one)/(rl2*rl2+
one)
7666 rr1 = rr1*(rr1+
one)/(rr1*rr1+
one)
7667 rr2 = rr2*(rr2+
one)/(rr2*rr2+
one)
7670 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
7671 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
7678 if (du2(l) .ge. 0.)
then
7683 if (x2 .lt. epslim)
then
7690 tmp =
one/sign(max3, du2(l))
7691 if (du1(l) .ge. 0.)
then
7696 if (x5 .lt. epslim)
then
7701 y3 = du2(l)/sign(max6, du1(l))
7702 if (
zero .lt. y3)
then
7707 if (
zero .lt. du1(l)*tmp)
then
7712 if (
zero .lt. du3(l)*tmp)
then
7717 if (du3(l) .ge. 0.)
then
7722 if (x6 .lt. epslim)
then
7727 y4 = du2(l)/sign(max7, du3(l))
7728 if (
zero .lt. y4)
then
7733 if (
one .gt. factminmod*rl1)
then
7734 rl1 = factminmod*rl1
7738 if (
one .gt. factminmod*rl2)
then
7739 rl2 = factminmod*rl2
7743 if (
one .gt. factminmod*rr1)
then
7744 rr1 = factminmod*rr1
7748 if (
one .gt. factminmod*rr2)
then
7749 rr2 = factminmod*rr2
7755 left(l) = omk*rl1*du1(l) + opk*rl2*du2(l)
7756 right(l) = -(opk*rr1*du2(l)) - omk*rr2*du3(l)
7762 if (firstorderk)
then
7769 if (rotationalperiodic)
then
7774 left(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
7775 left(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
7776 left(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
7781 right(
ivx) = rot(1, 1)*dvx + rot(2, 1)*dvy + rot(3, 1)*dvz
7782 right(
ivy) = rot(1, 2)*dvx + rot(2, 2)*dvy + rot(3, 2)*dvz
7783 right(
ivz) = rot(1, 3)*dvx + rot(2, 3)*dvy + rot(3, 3)*dvz
7793 real(kind=realtype),
dimension(*),
intent(in) :: left, right
7794 real(kind=realtype),
dimension(*),
intent(out) :: flux
7798 real(kind=realtype) :: porflux, rface
7799 real(kind=realtype) :: etl, etr, z1l, z1r, tmp
7800 real(kind=realtype) :: dr, dru, drv, drw, dre, drk
7801 real(kind=realtype) :: ravg, uavg, vavg, wavg, havg, kavg
7802 real(kind=realtype) :: alphaavg, a2avg, aavg, unavg
7803 real(kind=realtype) :: ovaavg, ova2avg, area, eta
7804 real(kind=realtype) :: gm1, gm53
7805 real(kind=realtype) :: lam1, lam2, lam3
7806 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
7807 real(kind=realtype),
dimension(2) :: ktmp
7811 real(kind=realtype) :: x1
7812 real(kind=realtype) :: x2
7813 real(realtype) :: max2
7814 real(kind=realtype) :: abs1
7815 real(kind=realtype) :: abs2
7821 gm1 = gammaface -
one
7824 select case (riemannused)
7833 z1l = sqrt(left(
irho))
7834 z1r = sqrt(right(
irho))
7838 if (correctfork)
then
7841 ktmp(1) = left(
itu1)
7842 ktmp(2) = right(
itu1)
7848 kavg = tmp*(z1l*left(
itu1)+z1r*right(
itu1))
7858 &
irhoe), ktmp(1), etl, correctfork)
7860 & right(
irhoe), ktmp(2), etr, correctfork)
7870 ravg =
fourth*(z1r+z1l)**2
7871 uavg = tmp*(z1l*left(
ivx)+z1r*right(
ivx))
7872 vavg = tmp*(z1l*left(
ivy)+z1r*right(
ivy))
7873 wavg = tmp*(z1l*left(
ivz)+z1r*right(
ivz))
7874 havg = tmp*((etl+left(
irhoe))/z1l+(etr+right(
irhoe))/z1r)
7877 area = sqrt(sx**2 + sy**2 + sz**2)
7878 if (1.e-25_realtype .lt. area)
then
7881 max2 = 1.e-25_realtype
7890 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
7891 if (gm1*(havg-alphaavg) - gm53*kavg .ge. 0.)
then
7892 a2avg = gm1*(havg-alphaavg) - gm53*kavg
7894 a2avg = -(gm1*(havg-alphaavg)-gm53*kavg)
7897 unavg = uavg*sx + vavg*sy + wavg*sz
7903 x1 = (left(
ivx)-right(
ivx))*sx + (left(
ivy)-right(
ivy))*sy + (&
7904 & left(
ivz)-right(
ivz))*sz
7905 if (x1 .ge. 0.)
then
7910 x2 = sqrt(gammaface*left(
irhoe)/left(
irho)) - sqrt(gammaface*&
7912 if (x2 .ge. 0.)
then
7927 eta =
half*(abs1+abs2)
7928 if (unavg - rface + aavg .ge. 0.)
then
7929 lam1 = unavg - rface + aavg
7931 lam1 = -(unavg-rface+aavg)
7933 if (unavg - rface - aavg .ge. 0.)
then
7934 lam2 = unavg - rface - aavg
7936 lam2 = -(unavg-rface-aavg)
7938 if (unavg - rface .ge. 0.)
then
7939 lam3 = unavg - rface
7941 lam3 = -(unavg-rface)
7945 if (lam1 .lt. tmp) lam1 = eta +
fourth*lam1*lam1/eta
7946 if (lam2 .lt. tmp) lam2 = eta +
fourth*lam2*lam2/eta
7947 if (lam3 .lt. tmp) lam3 = eta +
fourth*lam3*lam3/eta
7955 abv1 =
half*(lam1+lam2)
7956 abv2 =
half*(lam1-lam2)
7958 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - gm53&
7960 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
7961 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
7962 abv7 = abv2*abv4*ovaavg + abv3*abv5
7966 flux(
irho) = -(porflux*(lam3*dr+abv6))
7967 flux(
imx) = -(porflux*(lam3*dru+uavg*abv6+sx*abv7))
7968 flux(
imy) = -(porflux*(lam3*drv+vavg*abv6+sy*abv7))
7969 flux(
imz) = -(porflux*(lam3*drw+wavg*abv6+sz*abv7))
7970 flux(
irhoe) = -(porflux*(lam3*dre+havg*abv6+unavg*abv7))
7979 &
'turkel preconditioner not implemented yet')
7982 &
'choi merkle preconditioner not implemented yet')
7985 call terminate(
'riemannflux',
'van leer fvs not implemented yet'&
7988 call terminate(
'riemannflux',
'ausmdv fvs not implemented yet')
8021 real(kind=realtype),
parameter :: twothird=
two*
third
8022 real(kind=realtype),
parameter :: xminn=1.e-14_realtype
8026 integer(kind=inttype) :: i, j, k, ii
8027 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
8028 real(kind=realtype) :: muld, mued, mutd, heatcoefd
8029 real(kind=realtype) :: gm1, factlamheat, factturbheat
8030 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
8031 real(kind=realtype) :: u_xd, u_yd, u_zd, v_xd, v_yd, v_zd, w_xd, &
8033 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
8034 real(kind=realtype) :: q_xd, q_yd, q_zd, ubard, vbard, wbard
8035 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
8036 real(kind=realtype) :: corrd, fracdivd
8037 real(kind=realtype) :: tauxx, tauyy, tauzz
8038 real(kind=realtype) :: tauxxd, tauyyd, tauzzd
8039 real(kind=realtype) :: tauxy, tauxz, tauyz
8040 real(kind=realtype) :: tauxyd, tauxzd, tauyzd
8041 real(kind=realtype) :: tauxxs, tauyys, tauzzs
8042 real(kind=realtype) :: tauxxsd, tauyysd, tauzzsd
8043 real(kind=realtype) :: tauxys, tauxzs, tauyzs
8044 real(kind=realtype) :: tauxysd, tauxzsd, tauyzsd
8045 real(kind=realtype) :: exx, eyy, ezz
8046 real(kind=realtype) :: exxd, eyyd, ezzd
8047 real(kind=realtype) :: exy, exz, eyz
8048 real(kind=realtype) :: exyd, exzd, eyzd
8049 real(kind=realtype) :: wxy, wxz, wyz, wyx, wzx, wzy
8050 real(kind=realtype) :: wxyd, wxzd, wyzd, wyxd, wzxd, wzyd
8051 real(kind=realtype) :: den, ccr1, fact
8052 real(kind=realtype) :: dend, factd
8053 real(kind=realtype) :: fmx, fmy, fmz, frhoe
8054 real(kind=realtype) :: fmxd, fmyd, fmzd, frhoed
8055 logical :: correctfork, storewalltensor
8060 real(kind=realtype) :: abs0
8061 real(kind=realtype) :: tempd
8063 real(kind=realtype) :: tempd0
8064 real(kind=realtype) :: tempd1
8071 if (rfilv .ge. 0.)
then
8078 if (
associated(
wxd))
wxd = 0.0_8
8079 if (
associated(
wyd))
wyd = 0.0_8
8080 if (
associated(
wzd))
wzd = 0.0_8
8082 if (
associated(
qxd))
qxd = 0.0_8
8083 if (
associated(
qyd))
qyd = 0.0_8
8084 if (
associated(
qzd))
qzd = 0.0_8
8085 if (
associated(
uxd))
uxd = 0.0_8
8086 if (
associated(
uyd))
uyd = 0.0_8
8087 if (
associated(
uzd))
uzd = 0.0_8
8088 if (
associated(
vxd))
vxd = 0.0_8
8089 if (
associated(
vyd))
vyd = 0.0_8
8090 if (
associated(
vzd))
vzd = 0.0_8
8093 if (
associated(
wxd))
wxd = 0.0_8
8094 if (
associated(
wyd))
wyd = 0.0_8
8095 if (
associated(
wzd))
wzd = 0.0_8
8097 if (
associated(
qxd))
qxd = 0.0_8
8098 if (
associated(
qyd))
qyd = 0.0_8
8099 if (
associated(
qzd))
qzd = 0.0_8
8100 if (
associated(
uxd))
uxd = 0.0_8
8101 if (
associated(
uyd))
uyd = 0.0_8
8102 if (
associated(
uzd))
uzd = 0.0_8
8103 if (
associated(
vxd))
vxd = 0.0_8
8104 if (
associated(
vyd))
vyd = 0.0_8
8105 if (
associated(
vzd))
vzd = 0.0_8
8109 if (
associated(
wxd))
wxd = 0.0_8
8110 if (
associated(
wyd))
wyd = 0.0_8
8111 if (
associated(
wzd))
wzd = 0.0_8
8113 if (
associated(
qxd))
qxd = 0.0_8
8114 if (
associated(
qyd))
qyd = 0.0_8
8115 if (
associated(
qzd))
qzd = 0.0_8
8116 if (
associated(
uxd))
uxd = 0.0_8
8117 if (
associated(
uyd))
uyd = 0.0_8
8118 if (
associated(
uzd))
uzd = 0.0_8
8119 if (
associated(
vxd))
vxd = 0.0_8
8120 if (
associated(
vyd))
vyd = 0.0_8
8121 if (
associated(
vzd))
vzd = 0.0_8
8126 j = mod(ii/
il,
ny) + 2
8137 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
8139 mue = por*(
rev(i, j, k)+
rev(i+1, j, k))
8150 heatcoef = mul*factlamheat + mue*factturbheat
8153 u_x =
fourth*(
ux(i, j-1, k-1)+
ux(i, j, k-1)+
ux(i, j-1, k)+
ux(i, &
8155 u_y =
fourth*(
uy(i, j-1, k-1)+
uy(i, j, k-1)+
uy(i, j-1, k)+
uy(i, &
8157 u_z =
fourth*(
uz(i, j-1, k-1)+
uz(i, j, k-1)+
uz(i, j-1, k)+
uz(i, &
8159 v_x =
fourth*(
vx(i, j-1, k-1)+
vx(i, j, k-1)+
vx(i, j-1, k)+
vx(i, &
8161 v_y =
fourth*(
vy(i, j-1, k-1)+
vy(i, j, k-1)+
vy(i, j-1, k)+
vy(i, &
8163 v_z =
fourth*(
vz(i, j-1, k-1)+
vz(i, j, k-1)+
vz(i, j-1, k)+
vz(i, &
8165 w_x =
fourth*(
wx(i, j-1, k-1)+
wx(i, j, k-1)+
wx(i, j-1, k)+
wx(i, &
8167 w_y =
fourth*(
wy(i, j-1, k-1)+
wy(i, j, k-1)+
wy(i, j-1, k)+
wy(i, &
8169 w_z =
fourth*(
wz(i, j-1, k-1)+
wz(i, j, k-1)+
wz(i, j-1, k)+
wz(i, &
8171 q_x =
fourth*(
qx(i, j-1, k-1)+
qx(i, j, k-1)+
qx(i, j-1, k)+
qx(i, &
8173 q_y =
fourth*(
qy(i, j-1, k-1)+
qy(i, j, k-1)+
qy(i, j-1, k)+
qy(i, &
8175 q_z =
fourth*(
qz(i, j-1, k-1)+
qz(i, j, k-1)+
qz(i, j-1, k)+
qz(i, &
8181 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j-1&
8182 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1, 1)+&
8183 &
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
8184 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j-1&
8185 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1, 2)+&
8186 &
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
8187 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j-1&
8188 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1, 3)+&
8189 &
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
8192 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
8197 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i+1, j, k,
ivx)-
w(i, j, &
8199 u_x = u_x - corr*ssx
8200 u_y = u_y - corr*ssy
8201 u_z = u_z - corr*ssz
8202 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i+1, j, k,
ivy)-
w(i, j, &
8204 v_x = v_x - corr*ssx
8205 v_y = v_y - corr*ssy
8206 v_z = v_z - corr*ssz
8207 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i+1, j, k,
ivz)-
w(i, j, &
8209 w_x = w_x - corr*ssx
8210 w_y = w_y - corr*ssy
8211 w_z = w_z - corr*ssz
8212 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i+1, j, k)-
aa(i, j, k))&
8214 q_x = q_x - corr*ssx
8215 q_y = q_y - corr*ssy
8216 q_z = q_z - corr*ssz
8223 fracdiv = twothird*(u_x+v_y+w_z)
8224 tauxxs =
two*u_x - fracdiv
8225 tauyys =
two*v_y - fracdiv
8226 tauzzs =
two*w_z - fracdiv
8246 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
8247 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
8248 if (den .lt. xminn)
then
8270 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
8271 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
8272 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
8273 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
8274 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
8275 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
8277 tauxx = mut*tauxxs - exx
8278 tauyy = mut*tauyys - eyy
8279 tauzz = mut*tauzzs - ezz
8280 tauxy = mut*tauxys - exy
8281 tauxz = mut*tauxzs - exz
8282 tauyz = mut*tauyzs - eyz
8310 tempd1 =
si(i, j, k, 1)*frhoed
8311 tempd0 =
si(i, j, k, 2)*frhoed
8312 tempd =
si(i, j, k, 3)*frhoed
8313 q_xd = -(
si(i, j, k, 1)*frhoed)
8314 q_yd = -(
si(i, j, k, 2)*frhoed)
8315 q_zd = -(
si(i, j, k, 3)*frhoed)
8316 ubard = tauxz*tempd + tauxy*tempd0 + tauxx*tempd1
8317 tauxzd = ubar*tempd + wbar*tempd1 +
si(i, j, k, 1)*fmzd +
si(i, &
8319 vbard = tauyz*tempd + tauyy*tempd0 + tauxy*tempd1
8320 tauyzd = vbar*tempd + wbar*tempd0 +
si(i, j, k, 2)*fmzd +
si(i, &
8322 wbard = tauzz*tempd + tauyz*tempd0 + tauxz*tempd1
8323 tauzzd = wbar*tempd +
si(i, j, k, 3)*fmzd
8324 tauxyd = ubar*tempd0 + vbar*tempd1 +
si(i, j, k, 1)*fmyd +
si(i&
8326 tauyyd = vbar*tempd0 +
si(i, j, k, 2)*fmyd
8327 tauxxd = ubar*tempd1 +
si(i, j, k, 1)*fmxd
8336 if (branch .eq. 0)
then
8340 tauxzsd = mut*tauxzd + wyx*tempd1
8341 tauxysd = mut*tauxyd + wzx*tempd1
8342 tauzzsd = mut*tauzzd + wyz*tempd1
8343 tauyysd = mut*tauyyd + wzy*tempd1
8344 wyxd = tauxzs*tempd1
8345 wyzd = tauzzs*tempd1
8346 wzxd = tauxys*tempd1
8347 wzyd = tauyys*tempd1
8349 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
8350 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
8351 tauyzsd = mut*tauyzd + wxy*tempd1
8355 tauxxsd = mut*tauxxd + wzx*tempd1
8357 factd = (wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)*eyzd + (&
8358 & wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)*exzd + (wxy*&
8359 & tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)*exyd + (wzx*tauxzs+&
8360 & wzy*tauyzs)*
two*ezzd + (wyx*tauxys+wyz*tauyzs)*
two*eyyd + (&
8361 & wxy*tauxys+wxz*tauxzs)*
two*exxd
8362 wxyd = tauyzs*tempd1
8363 wxzd = tauzzs*tempd1
8364 tauzzsd = tauzzsd + wxz*tempd1
8365 wzxd = wzxd + tauxxs*tempd1
8366 wzyd = wzyd + tauxys*tempd1
8367 tauxysd = tauxysd + wzy*tempd1
8369 wxyd = wxyd + tauyys*tempd1
8370 tauyysd = tauyysd + wxy*tempd1
8371 wxzd = wxzd + tauyzs*tempd1
8372 tauyzsd = tauyzsd + wxz*tempd1
8373 wyxd = wyxd + tauxxs*tempd1
8374 tauxxsd = tauxxsd + wyx*tempd1
8375 wyzd = wyzd + tauxzs*tempd1
8376 tauxzsd = tauxzsd + wyz*tempd1
8377 tempd1 = fact*
two*ezzd
8378 wzxd = wzxd + tauxzs*tempd1
8379 tauxzsd = tauxzsd + wzx*tempd1
8380 wzyd = wzyd + tauyzs*tempd1
8381 tauyzsd = tauyzsd + wzy*tempd1
8382 tempd1 = fact*
two*eyyd
8383 wyxd = wyxd + tauxys*tempd1
8384 tauxysd = tauxysd + wyx*tempd1
8385 wyzd = wyzd + tauyzs*tempd1 - wzyd
8386 tauyzsd = tauyzsd + wyz*tempd1
8387 tempd1 = fact*
two*exxd
8388 wxyd = wxyd + tauxys*tempd1 - wyxd
8389 tauxysd = tauxysd + wxy*tempd1
8390 wxzd = wxzd + tauxzs*tempd1 - wzxd
8391 tauxzsd = tauxzsd + wxz*tempd1
8398 tempd1 = ccr1*factd/den
8399 mued = mued + tempd1
8400 dend = -(mue*tempd1/den)
8403 if (branch .eq. 0) dend = 0.0_8
8404 if (u_x**2 + u_y**2 + u_z**2 + v_x**2 + v_y**2 + v_z**2 + w_x&
8405 & **2 + w_y**2 + w_z**2 .eq. 0.0_8)
then
8408 tempd1 = dend/(2.0*sqrt(u_x**2+u_y**2+u_z**2+v_x**2+v_y**2+&
8409 & v_z**2+w_x**2+w_y**2+w_z**2))
8412 u_yd = u_yd + 2*u_y*tempd1
8413 u_zd = u_zd + 2*u_z*tempd1
8414 v_xd = v_xd + 2*v_x*tempd1
8416 v_zd = v_zd + 2*v_z*tempd1
8417 w_xd = w_xd + 2*w_x*tempd1
8418 w_yd = w_yd + 2*w_y*tempd1
8421 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
8422 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
8423 tauyzsd = mut*tauyzd
8424 tauxzsd = mut*tauxzd
8425 tauxysd = mut*tauxyd
8426 tauzzsd = mut*tauzzd
8427 tauyysd = mut*tauyyd
8428 tauxxsd = mut*tauxxd
8439 fracdivd = -tauzzsd - tauyysd - tauxxsd
8440 tempd1 = twothird*fracdivd
8441 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
8442 q_zd = heatcoef*q_zd
8443 q_yd = heatcoef*q_yd
8444 q_xd = heatcoef*q_xd
8445 v_zd = v_zd + tauyzsd
8446 w_yd = w_yd + tauyzsd
8447 u_zd = u_zd + tauxzsd
8448 w_xd = w_xd + tauxzsd
8449 u_yd = u_yd + tauxysd
8450 v_xd = v_xd + tauxysd
8451 w_zd = w_zd +
two*tauzzsd + tempd1
8452 v_yd = v_yd +
two*tauyysd + tempd1
8453 u_xd = u_xd +
two*tauxxsd + tempd1
8454 corrd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
8455 q_xd = q_xd + ssx*corrd
8456 q_yd = q_yd + ssy*corrd
8457 q_zd = q_zd + ssz*corrd
8458 aad(i+1, j, k) =
aad(i+1, j, k) + ss*corrd
8459 aad(i, j, k) =
aad(i, j, k) - ss*corrd
8460 corrd = -(ssz*w_zd) - ssy*w_yd - ssx*w_xd
8461 w_xd = w_xd + ssx*corrd
8462 w_yd = w_yd + ssy*corrd
8463 w_zd = w_zd + ssz*corrd
8464 wd(i+1, j, k,
ivz) =
wd(i+1, j, k,
ivz) - ss*corrd
8465 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + ss*corrd
8466 corrd = -(ssz*v_zd) - ssy*v_yd - ssx*v_xd
8467 v_xd = v_xd + ssx*corrd
8468 v_yd = v_yd + ssy*corrd
8469 v_zd = v_zd + ssz*corrd
8470 wd(i+1, j, k,
ivy) =
wd(i+1, j, k,
ivy) - ss*corrd
8471 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + ss*corrd
8472 corrd = -(ssz*u_zd) - ssy*u_yd - ssx*u_xd
8473 u_xd = u_xd + ssx*corrd
8474 u_yd = u_yd + ssy*corrd
8475 u_zd = u_zd + ssz*corrd
8476 wd(i+1, j, k,
ivx) =
wd(i+1, j, k,
ivx) - ss*corrd
8477 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + ss*corrd
8479 qzd(i, j-1, k-1) =
qzd(i, j-1, k-1) + tempd1
8480 qzd(i, j, k-1) =
qzd(i, j, k-1) + tempd1
8481 qzd(i, j-1, k) =
qzd(i, j-1, k) + tempd1
8482 qzd(i, j, k) =
qzd(i, j, k) + tempd1
8484 qyd(i, j-1, k-1) =
qyd(i, j-1, k-1) + tempd1
8485 qyd(i, j, k-1) =
qyd(i, j, k-1) + tempd1
8486 qyd(i, j-1, k) =
qyd(i, j-1, k) + tempd1
8487 qyd(i, j, k) =
qyd(i, j, k) + tempd1
8489 qxd(i, j-1, k-1) =
qxd(i, j-1, k-1) + tempd1
8490 qxd(i, j, k-1) =
qxd(i, j, k-1) + tempd1
8491 qxd(i, j-1, k) =
qxd(i, j-1, k) + tempd1
8492 qxd(i, j, k) =
qxd(i, j, k) + tempd1
8494 wzd(i, j-1, k-1) =
wzd(i, j-1, k-1) + tempd1
8495 wzd(i, j, k-1) =
wzd(i, j, k-1) + tempd1
8496 wzd(i, j-1, k) =
wzd(i, j-1, k) + tempd1
8497 wzd(i, j, k) =
wzd(i, j, k) + tempd1
8499 wyd(i, j-1, k-1) =
wyd(i, j-1, k-1) + tempd1
8500 wyd(i, j, k-1) =
wyd(i, j, k-1) + tempd1
8501 wyd(i, j-1, k) =
wyd(i, j-1, k) + tempd1
8502 wyd(i, j, k) =
wyd(i, j, k) + tempd1
8504 wxd(i, j-1, k-1) =
wxd(i, j-1, k-1) + tempd1
8505 wxd(i, j, k-1) =
wxd(i, j, k-1) + tempd1
8506 wxd(i, j-1, k) =
wxd(i, j-1, k) + tempd1
8507 wxd(i, j, k) =
wxd(i, j, k) + tempd1
8509 vzd(i, j-1, k-1) =
vzd(i, j-1, k-1) + tempd1
8510 vzd(i, j, k-1) =
vzd(i, j, k-1) + tempd1
8511 vzd(i, j-1, k) =
vzd(i, j-1, k) + tempd1
8512 vzd(i, j, k) =
vzd(i, j, k) + tempd1
8514 vyd(i, j-1, k-1) =
vyd(i, j-1, k-1) + tempd1
8515 vyd(i, j, k-1) =
vyd(i, j, k-1) + tempd1
8516 vyd(i, j-1, k) =
vyd(i, j-1, k) + tempd1
8517 vyd(i, j, k) =
vyd(i, j, k) + tempd1
8519 vxd(i, j-1, k-1) =
vxd(i, j-1, k-1) + tempd1
8520 vxd(i, j, k-1) =
vxd(i, j, k-1) + tempd1
8521 vxd(i, j-1, k) =
vxd(i, j-1, k) + tempd1
8522 vxd(i, j, k) =
vxd(i, j, k) + tempd1
8524 uzd(i, j-1, k-1) =
uzd(i, j-1, k-1) + tempd1
8525 uzd(i, j, k-1) =
uzd(i, j, k-1) + tempd1
8526 uzd(i, j-1, k) =
uzd(i, j-1, k) + tempd1
8527 uzd(i, j, k) =
uzd(i, j, k) + tempd1
8529 uyd(i, j-1, k-1) =
uyd(i, j-1, k-1) + tempd1
8530 uyd(i, j, k-1) =
uyd(i, j, k-1) + tempd1
8531 uyd(i, j-1, k) =
uyd(i, j-1, k) + tempd1
8532 uyd(i, j, k) =
uyd(i, j, k) + tempd1
8534 uxd(i, j-1, k-1) =
uxd(i, j-1, k-1) + tempd1
8535 uxd(i, j, k-1) =
uxd(i, j, k-1) + tempd1
8536 uxd(i, j-1, k) =
uxd(i, j-1, k) + tempd1
8537 uxd(i, j, k) =
uxd(i, j, k) + tempd1
8538 muld = factlamheat*heatcoefd + mutd
8539 mued = mued + factturbheat*heatcoefd + mutd
8542 if (branch .eq. 0)
then
8543 revd(i, j, k) =
revd(i, j, k) + por*mued
8544 revd(i+1, j, k) =
revd(i+1, j, k) + por*mued
8547 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
8548 rlvd(i+1, j, k) =
rlvd(i+1, j, k) + por*muld
8556 j = mod(ii/
nx,
jl) + 1
8567 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
8569 mue = por*(
rev(i, j, k)+
rev(i, j+1, k))
8580 heatcoef = mul*factlamheat + mue*factturbheat
8583 u_x =
fourth*(
ux(i-1, j, k-1)+
ux(i, j, k-1)+
ux(i-1, j, k)+
ux(i, &
8585 u_y =
fourth*(
uy(i-1, j, k-1)+
uy(i, j, k-1)+
uy(i-1, j, k)+
uy(i, &
8587 u_z =
fourth*(
uz(i-1, j, k-1)+
uz(i, j, k-1)+
uz(i-1, j, k)+
uz(i, &
8589 v_x =
fourth*(
vx(i-1, j, k-1)+
vx(i, j, k-1)+
vx(i-1, j, k)+
vx(i, &
8591 v_y =
fourth*(
vy(i-1, j, k-1)+
vy(i, j, k-1)+
vy(i-1, j, k)+
vy(i, &
8593 v_z =
fourth*(
vz(i-1, j, k-1)+
vz(i, j, k-1)+
vz(i-1, j, k)+
vz(i, &
8595 w_x =
fourth*(
wx(i-1, j, k-1)+
wx(i, j, k-1)+
wx(i-1, j, k)+
wx(i, &
8597 w_y =
fourth*(
wy(i-1, j, k-1)+
wy(i, j, k-1)+
wy(i-1, j, k)+
wy(i, &
8599 w_z =
fourth*(
wz(i-1, j, k-1)+
wz(i, j, k-1)+
wz(i-1, j, k)+
wz(i, &
8601 q_x =
fourth*(
qx(i-1, j, k-1)+
qx(i, j, k-1)+
qx(i-1, j, k)+
qx(i, &
8603 q_y =
fourth*(
qy(i-1, j, k-1)+
qy(i, j, k-1)+
qy(i-1, j, k)+
qy(i, &
8605 q_z =
fourth*(
qz(i-1, j, k-1)+
qz(i, j, k-1)+
qz(i-1, j, k)+
qz(i, &
8611 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j+1&
8612 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1, 1)+&
8613 &
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
8614 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j+1&
8615 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1, 2)+&
8616 &
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
8617 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j+1&
8618 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1, 3)+&
8619 &
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
8622 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
8627 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j+1, k,
ivx)-
w(i, j, &
8629 u_x = u_x - corr*ssx
8630 u_y = u_y - corr*ssy
8631 u_z = u_z - corr*ssz
8632 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j+1, k,
ivy)-
w(i, j, &
8634 v_x = v_x - corr*ssx
8635 v_y = v_y - corr*ssy
8636 v_z = v_z - corr*ssz
8637 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j+1, k,
ivz)-
w(i, j, &
8639 w_x = w_x - corr*ssx
8640 w_y = w_y - corr*ssy
8641 w_z = w_z - corr*ssz
8642 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j+1, k)-
aa(i, j, k))&
8644 q_x = q_x - corr*ssx
8645 q_y = q_y - corr*ssy
8646 q_z = q_z - corr*ssz
8653 fracdiv = twothird*(u_x+v_y+w_z)
8654 tauxxs =
two*u_x - fracdiv
8655 tauyys =
two*v_y - fracdiv
8656 tauzzs =
two*w_z - fracdiv
8676 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
8677 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
8678 if (den .lt. xminn)
then
8700 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
8701 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
8702 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
8703 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
8704 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
8705 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
8707 tauxx = mut*tauxxs - exx
8708 tauyy = mut*tauyys - eyy
8709 tauzz = mut*tauzzs - ezz
8710 tauxy = mut*tauxys - exy
8711 tauxz = mut*tauxzs - exz
8712 tauyz = mut*tauyzs - eyz
8740 tempd =
sj(i, j, k, 1)*frhoed
8741 tempd0 =
sj(i, j, k, 2)*frhoed
8742 tempd1 =
sj(i, j, k, 3)*frhoed
8743 q_xd = -(
sj(i, j, k, 1)*frhoed)
8744 q_yd = -(
sj(i, j, k, 2)*frhoed)
8745 q_zd = -(
sj(i, j, k, 3)*frhoed)
8746 ubard = tauxz*tempd1 + tauxy*tempd0 + tauxx*tempd
8747 tauxzd = ubar*tempd1 + wbar*tempd +
sj(i, j, k, 1)*fmzd +
sj(i, &
8749 vbard = tauyz*tempd1 + tauyy*tempd0 + tauxy*tempd
8750 tauyzd = vbar*tempd1 + wbar*tempd0 +
sj(i, j, k, 2)*fmzd +
sj(i&
8752 wbard = tauzz*tempd1 + tauyz*tempd0 + tauxz*tempd
8753 tauzzd = wbar*tempd1 +
sj(i, j, k, 3)*fmzd
8754 tauxyd = ubar*tempd0 + vbar*tempd +
sj(i, j, k, 1)*fmyd +
sj(i, &
8756 tauyyd = vbar*tempd0 +
sj(i, j, k, 2)*fmyd
8757 tauxxd = ubar*tempd +
sj(i, j, k, 1)*fmxd
8766 if (branch .eq. 0)
then
8770 tauxzsd = mut*tauxzd + wyx*tempd
8771 tauxysd = mut*tauxyd + wzx*tempd
8772 tauzzsd = mut*tauzzd + wyz*tempd
8773 tauyysd = mut*tauyyd + wzy*tempd
8779 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
8780 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
8781 tauyzsd = mut*tauyzd + wxy*tempd
8785 tauxxsd = mut*tauxxd + wzx*tempd
8787 factd = (wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)*eyzd + (&
8788 & wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)*exzd + (wxy*&
8789 & tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)*exyd + (wzx*tauxzs+&
8790 & wzy*tauyzs)*
two*ezzd + (wyx*tauxys+wyz*tauyzs)*
two*eyyd + (&
8791 & wxy*tauxys+wxz*tauxzs)*
two*exxd
8794 tauzzsd = tauzzsd + wxz*tempd
8795 wzxd = wzxd + tauxxs*tempd
8796 wzyd = wzyd + tauxys*tempd
8797 tauxysd = tauxysd + wzy*tempd
8799 wxyd = wxyd + tauyys*tempd
8800 tauyysd = tauyysd + wxy*tempd
8801 wxzd = wxzd + tauyzs*tempd
8802 tauyzsd = tauyzsd + wxz*tempd
8803 wyxd = wyxd + tauxxs*tempd
8804 tauxxsd = tauxxsd + wyx*tempd
8805 wyzd = wyzd + tauxzs*tempd
8806 tauxzsd = tauxzsd + wyz*tempd
8807 tempd = fact*
two*ezzd
8808 wzxd = wzxd + tauxzs*tempd
8809 tauxzsd = tauxzsd + wzx*tempd
8810 wzyd = wzyd + tauyzs*tempd
8811 tauyzsd = tauyzsd + wzy*tempd
8812 tempd = fact*
two*eyyd
8813 wyxd = wyxd + tauxys*tempd
8814 tauxysd = tauxysd + wyx*tempd
8815 wyzd = wyzd + tauyzs*tempd - wzyd
8816 tauyzsd = tauyzsd + wyz*tempd
8817 tempd = fact*
two*exxd
8818 wxyd = wxyd + tauxys*tempd - wyxd
8819 tauxysd = tauxysd + wxy*tempd
8820 wxzd = wxzd + tauxzs*tempd - wzxd
8821 tauxzsd = tauxzsd + wxz*tempd
8828 tempd = ccr1*factd/den
8830 dend = -(mue*tempd/den)
8833 if (branch .eq. 0) dend = 0.0_8
8834 if (u_x**2 + u_y**2 + u_z**2 + v_x**2 + v_y**2 + v_z**2 + w_x&
8835 & **2 + w_y**2 + w_z**2 .eq. 0.0_8)
then
8838 tempd = dend/(2.0*sqrt(u_x**2+u_y**2+u_z**2+v_x**2+v_y**2+&
8839 & v_z**2+w_x**2+w_y**2+w_z**2))
8842 u_yd = u_yd + 2*u_y*tempd
8843 u_zd = u_zd + 2*u_z*tempd
8844 v_xd = v_xd + 2*v_x*tempd
8846 v_zd = v_zd + 2*v_z*tempd
8847 w_xd = w_xd + 2*w_x*tempd
8848 w_yd = w_yd + 2*w_y*tempd
8851 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
8852 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
8853 tauyzsd = mut*tauyzd
8854 tauxzsd = mut*tauxzd
8855 tauxysd = mut*tauxyd
8856 tauzzsd = mut*tauzzd
8857 tauyysd = mut*tauyyd
8858 tauxxsd = mut*tauxxd
8869 fracdivd = -tauzzsd - tauyysd - tauxxsd
8870 tempd = twothird*fracdivd
8871 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
8872 q_zd = heatcoef*q_zd
8873 q_yd = heatcoef*q_yd
8874 q_xd = heatcoef*q_xd
8875 v_zd = v_zd + tauyzsd
8876 w_yd = w_yd + tauyzsd
8877 u_zd = u_zd + tauxzsd
8878 w_xd = w_xd + tauxzsd
8879 u_yd = u_yd + tauxysd
8880 v_xd = v_xd + tauxysd
8881 w_zd = w_zd +
two*tauzzsd + tempd
8882 v_yd = v_yd +
two*tauyysd + tempd
8883 u_xd = u_xd +
two*tauxxsd + tempd
8884 corrd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
8885 q_xd = q_xd + ssx*corrd
8886 q_yd = q_yd + ssy*corrd
8887 q_zd = q_zd + ssz*corrd
8888 aad(i, j+1, k) =
aad(i, j+1, k) + ss*corrd
8889 aad(i, j, k) =
aad(i, j, k) - ss*corrd
8890 corrd = -(ssz*w_zd) - ssy*w_yd - ssx*w_xd
8891 w_xd = w_xd + ssx*corrd
8892 w_yd = w_yd + ssy*corrd
8893 w_zd = w_zd + ssz*corrd
8894 wd(i, j+1, k,
ivz) =
wd(i, j+1, k,
ivz) - ss*corrd
8895 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + ss*corrd
8896 corrd = -(ssz*v_zd) - ssy*v_yd - ssx*v_xd
8897 v_xd = v_xd + ssx*corrd
8898 v_yd = v_yd + ssy*corrd
8899 v_zd = v_zd + ssz*corrd
8900 wd(i, j+1, k,
ivy) =
wd(i, j+1, k,
ivy) - ss*corrd
8901 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + ss*corrd
8902 corrd = -(ssz*u_zd) - ssy*u_yd - ssx*u_xd
8903 u_xd = u_xd + ssx*corrd
8904 u_yd = u_yd + ssy*corrd
8905 u_zd = u_zd + ssz*corrd
8906 wd(i, j+1, k,
ivx) =
wd(i, j+1, k,
ivx) - ss*corrd
8907 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + ss*corrd
8909 qzd(i-1, j, k-1) =
qzd(i-1, j, k-1) + tempd
8910 qzd(i, j, k-1) =
qzd(i, j, k-1) + tempd
8911 qzd(i-1, j, k) =
qzd(i-1, j, k) + tempd
8912 qzd(i, j, k) =
qzd(i, j, k) + tempd
8914 qyd(i-1, j, k-1) =
qyd(i-1, j, k-1) + tempd
8915 qyd(i, j, k-1) =
qyd(i, j, k-1) + tempd
8916 qyd(i-1, j, k) =
qyd(i-1, j, k) + tempd
8917 qyd(i, j, k) =
qyd(i, j, k) + tempd
8919 qxd(i-1, j, k-1) =
qxd(i-1, j, k-1) + tempd
8920 qxd(i, j, k-1) =
qxd(i, j, k-1) + tempd
8921 qxd(i-1, j, k) =
qxd(i-1, j, k) + tempd
8922 qxd(i, j, k) =
qxd(i, j, k) + tempd
8924 wzd(i-1, j, k-1) =
wzd(i-1, j, k-1) + tempd
8925 wzd(i, j, k-1) =
wzd(i, j, k-1) + tempd
8926 wzd(i-1, j, k) =
wzd(i-1, j, k) + tempd
8927 wzd(i, j, k) =
wzd(i, j, k) + tempd
8929 wyd(i-1, j, k-1) =
wyd(i-1, j, k-1) + tempd
8930 wyd(i, j, k-1) =
wyd(i, j, k-1) + tempd
8931 wyd(i-1, j, k) =
wyd(i-1, j, k) + tempd
8932 wyd(i, j, k) =
wyd(i, j, k) + tempd
8934 wxd(i-1, j, k-1) =
wxd(i-1, j, k-1) + tempd
8935 wxd(i, j, k-1) =
wxd(i, j, k-1) + tempd
8936 wxd(i-1, j, k) =
wxd(i-1, j, k) + tempd
8937 wxd(i, j, k) =
wxd(i, j, k) + tempd
8939 vzd(i-1, j, k-1) =
vzd(i-1, j, k-1) + tempd
8940 vzd(i, j, k-1) =
vzd(i, j, k-1) + tempd
8941 vzd(i-1, j, k) =
vzd(i-1, j, k) + tempd
8942 vzd(i, j, k) =
vzd(i, j, k) + tempd
8944 vyd(i-1, j, k-1) =
vyd(i-1, j, k-1) + tempd
8945 vyd(i, j, k-1) =
vyd(i, j, k-1) + tempd
8946 vyd(i-1, j, k) =
vyd(i-1, j, k) + tempd
8947 vyd(i, j, k) =
vyd(i, j, k) + tempd
8949 vxd(i-1, j, k-1) =
vxd(i-1, j, k-1) + tempd
8950 vxd(i, j, k-1) =
vxd(i, j, k-1) + tempd
8951 vxd(i-1, j, k) =
vxd(i-1, j, k) + tempd
8952 vxd(i, j, k) =
vxd(i, j, k) + tempd
8954 uzd(i-1, j, k-1) =
uzd(i-1, j, k-1) + tempd
8955 uzd(i, j, k-1) =
uzd(i, j, k-1) + tempd
8956 uzd(i-1, j, k) =
uzd(i-1, j, k) + tempd
8957 uzd(i, j, k) =
uzd(i, j, k) + tempd
8959 uyd(i-1, j, k-1) =
uyd(i-1, j, k-1) + tempd
8960 uyd(i, j, k-1) =
uyd(i, j, k-1) + tempd
8961 uyd(i-1, j, k) =
uyd(i-1, j, k) + tempd
8962 uyd(i, j, k) =
uyd(i, j, k) + tempd
8964 uxd(i-1, j, k-1) =
uxd(i-1, j, k-1) + tempd
8965 uxd(i, j, k-1) =
uxd(i, j, k-1) + tempd
8966 uxd(i-1, j, k) =
uxd(i-1, j, k) + tempd
8967 uxd(i, j, k) =
uxd(i, j, k) + tempd
8968 muld = factlamheat*heatcoefd + mutd
8969 mued = mued + factturbheat*heatcoefd + mutd
8972 if (branch .eq. 0)
then
8973 revd(i, j, k) =
revd(i, j, k) + por*mued
8974 revd(i, j+1, k) =
revd(i, j+1, k) + por*mued
8977 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
8978 rlvd(i, j+1, k) =
rlvd(i, j+1, k) + por*muld
8989 j = mod(ii/
nx,
ny) + 2
9000 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
9002 mue = por*(
rev(i, j, k)+
rev(i, j, k+1))
9013 heatcoef = mul*factlamheat + mue*factturbheat
9016 u_x =
fourth*(
ux(i-1, j-1, k)+
ux(i, j-1, k)+
ux(i-1, j, k)+
ux(i, &
9018 u_y =
fourth*(
uy(i-1, j-1, k)+
uy(i, j-1, k)+
uy(i-1, j, k)+
uy(i, &
9020 u_z =
fourth*(
uz(i-1, j-1, k)+
uz(i, j-1, k)+
uz(i-1, j, k)+
uz(i, &
9022 v_x =
fourth*(
vx(i-1, j-1, k)+
vx(i, j-1, k)+
vx(i-1, j, k)+
vx(i, &
9024 v_y =
fourth*(
vy(i-1, j-1, k)+
vy(i, j-1, k)+
vy(i-1, j, k)+
vy(i, &
9026 v_z =
fourth*(
vz(i-1, j-1, k)+
vz(i, j-1, k)+
vz(i-1, j, k)+
vz(i, &
9028 w_x =
fourth*(
wx(i-1, j-1, k)+
wx(i, j-1, k)+
wx(i-1, j, k)+
wx(i, &
9030 w_y =
fourth*(
wy(i-1, j-1, k)+
wy(i, j-1, k)+
wy(i-1, j, k)+
wy(i, &
9032 w_z =
fourth*(
wz(i-1, j-1, k)+
wz(i, j-1, k)+
wz(i-1, j, k)+
wz(i, &
9034 q_x =
fourth*(
qx(i-1, j-1, k)+
qx(i, j-1, k)+
qx(i-1, j, k)+
qx(i, &
9036 q_y =
fourth*(
qy(i-1, j-1, k)+
qy(i, j-1, k)+
qy(i-1, j, k)+
qy(i, &
9038 q_z =
fourth*(
qz(i-1, j-1, k)+
qz(i, j-1, k)+
qz(i-1, j, k)+
qz(i, &
9044 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j, &
9045 & k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1, 1)+&
9046 &
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
9047 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j, &
9048 & k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1, 2)+&
9049 &
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
9050 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j, &
9051 & k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1, 3)+&
9052 &
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
9055 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
9060 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j, k+1,
ivx)-
w(i, j, &
9062 u_x = u_x - corr*ssx
9063 u_y = u_y - corr*ssy
9064 u_z = u_z - corr*ssz
9065 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j, k+1,
ivy)-
w(i, j, &
9067 v_x = v_x - corr*ssx
9068 v_y = v_y - corr*ssy
9069 v_z = v_z - corr*ssz
9070 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j, k+1,
ivz)-
w(i, j, &
9072 w_x = w_x - corr*ssx
9073 w_y = w_y - corr*ssy
9074 w_z = w_z - corr*ssz
9075 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j, k+1)-
aa(i, j, k))&
9077 q_x = q_x - corr*ssx
9078 q_y = q_y - corr*ssy
9079 q_z = q_z - corr*ssz
9086 fracdiv = twothird*(u_x+v_y+w_z)
9087 tauxxs =
two*u_x - fracdiv
9088 tauyys =
two*v_y - fracdiv
9089 tauzzs =
two*w_z - fracdiv
9109 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
9110 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
9111 if (den .lt. xminn)
then
9133 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
9134 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
9135 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
9136 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
9137 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
9138 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
9140 tauxx = mut*tauxxs - exx
9141 tauyy = mut*tauyys - eyy
9142 tauzz = mut*tauzzs - ezz
9143 tauxy = mut*tauxys - exy
9144 tauxz = mut*tauxzs - exz
9145 tauyz = mut*tauyzs - eyz
9173 q_xd = -(
sk(i, j, k, 1)*frhoed)
9174 q_yd = -(
sk(i, j, k, 2)*frhoed)
9175 q_zd = -(
sk(i, j, k, 3)*frhoed)
9176 tempd =
sk(i, j, k, 3)*frhoed
9182 tauzzd = wbar*tempd +
sk(i, j, k, 3)*fmzd
9183 tempd =
sk(i, j, k, 2)*frhoed
9184 ubard = ubard + tauxy*tempd
9186 vbard = vbard + tauyy*tempd
9187 tauyyd = vbar*tempd +
sk(i, j, k, 2)*fmyd
9188 wbard = wbard + tauyz*tempd
9189 tauyzd = tauyzd + wbar*tempd +
sk(i, j, k, 2)*fmzd +
sk(i, j, k&
9191 tempd =
sk(i, j, k, 1)*frhoed
9192 ubard = ubard + tauxx*tempd
9193 tauxxd = ubar*tempd +
sk(i, j, k, 1)*fmxd
9194 vbard = vbard + tauxy*tempd
9195 tauxyd = tauxyd + vbar*tempd +
sk(i, j, k, 1)*fmyd +
sk(i, j, k&
9197 wbard = wbard + tauxz*tempd
9198 tauxzd = tauxzd + wbar*tempd +
sk(i, j, k, 1)*fmzd +
sk(i, j, k&
9208 if (branch .eq. 0)
then
9212 tauxzsd = mut*tauxzd + wyx*tempd
9213 tauxysd = mut*tauxyd + wzx*tempd
9214 tauzzsd = mut*tauzzd + wyz*tempd
9215 tauyysd = mut*tauyyd + wzy*tempd
9221 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
9222 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
9223 tauyzsd = mut*tauyzd + wxy*tempd
9227 tauxxsd = mut*tauxxd + wzx*tempd
9229 factd = (wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)*eyzd + (&
9230 & wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)*exzd + (wxy*&
9231 & tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)*exyd + (wzx*tauxzs+&
9232 & wzy*tauyzs)*
two*ezzd + (wyx*tauxys+wyz*tauyzs)*
two*eyyd + (&
9233 & wxy*tauxys+wxz*tauxzs)*
two*exxd
9236 tauzzsd = tauzzsd + wxz*tempd
9237 wzxd = wzxd + tauxxs*tempd
9238 wzyd = wzyd + tauxys*tempd
9239 tauxysd = tauxysd + wzy*tempd
9241 wxyd = wxyd + tauyys*tempd
9242 tauyysd = tauyysd + wxy*tempd
9243 wxzd = wxzd + tauyzs*tempd
9244 tauyzsd = tauyzsd + wxz*tempd
9245 wyxd = wyxd + tauxxs*tempd
9246 tauxxsd = tauxxsd + wyx*tempd
9247 wyzd = wyzd + tauxzs*tempd
9248 tauxzsd = tauxzsd + wyz*tempd
9249 tempd = fact*
two*ezzd
9250 wzxd = wzxd + tauxzs*tempd
9251 tauxzsd = tauxzsd + wzx*tempd
9252 wzyd = wzyd + tauyzs*tempd
9253 tauyzsd = tauyzsd + wzy*tempd
9254 tempd = fact*
two*eyyd
9255 wyxd = wyxd + tauxys*tempd
9256 tauxysd = tauxysd + wyx*tempd
9257 wyzd = wyzd + tauyzs*tempd - wzyd
9258 tauyzsd = tauyzsd + wyz*tempd
9259 tempd = fact*
two*exxd
9260 wxyd = wxyd + tauxys*tempd - wyxd
9261 tauxysd = tauxysd + wxy*tempd
9262 wxzd = wxzd + tauxzs*tempd - wzxd
9263 tauxzsd = tauxzsd + wxz*tempd
9270 tempd = ccr1*factd/den
9272 dend = -(mue*tempd/den)
9275 if (branch .eq. 0) dend = 0.0_8
9276 if (u_x**2 + u_y**2 + u_z**2 + v_x**2 + v_y**2 + v_z**2 + w_x&
9277 & **2 + w_y**2 + w_z**2 .eq. 0.0_8)
then
9280 tempd = dend/(2.0*sqrt(u_x**2+u_y**2+u_z**2+v_x**2+v_y**2+&
9281 & v_z**2+w_x**2+w_y**2+w_z**2))
9284 u_yd = u_yd + 2*u_y*tempd
9285 u_zd = u_zd + 2*u_z*tempd
9286 v_xd = v_xd + 2*v_x*tempd
9288 v_zd = v_zd + 2*v_z*tempd
9289 w_xd = w_xd + 2*w_x*tempd
9290 w_yd = w_yd + 2*w_y*tempd
9293 mutd = tauyzs*tauyzd + tauxzs*tauxzd + tauxys*tauxyd + tauzzs*&
9294 & tauzzd + tauyys*tauyyd + tauxxs*tauxxd
9295 tauyzsd = mut*tauyzd
9296 tauxzsd = mut*tauxzd
9297 tauxysd = mut*tauxyd
9298 tauzzsd = mut*tauzzd
9299 tauyysd = mut*tauyyd
9300 tauxxsd = mut*tauxxd
9311 fracdivd = -tauzzsd - tauyysd - tauxxsd
9312 tempd = twothird*fracdivd
9313 heatcoefd = q_z*q_zd + q_y*q_yd + q_x*q_xd
9314 q_zd = heatcoef*q_zd
9315 q_yd = heatcoef*q_yd
9316 q_xd = heatcoef*q_xd
9317 v_zd = v_zd + tauyzsd
9318 w_yd = w_yd + tauyzsd
9319 u_zd = u_zd + tauxzsd
9320 w_xd = w_xd + tauxzsd
9321 u_yd = u_yd + tauxysd
9322 v_xd = v_xd + tauxysd
9323 w_zd = w_zd +
two*tauzzsd + tempd
9324 v_yd = v_yd +
two*tauyysd + tempd
9325 u_xd = u_xd +
two*tauxxsd + tempd
9326 corrd = -(ssz*q_zd) - ssy*q_yd - ssx*q_xd
9327 q_xd = q_xd + ssx*corrd
9328 q_yd = q_yd + ssy*corrd
9329 q_zd = q_zd + ssz*corrd
9330 aad(i, j, k+1) =
aad(i, j, k+1) + ss*corrd
9331 aad(i, j, k) =
aad(i, j, k) - ss*corrd
9332 corrd = -(ssz*w_zd) - ssy*w_yd - ssx*w_xd
9333 w_xd = w_xd + ssx*corrd
9334 w_yd = w_yd + ssy*corrd
9335 w_zd = w_zd + ssz*corrd
9336 wd(i, j, k+1,
ivz) =
wd(i, j, k+1,
ivz) - ss*corrd
9337 wd(i, j, k,
ivz) =
wd(i, j, k,
ivz) + ss*corrd
9338 corrd = -(ssz*v_zd) - ssy*v_yd - ssx*v_xd
9339 v_xd = v_xd + ssx*corrd
9340 v_yd = v_yd + ssy*corrd
9341 v_zd = v_zd + ssz*corrd
9342 wd(i, j, k+1,
ivy) =
wd(i, j, k+1,
ivy) - ss*corrd
9343 wd(i, j, k,
ivy) =
wd(i, j, k,
ivy) + ss*corrd
9344 corrd = -(ssz*u_zd) - ssy*u_yd - ssx*u_xd
9345 u_xd = u_xd + ssx*corrd
9346 u_yd = u_yd + ssy*corrd
9347 u_zd = u_zd + ssz*corrd
9348 wd(i, j, k+1,
ivx) =
wd(i, j, k+1,
ivx) - ss*corrd
9349 wd(i, j, k,
ivx) =
wd(i, j, k,
ivx) + ss*corrd
9351 qzd(i-1, j-1, k) =
qzd(i-1, j-1, k) + tempd
9352 qzd(i, j-1, k) =
qzd(i, j-1, k) + tempd
9353 qzd(i-1, j, k) =
qzd(i-1, j, k) + tempd
9354 qzd(i, j, k) =
qzd(i, j, k) + tempd
9356 qyd(i-1, j-1, k) =
qyd(i-1, j-1, k) + tempd
9357 qyd(i, j-1, k) =
qyd(i, j-1, k) + tempd
9358 qyd(i-1, j, k) =
qyd(i-1, j, k) + tempd
9359 qyd(i, j, k) =
qyd(i, j, k) + tempd
9361 qxd(i-1, j-1, k) =
qxd(i-1, j-1, k) + tempd
9362 qxd(i, j-1, k) =
qxd(i, j-1, k) + tempd
9363 qxd(i-1, j, k) =
qxd(i-1, j, k) + tempd
9364 qxd(i, j, k) =
qxd(i, j, k) + tempd
9366 wzd(i-1, j-1, k) =
wzd(i-1, j-1, k) + tempd
9367 wzd(i, j-1, k) =
wzd(i, j-1, k) + tempd
9368 wzd(i-1, j, k) =
wzd(i-1, j, k) + tempd
9369 wzd(i, j, k) =
wzd(i, j, k) + tempd
9371 wyd(i-1, j-1, k) =
wyd(i-1, j-1, k) + tempd
9372 wyd(i, j-1, k) =
wyd(i, j-1, k) + tempd
9373 wyd(i-1, j, k) =
wyd(i-1, j, k) + tempd
9374 wyd(i, j, k) =
wyd(i, j, k) + tempd
9376 wxd(i-1, j-1, k) =
wxd(i-1, j-1, k) + tempd
9377 wxd(i, j-1, k) =
wxd(i, j-1, k) + tempd
9378 wxd(i-1, j, k) =
wxd(i-1, j, k) + tempd
9379 wxd(i, j, k) =
wxd(i, j, k) + tempd
9381 vzd(i-1, j-1, k) =
vzd(i-1, j-1, k) + tempd
9382 vzd(i, j-1, k) =
vzd(i, j-1, k) + tempd
9383 vzd(i-1, j, k) =
vzd(i-1, j, k) + tempd
9384 vzd(i, j, k) =
vzd(i, j, k) + tempd
9386 vyd(i-1, j-1, k) =
vyd(i-1, j-1, k) + tempd
9387 vyd(i, j-1, k) =
vyd(i, j-1, k) + tempd
9388 vyd(i-1, j, k) =
vyd(i-1, j, k) + tempd
9389 vyd(i, j, k) =
vyd(i, j, k) + tempd
9391 vxd(i-1, j-1, k) =
vxd(i-1, j-1, k) + tempd
9392 vxd(i, j-1, k) =
vxd(i, j-1, k) + tempd
9393 vxd(i-1, j, k) =
vxd(i-1, j, k) + tempd
9394 vxd(i, j, k) =
vxd(i, j, k) + tempd
9396 uzd(i-1, j-1, k) =
uzd(i-1, j-1, k) + tempd
9397 uzd(i, j-1, k) =
uzd(i, j-1, k) + tempd
9398 uzd(i-1, j, k) =
uzd(i-1, j, k) + tempd
9399 uzd(i, j, k) =
uzd(i, j, k) + tempd
9401 uyd(i-1, j-1, k) =
uyd(i-1, j-1, k) + tempd
9402 uyd(i, j-1, k) =
uyd(i, j-1, k) + tempd
9403 uyd(i-1, j, k) =
uyd(i-1, j, k) + tempd
9404 uyd(i, j, k) =
uyd(i, j, k) + tempd
9406 uxd(i-1, j-1, k) =
uxd(i-1, j-1, k) + tempd
9407 uxd(i, j-1, k) =
uxd(i, j-1, k) + tempd
9408 uxd(i-1, j, k) =
uxd(i-1, j, k) + tempd
9409 uxd(i, j, k) =
uxd(i, j, k) + tempd
9410 muld = factlamheat*heatcoefd + mutd
9411 mued = mued + factturbheat*heatcoefd + mutd
9414 if (branch .eq. 0)
then
9415 revd(i, j, k) =
revd(i, j, k) + por*mued
9416 revd(i, j, k+1) =
revd(i, j, k+1) + por*mued
9419 rlvd(i, j, k) =
rlvd(i, j, k) + por*muld
9420 rlvd(i, j, k+1) =
rlvd(i, j, k+1) + por*muld
9441 real(kind=realtype),
parameter :: twothird=
two*
third
9442 real(kind=realtype),
parameter :: xminn=1.e-14_realtype
9446 integer(kind=inttype) :: i, j, k, ii
9447 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
9448 real(kind=realtype) :: gm1, factlamheat, factturbheat
9449 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
9450 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
9451 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
9452 real(kind=realtype) :: tauxx, tauyy, tauzz
9453 real(kind=realtype) :: tauxy, tauxz, tauyz
9454 real(kind=realtype) :: tauxxs, tauyys, tauzzs
9455 real(kind=realtype) :: tauxys, tauxzs, tauyzs
9456 real(kind=realtype) :: exx, eyy, ezz
9457 real(kind=realtype) :: exy, exz, eyz
9458 real(kind=realtype) :: wxy, wxz, wyz, wyx, wzx, wzy
9459 real(kind=realtype) :: den, ccr1, fact
9460 real(kind=realtype) :: fmx, fmy, fmz, frhoe
9461 logical :: correctfork, storewalltensor
9466 real(kind=realtype) :: abs0
9473 if (rfilv .ge. 0.)
then
9483 storewalltensor = .false.
9485 storewalltensor = .true.
9487 storewalltensor = .true.
9497 j = mod(ii/
nx,
ny) + 2
9508 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
9514 heatcoef = mul*factlamheat + mue*factturbheat
9517 u_x =
fourth*(
ux(i-1, j-1, k)+
ux(i, j-1, k)+
ux(i-1, j, k)+
ux(i, &
9519 u_y =
fourth*(
uy(i-1, j-1, k)+
uy(i, j-1, k)+
uy(i-1, j, k)+
uy(i, &
9521 u_z =
fourth*(
uz(i-1, j-1, k)+
uz(i, j-1, k)+
uz(i-1, j, k)+
uz(i, &
9523 v_x =
fourth*(
vx(i-1, j-1, k)+
vx(i, j-1, k)+
vx(i-1, j, k)+
vx(i, &
9525 v_y =
fourth*(
vy(i-1, j-1, k)+
vy(i, j-1, k)+
vy(i-1, j, k)+
vy(i, &
9527 v_z =
fourth*(
vz(i-1, j-1, k)+
vz(i, j-1, k)+
vz(i-1, j, k)+
vz(i, &
9529 w_x =
fourth*(
wx(i-1, j-1, k)+
wx(i, j-1, k)+
wx(i-1, j, k)+
wx(i, &
9531 w_y =
fourth*(
wy(i-1, j-1, k)+
wy(i, j-1, k)+
wy(i-1, j, k)+
wy(i, &
9533 w_z =
fourth*(
wz(i-1, j-1, k)+
wz(i, j-1, k)+
wz(i-1, j, k)+
wz(i, &
9535 q_x =
fourth*(
qx(i-1, j-1, k)+
qx(i, j-1, k)+
qx(i-1, j, k)+
qx(i, &
9537 q_y =
fourth*(
qy(i-1, j-1, k)+
qy(i, j-1, k)+
qy(i-1, j, k)+
qy(i, &
9539 q_z =
fourth*(
qz(i-1, j-1, k)+
qz(i, j-1, k)+
qz(i-1, j, k)+
qz(i, &
9545 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j, &
9546 & k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1, 1)+&
9547 &
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
9548 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j, &
9549 & k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1, 2)+&
9550 &
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
9551 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j, &
9552 & k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1, 3)+&
9553 &
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
9556 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
9561 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j, k+1,
ivx)-
w(i, j, &
9563 u_x = u_x - corr*ssx
9564 u_y = u_y - corr*ssy
9565 u_z = u_z - corr*ssz
9566 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j, k+1,
ivy)-
w(i, j, &
9568 v_x = v_x - corr*ssx
9569 v_y = v_y - corr*ssy
9570 v_z = v_z - corr*ssz
9571 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j, k+1,
ivz)-
w(i, j, &
9573 w_x = w_x - corr*ssx
9574 w_y = w_y - corr*ssy
9575 w_z = w_z - corr*ssz
9576 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j, k+1)-
aa(i, j, k))&
9578 q_x = q_x - corr*ssx
9579 q_y = q_y - corr*ssy
9580 q_z = q_z - corr*ssz
9587 fracdiv = twothird*(u_x+v_y+w_z)
9588 tauxxs =
two*u_x - fracdiv
9589 tauyys =
two*v_y - fracdiv
9590 tauzzs =
two*w_z - fracdiv
9613 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
9614 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
9615 if (den .lt. xminn)
then
9633 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
9634 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
9635 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
9636 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
9637 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
9638 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
9640 tauxx = mut*tauxxs - exx
9641 tauyy = mut*tauyys - eyy
9642 tauzz = mut*tauzzs - ezz
9643 tauxy = mut*tauxys - exy
9644 tauxz = mut*tauxzs - exz
9645 tauyz = mut*tauyzs - eyz
9661 fmx = tauxx*
sk(i, j, k, 1) + tauxy*
sk(i, j, k, 2) + tauxz*
sk(i, &
9663 fmy = tauxy*
sk(i, j, k, 1) + tauyy*
sk(i, j, k, 2) + tauyz*
sk(i, &
9665 fmz = tauxz*
sk(i, j, k, 1) + tauyz*
sk(i, j, k, 2) + tauzz*
sk(i, &
9667 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sk(i, j, k, 1)
9668 frhoe = frhoe + (ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sk(i, j, k, 2&
9670 frhoe = frhoe + (ubar*tauxz+vbar*tauyz+wbar*tauzz)*
sk(i, j, k, 3&
9672 frhoe = frhoe - q_x*
sk(i, j, k, 1) - q_y*
sk(i, j, k, 2) - q_z*
sk&
9679 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fmx
9680 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fmy
9681 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fmz
9724 j = mod(ii/
nx,
jl) + 1
9735 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
9741 heatcoef = mul*factlamheat + mue*factturbheat
9744 u_x =
fourth*(
ux(i-1, j, k-1)+
ux(i, j, k-1)+
ux(i-1, j, k)+
ux(i, &
9746 u_y =
fourth*(
uy(i-1, j, k-1)+
uy(i, j, k-1)+
uy(i-1, j, k)+
uy(i, &
9748 u_z =
fourth*(
uz(i-1, j, k-1)+
uz(i, j, k-1)+
uz(i-1, j, k)+
uz(i, &
9750 v_x =
fourth*(
vx(i-1, j, k-1)+
vx(i, j, k-1)+
vx(i-1, j, k)+
vx(i, &
9752 v_y =
fourth*(
vy(i-1, j, k-1)+
vy(i, j, k-1)+
vy(i-1, j, k)+
vy(i, &
9754 v_z =
fourth*(
vz(i-1, j, k-1)+
vz(i, j, k-1)+
vz(i-1, j, k)+
vz(i, &
9756 w_x =
fourth*(
wx(i-1, j, k-1)+
wx(i, j, k-1)+
wx(i-1, j, k)+
wx(i, &
9758 w_y =
fourth*(
wy(i-1, j, k-1)+
wy(i, j, k-1)+
wy(i-1, j, k)+
wy(i, &
9760 w_z =
fourth*(
wz(i-1, j, k-1)+
wz(i, j, k-1)+
wz(i-1, j, k)+
wz(i, &
9762 q_x =
fourth*(
qx(i-1, j, k-1)+
qx(i, j, k-1)+
qx(i-1, j, k)+
qx(i, &
9764 q_y =
fourth*(
qy(i-1, j, k-1)+
qy(i, j, k-1)+
qy(i-1, j, k)+
qy(i, &
9766 q_z =
fourth*(
qz(i-1, j, k-1)+
qz(i, j, k-1)+
qz(i-1, j, k)+
qz(i, &
9772 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j+1&
9773 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1, 1)+&
9774 &
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
9775 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j+1&
9776 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1, 2)+&
9777 &
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
9778 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j+1&
9779 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1, 3)+&
9780 &
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
9783 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
9788 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i, j+1, k,
ivx)-
w(i, j, &
9790 u_x = u_x - corr*ssx
9791 u_y = u_y - corr*ssy
9792 u_z = u_z - corr*ssz
9793 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i, j+1, k,
ivy)-
w(i, j, &
9795 v_x = v_x - corr*ssx
9796 v_y = v_y - corr*ssy
9797 v_z = v_z - corr*ssz
9798 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i, j+1, k,
ivz)-
w(i, j, &
9800 w_x = w_x - corr*ssx
9801 w_y = w_y - corr*ssy
9802 w_z = w_z - corr*ssz
9803 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i, j+1, k)-
aa(i, j, k))&
9805 q_x = q_x - corr*ssx
9806 q_y = q_y - corr*ssy
9807 q_z = q_z - corr*ssz
9814 fracdiv = twothird*(u_x+v_y+w_z)
9815 tauxxs =
two*u_x - fracdiv
9816 tauyys =
two*v_y - fracdiv
9817 tauzzs =
two*w_z - fracdiv
9840 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
9841 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
9842 if (den .lt. xminn)
then
9860 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
9861 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
9862 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
9863 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
9864 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
9865 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
9867 tauxx = mut*tauxxs - exx
9868 tauyy = mut*tauyys - eyy
9869 tauzz = mut*tauzzs - ezz
9870 tauxy = mut*tauxys - exy
9871 tauxz = mut*tauxzs - exz
9872 tauyz = mut*tauyzs - eyz
9888 fmx = tauxx*
sj(i, j, k, 1) + tauxy*
sj(i, j, k, 2) + tauxz*
sj(i, &
9890 fmy = tauxy*
sj(i, j, k, 1) + tauyy*
sj(i, j, k, 2) + tauyz*
sj(i, &
9892 fmz = tauxz*
sj(i, j, k, 1) + tauyz*
sj(i, j, k, 2) + tauzz*
sj(i, &
9894 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sj(i, j, k, 1) + (&
9895 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sj(i, j, k, 2) + (ubar*tauxz&
9896 & +vbar*tauyz+wbar*tauzz)*
sj(i, j, k, 3) - q_x*
sj(i, j, k, 1) - &
9897 & q_y*
sj(i, j, k, 2) - q_z*
sj(i, j, k, 3)
9903 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fmx
9904 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fmy
9905 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fmz
9948 j = mod(ii/
il,
ny) + 2
9959 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
9965 heatcoef = mul*factlamheat + mue*factturbheat
9968 u_x =
fourth*(
ux(i, j-1, k-1)+
ux(i, j, k-1)+
ux(i, j-1, k)+
ux(i, &
9970 u_y =
fourth*(
uy(i, j-1, k-1)+
uy(i, j, k-1)+
uy(i, j-1, k)+
uy(i, &
9972 u_z =
fourth*(
uz(i, j-1, k-1)+
uz(i, j, k-1)+
uz(i, j-1, k)+
uz(i, &
9974 v_x =
fourth*(
vx(i, j-1, k-1)+
vx(i, j, k-1)+
vx(i, j-1, k)+
vx(i, &
9976 v_y =
fourth*(
vy(i, j-1, k-1)+
vy(i, j, k-1)+
vy(i, j-1, k)+
vy(i, &
9978 v_z =
fourth*(
vz(i, j-1, k-1)+
vz(i, j, k-1)+
vz(i, j-1, k)+
vz(i, &
9980 w_x =
fourth*(
wx(i, j-1, k-1)+
wx(i, j, k-1)+
wx(i, j-1, k)+
wx(i, &
9982 w_y =
fourth*(
wy(i, j-1, k-1)+
wy(i, j, k-1)+
wy(i, j-1, k)+
wy(i, &
9984 w_z =
fourth*(
wz(i, j-1, k-1)+
wz(i, j, k-1)+
wz(i, j-1, k)+
wz(i, &
9986 q_x =
fourth*(
qx(i, j-1, k-1)+
qx(i, j, k-1)+
qx(i, j-1, k)+
qx(i, &
9988 q_y =
fourth*(
qy(i, j-1, k-1)+
qy(i, j, k-1)+
qy(i, j-1, k)+
qy(i, &
9990 q_z =
fourth*(
qz(i, j-1, k-1)+
qz(i, j, k-1)+
qz(i, j-1, k)+
qz(i, &
9996 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j-1&
9997 & , k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1, 1)+&
9998 &
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
9999 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j-1&
10000 & , k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1, 2)+&
10001 &
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
10002 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j-1&
10003 & , k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1, 3)+&
10004 &
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
10007 ss =
one/sqrt(ssx*ssx+ssy*ssy+ssz*ssz)
10012 corr = u_x*ssx + u_y*ssy + u_z*ssz - (
w(i+1, j, k,
ivx)-
w(i, j, &
10014 u_x = u_x - corr*ssx
10015 u_y = u_y - corr*ssy
10016 u_z = u_z - corr*ssz
10017 corr = v_x*ssx + v_y*ssy + v_z*ssz - (
w(i+1, j, k,
ivy)-
w(i, j, &
10019 v_x = v_x - corr*ssx
10020 v_y = v_y - corr*ssy
10021 v_z = v_z - corr*ssz
10022 corr = w_x*ssx + w_y*ssy + w_z*ssz - (
w(i+1, j, k,
ivz)-
w(i, j, &
10024 w_x = w_x - corr*ssx
10025 w_y = w_y - corr*ssy
10026 w_z = w_z - corr*ssz
10027 corr = q_x*ssx + q_y*ssy + q_z*ssz + (
aa(i+1, j, k)-
aa(i, j, k))&
10029 q_x = q_x - corr*ssx
10030 q_y = q_y - corr*ssy
10031 q_z = q_z - corr*ssz
10038 fracdiv = twothird*(u_x+v_y+w_z)
10039 tauxxs =
two*u_x - fracdiv
10040 tauyys =
two*v_y - fracdiv
10041 tauzzs =
two*w_z - fracdiv
10064 den = sqrt(u_x*u_x + u_y*u_y + u_z*u_z + v_x*v_x + v_y*v_y + &
10065 & v_z*v_z + w_x*w_x + w_y*w_y + w_z*w_z)
10066 if (den .lt. xminn)
then
10074 fact = mue*ccr1/den
10084 exx = fact*(wxy*tauxys+wxz*tauxzs)*
two
10085 eyy = fact*(wyx*tauxys+wyz*tauyzs)*
two
10086 ezz = fact*(wzx*tauxzs+wzy*tauyzs)*
two
10087 exy = fact*(wxy*tauyys+wxz*tauyzs+wyx*tauxxs+wyz*tauxzs)
10088 exz = fact*(wxy*tauyzs+wxz*tauzzs+wzx*tauxxs+wzy*tauxys)
10089 eyz = fact*(wyx*tauxzs+wyz*tauzzs+wzx*tauxys+wzy*tauyys)
10091 tauxx = mut*tauxxs - exx
10092 tauyy = mut*tauyys - eyy
10093 tauzz = mut*tauzzs - ezz
10094 tauxy = mut*tauxys - exy
10095 tauxz = mut*tauxzs - exz
10096 tauyz = mut*tauyzs - eyz
10112 fmx = tauxx*
si(i, j, k, 1) + tauxy*
si(i, j, k, 2) + tauxz*
si(i, &
10114 fmy = tauxy*
si(i, j, k, 1) + tauyy*
si(i, j, k, 2) + tauyz*
si(i, &
10116 fmz = tauxz*
si(i, j, k, 1) + tauyz*
si(i, j, k, 2) + tauzz*
si(i, &
10118 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
si(i, j, k, 1) + (&
10119 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
si(i, j, k, 2) + (ubar*tauxz&
10120 & +vbar*tauyz+wbar*tauzz)*
si(i, j, k, 3) - q_x*
si(i, j, k, 1) - &
10121 & q_y*
si(i, j, k, 2) - q_z*
si(i, j, k, 3)
10127 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fmx
10128 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fmy
10129 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fmz
10181 real(kind=realtype),
parameter :: twothird=
two*
third
10185 integer(kind=inttype) :: i, j, k
10186 integer(kind=inttype) :: ii, jj, kk
10187 real(kind=realtype) :: rfilv, por, mul, mue, mut, heatcoef
10188 real(kind=realtype) :: gm1, factlamheat, factturbheat
10189 real(kind=realtype) :: u_x, u_y, u_z, v_x, v_y, v_z, w_x, w_y, w_z
10190 real(kind=realtype) :: q_x, q_y, q_z, ubar, vbar, wbar
10191 real(kind=realtype) :: corr, ssx, ssy, ssz, ss, fracdiv
10192 real(kind=realtype) :: tauxx, tauyy, tauzz
10193 real(kind=realtype) :: tauxy, tauxz, tauyz
10194 real(kind=realtype) :: fmx, fmy, fmz, frhoe
10195 real(kind=realtype) :: dd
10196 logical :: correctfork
10204 ssx =
eighth*(
x(i+1, j-1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i+1, j&
10205 & -1, k, 1)-
x(i-1, j-1, k, 1)+
x(i+1, j, k-1, 1)-
x(i-1, j, k-1&
10206 & , 1)+
x(i+1, j, k, 1)-
x(i-1, j, k, 1))
10207 ssy =
eighth*(
x(i+1, j-1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i+1, j&
10208 & -1, k, 2)-
x(i-1, j-1, k, 2)+
x(i+1, j, k-1, 2)-
x(i-1, j, k-1&
10209 & , 2)+
x(i+1, j, k, 2)-
x(i-1, j, k, 2))
10210 ssz =
eighth*(
x(i+1, j-1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i+1, j&
10211 & -1, k, 3)-
x(i-1, j-1, k, 3)+
x(i+1, j, k-1, 3)-
x(i-1, j, k-1&
10212 & , 3)+
x(i+1, j, k, 3)-
x(i-1, j, k, 3))
10214 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
10219 dd =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
10223 dd =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
10227 dd =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
10231 dd =
aa(i+1, j, k) -
aa(i, j, k)
10241 mul = por*(
rlv(i, j, k)+
rlv(i+1, j, k))
10247 heatcoef = mul*factlamheat + mue*factturbheat
10249 fracdiv = twothird*(u_x+v_y+w_z)
10250 tauxx = mut*(
two*u_x-fracdiv)
10251 tauyy = mut*(
two*v_y-fracdiv)
10252 tauzz = mut*(
two*w_z-fracdiv)
10253 tauxy = mut*(u_y+v_x)
10254 tauxz = mut*(u_z+w_x)
10255 tauyz = mut*(v_z+w_y)
10265 fmx = tauxx*
si(i, j, k, 1) + tauxy*
si(i, j, k, 2) + tauxz*
si(i&
10267 fmy = tauxy*
si(i, j, k, 1) + tauyy*
si(i, j, k, 2) + tauyz*
si(i&
10269 fmz = tauxz*
si(i, j, k, 1) + tauyz*
si(i, j, k, 2) + tauzz*
si(i&
10271 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
si(i, j, k, 1) + (&
10272 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
si(i, j, k, 2) + (ubar*&
10273 & tauxz+vbar*tauyz+wbar*tauzz)*
si(i, j, k, 3) - q_x*
si(i, j, k&
10274 & , 1) - q_y*
si(i, j, k, 2) - q_z*
si(i, j, k, 3)
10280 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fmx
10281 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fmy
10282 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fmz
10292 ssx =
eighth*(
x(i-1, j+1, k-1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j&
10293 & +1, k, 1)-
x(i-1, j-1, k, 1)+
x(i, j+1, k-1, 1)-
x(i, j-1, k-1&
10294 & , 1)+
x(i, j+1, k, 1)-
x(i, j-1, k, 1))
10295 ssy =
eighth*(
x(i-1, j+1, k-1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j&
10296 & +1, k, 2)-
x(i-1, j-1, k, 2)+
x(i, j+1, k-1, 2)-
x(i, j-1, k-1&
10297 & , 2)+
x(i, j+1, k, 2)-
x(i, j-1, k, 2))
10298 ssz =
eighth*(
x(i-1, j+1, k-1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j&
10299 & +1, k, 3)-
x(i-1, j-1, k, 3)+
x(i, j+1, k-1, 3)-
x(i, j-1, k-1&
10300 & , 3)+
x(i, j+1, k, 3)-
x(i, j-1, k, 3))
10302 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
10307 dd =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
10311 dd =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
10315 dd =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
10319 dd =
aa(i, j+1, k) -
aa(i, j, k)
10329 mul = por*(
rlv(i, j, k)+
rlv(i, j+1, k))
10335 heatcoef = mul*factlamheat + mue*factturbheat
10337 fracdiv = twothird*(u_x+v_y+w_z)
10338 tauxx = mut*(
two*u_x-fracdiv)
10339 tauyy = mut*(
two*v_y-fracdiv)
10340 tauzz = mut*(
two*w_z-fracdiv)
10341 tauxy = mut*(u_y+v_x)
10342 tauxz = mut*(u_z+w_x)
10343 tauyz = mut*(v_z+w_y)
10353 fmx = tauxx*
sj(i, j, k, 1) + tauxy*
sj(i, j, k, 2) + tauxz*
sj(i&
10355 fmy = tauxy*
sj(i, j, k, 1) + tauyy*
sj(i, j, k, 2) + tauyz*
sj(i&
10357 fmz = tauxz*
sj(i, j, k, 1) + tauyz*
sj(i, j, k, 2) + tauzz*
sj(i&
10359 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sj(i, j, k, 1) + (&
10360 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sj(i, j, k, 2) + (ubar*&
10361 & tauxz+vbar*tauyz+wbar*tauzz)*
sj(i, j, k, 3) - q_x*
sj(i, j, k&
10362 & , 1) - q_y*
sj(i, j, k, 2) - q_z*
sj(i, j, k, 3)
10368 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fmx
10369 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fmy
10370 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fmz
10380 ssx =
eighth*(
x(i-1, j-1, k+1, 1)-
x(i-1, j-1, k-1, 1)+
x(i-1, j&
10381 & , k+1, 1)-
x(i-1, j, k-1, 1)+
x(i, j-1, k+1, 1)-
x(i, j-1, k-1&
10382 & , 1)+
x(i, j, k+1, 1)-
x(i, j, k-1, 1))
10383 ssy =
eighth*(
x(i-1, j-1, k+1, 2)-
x(i-1, j-1, k-1, 2)+
x(i-1, j&
10384 & , k+1, 2)-
x(i-1, j, k-1, 2)+
x(i, j-1, k+1, 2)-
x(i, j-1, k-1&
10385 & , 2)+
x(i, j, k+1, 2)-
x(i, j, k-1, 2))
10386 ssz =
eighth*(
x(i-1, j-1, k+1, 3)-
x(i-1, j-1, k-1, 3)+
x(i-1, j&
10387 & , k+1, 3)-
x(i-1, j, k-1, 3)+
x(i, j-1, k+1, 3)-
x(i, j-1, k-1&
10388 & , 3)+
x(i, j, k+1, 3)-
x(i, j, k-1, 3))
10390 ss =
one/(ssx*ssx+ssy*ssy+ssz*ssz)
10395 dd =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
10399 dd =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
10403 dd =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
10407 dd =
aa(i, j, k+1) -
aa(i, j, k)
10417 mul = por*(
rlv(i, j, k)+
rlv(i, j, k+1))
10423 heatcoef = mul*factlamheat + mue*factturbheat
10425 fracdiv = twothird*(u_x+v_y+w_z)
10426 tauxx = mut*(
two*u_x-fracdiv)
10427 tauyy = mut*(
two*v_y-fracdiv)
10428 tauzz = mut*(
two*w_z-fracdiv)
10429 tauxy = mut*(u_y+v_x)
10430 tauxz = mut*(u_z+w_x)
10431 tauyz = mut*(v_z+w_y)
10441 fmx = tauxx*
sk(i, j, k, 1) + tauxy*
sk(i, j, k, 2) + tauxz*
sk(i&
10443 fmy = tauxy*
sk(i, j, k, 1) + tauyy*
sk(i, j, k, 2) + tauyz*
sk(i&
10445 fmz = tauxz*
sk(i, j, k, 1) + tauyz*
sk(i, j, k, 2) + tauzz*
sk(i&
10447 frhoe = (ubar*tauxx+vbar*tauxy+wbar*tauxz)*
sk(i, j, k, 1) + (&
10448 & ubar*tauxy+vbar*tauyy+wbar*tauyz)*
sk(i, j, k, 2) + (ubar*&
10449 & tauxz+vbar*tauyz+wbar*tauzz)*
sk(i, j, k, 3) - q_x*
sk(i, j, k&
10450 & , 1) - q_y*
sk(i, j, k, 2) - q_z*
sk(i, j, k, 3)
10456 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fmx
10457 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fmy
10458 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fmz
10485 real(kind=realtype),
parameter :: dssmax=0.25_realtype
10489 integer(kind=inttype) :: i, j, k, ind
10490 real(kind=realtype) :: sslim, rhoi
10491 real(kind=realtype) :: sfil, fis2, fis4
10492 real(kind=realtype) :: ppor, rrad, dis2
10493 real(kind=realtype) :: dss1, dss2, ddw, fs
10499 real(kind=realtype) :: x1
10500 real(kind=realtype) :: x2
10501 real(kind=realtype) :: y1
10502 real(kind=realtype) :: x3
10503 real(kind=realtype) :: x4
10504 real(kind=realtype) :: y2
10505 real(kind=realtype) :: x5
10506 real(kind=realtype) :: x6
10507 real(kind=realtype) :: y3
10508 real(kind=realtype) :: abs0
10509 real(kind=realtype) :: min1
10510 real(kind=realtype) :: min2
10511 real(kind=realtype) :: min3
10512 if (
rfil .ge. 0.)
then
10632 if (x1 .ge. 0.)
then
10642 if (x2 .ge. 0.)
then
10650 rrad = ppor*(
radi(i, j, k)+
radi(i+1, j, k))
10651 if (dss1 .lt. dss2)
then
10656 if (dssmax .gt. y1)
then
10666 dis2 = fis2*rrad*min1 +
sigma*fis4*rrad
10675 ddw =
w(i+1, j, k,
ivx) -
w(i, j, k,
ivx)
10677 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fs
10680 ddw =
w(i+1, j, k,
ivy) -
w(i, j, k,
ivy)
10682 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fs
10685 ddw =
w(i+1, j, k,
ivz) -
w(i, j, k,
ivz)
10687 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fs
10707 if (x3 .ge. 0.)
then
10717 if (x4 .ge. 0.)
then
10725 rrad = ppor*(
radj(i, j, k)+
radj(i, j+1, k))
10726 if (dss1 .lt. dss2)
then
10731 if (dssmax .gt. y2)
then
10737 dis2 = fis2*rrad*min2 +
sigma*fis4*rrad
10746 ddw =
w(i, j+1, k,
ivx) -
w(i, j, k,
ivx)
10748 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fs
10751 ddw =
w(i, j+1, k,
ivy) -
w(i, j, k,
ivy)
10753 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fs
10756 ddw =
w(i, j+1, k,
ivz) -
w(i, j, k,
ivz)
10758 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fs
10778 if (x5 .ge. 0.)
then
10788 if (x6 .ge. 0.)
then
10796 rrad = ppor*(
radk(i, j, k)+
radk(i, j, k+1))
10797 if (dss1 .lt. dss2)
then
10802 if (dssmax .gt. y3)
then
10808 dis2 = fis2*rrad*min3 +
sigma*fis4*rrad
10817 ddw =
w(i, j, k+1,
ivx) -
w(i, j, k,
ivx)
10819 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fs
10822 ddw =
w(i, j, k+1,
ivy) -
w(i, j, k,
ivy)
10824 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fs
10827 ddw =
w(i, j, k+1,
ivz) -
w(i, j, k,
ivz)
10829 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fs
10849 w(i, j, k,
ivx) =
w(i, j, k,
ivx)*rhoi
10850 w(i, j, k,
ivy) =
w(i, j, k,
ivy)*rhoi
10851 w(i, j, k,
ivz) =
w(i, j, k,
ivz)*rhoi
10859 w(0, j, k,
ivx) =
w(0, j, k,
ivx)*rhoi
10860 w(0, j, k,
ivy) =
w(0, j, k,
ivy)*rhoi
10861 w(0, j, k,
ivz) =
w(0, j, k,
ivz)*rhoi
10864 w(1, j, k,
ivx) =
w(1, j, k,
ivx)*rhoi
10865 w(1, j, k,
ivy) =
w(1, j, k,
ivy)*rhoi
10866 w(1, j, k,
ivz) =
w(1, j, k,
ivz)*rhoi
10883 w(i, 0, k,
ivx) =
w(i, 0, k,
ivx)*rhoi
10884 w(i, 0, k,
ivy) =
w(i, 0, k,
ivy)*rhoi
10885 w(i, 0, k,
ivz) =
w(i, 0, k,
ivz)*rhoi
10888 w(i, 1, k,
ivx) =
w(i, 1, k,
ivx)*rhoi
10889 w(i, 1, k,
ivy) =
w(i, 1, k,
ivy)*rhoi
10890 w(i, 1, k,
ivz) =
w(i, 1, k,
ivz)*rhoi
10928 real(kind=realtype),
parameter :: dpmax=0.25_realtype
10929 real(kind=realtype),
parameter :: epsacoustic=0.25_realtype
10930 real(kind=realtype),
parameter :: epsshear=0.025_realtype
10931 real(kind=realtype),
parameter :: omega=0.5_realtype
10932 real(kind=realtype),
parameter :: oneminomega=
one-omega
10936 integer(kind=inttype) :: i, j, k, ind
10937 real(kind=realtype) :: plim, sface
10938 real(kind=realtype) :: sfil, fis2, fis4
10939 real(kind=realtype) :: gammaavg, gm1, ovgm1, gm53
10940 real(kind=realtype) :: ppor, rrad, dis2
10941 real(kind=realtype) :: dp1, dp2, ddw, tmp, fs
10942 real(kind=realtype) :: dr, dru, drv, drw, dre, drk, sx, sy, sz
10943 real(kind=realtype) :: uavg, vavg, wavg, a2avg, aavg, havg
10944 real(kind=realtype) :: alphaavg, unavg, ovaavg, ova2avg
10945 real(kind=realtype) :: kavg, lam1, lam2, lam3, area
10946 real(kind=realtype) :: abv1, abv2, abv3, abv4, abv5, abv6, abv7
10947 logical :: correctfork
10952 real(kind=realtype) :: x1
10953 real(kind=realtype) :: x2
10954 real(kind=realtype) :: y1
10955 real(kind=realtype) :: x3
10956 real(kind=realtype) :: x4
10957 real(kind=realtype) :: y2
10958 real(kind=realtype) :: x5
10959 real(kind=realtype) :: x6
10960 real(kind=realtype) :: y3
10961 real(kind=realtype) :: abs0
10962 real(kind=realtype) :: min1
10963 real(realtype) :: max1
10964 real(kind=realtype) :: min2
10965 real(realtype) :: max2
10966 real(kind=realtype) :: min3
10967 real(realtype) :: max3
10968 real(kind=realtype) :: abs1
10969 real(kind=realtype) :: abs2
10970 real(kind=realtype) :: abs3
10971 real(kind=realtype) :: abs4
10972 real(kind=realtype) :: abs5
10973 real(kind=realtype) :: abs6
10974 real(kind=realtype) :: abs7
10975 real(kind=realtype) :: abs8
10976 real(kind=realtype) :: abs9
10977 real(kind=realtype) :: abs10
10978 real(kind=realtype) :: abs11
10979 real(kind=realtype) :: abs12
10980 if (
rfil .ge. 0.)
then
11037 if (x1 .ge. 0.)
then
11060 if (x2 .ge. 0.)
then
11068 if (dp1 .lt. dp2)
then
11073 if (dpmax .gt. y1)
then
11078 dis2 = fis2*ppor*min1 +
sigma*fis4*ppor
11084 & )*
w(i, j, k,
ivx)
11087 & )*
w(i, j, k,
ivy)
11090 & )*
w(i, j, k,
ivz)
11098 if (correctfork)
then
11099 ddw =
w(i+1, j, k,
irho)*
w(i+1, j, k,
itu1) -
w(i, j, k, &
11110 gm1 = gammaavg -
one
11117 a2avg =
half*(
gamma(i+1, j, k)*
p(i+1, j, k)/
w(i+1, j, k, &
11119 sx =
si(i, j, k, 1)
11120 sy =
si(i, j, k, 2)
11121 sz =
si(i, j, k, 3)
11122 area = sqrt(sx**2 + sy**2 + sz**2)
11123 if (1.e-25_realtype .lt. area)
then
11126 max1 = 1.e-25_realtype
11132 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
11133 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
11135 unavg = uavg*sx + vavg*sy + wavg*sz
11137 ova2avg =
one/a2avg
11141 if (unavg - sface + aavg .ge. 0.)
then
11142 lam1 = unavg - sface + aavg
11144 lam1 = -(unavg-sface+aavg)
11146 if (unavg - sface - aavg .ge. 0.)
then
11147 lam2 = unavg - sface - aavg
11149 lam2 = -(unavg-sface-aavg)
11151 if (unavg - sface .ge. 0.)
then
11152 lam3 = unavg - sface
11154 lam3 = -(unavg-sface)
11157 if (lam1 .lt. epsacoustic*rrad)
then
11158 lam1 = epsacoustic*rrad
11162 if (lam2 .lt. epsacoustic*rrad)
then
11163 lam2 = epsacoustic*rrad
11167 if (lam3 .lt. epsshear*rrad)
then
11168 lam3 = epsshear*rrad
11179 abv1 =
half*(lam1+lam2)
11180 abv2 =
half*(lam1-lam2)
11182 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
11184 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
11185 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
11186 abv7 = abv2*abv4*ovaavg + abv3*abv5
11189 fs = lam3*dr + abv6
11193 fs = lam3*dru + uavg*abv6 + sx*abv7
11194 fw(i+1, j, k,
imx) =
fw(i+1, j, k,
imx) + fs
11197 fs = lam3*drv + vavg*abv6 + sy*abv7
11198 fw(i+1, j, k,
imy) =
fw(i+1, j, k,
imy) + fs
11201 fs = lam3*drw + wavg*abv6 + sz*abv7
11202 fw(i+1, j, k,
imz) =
fw(i+1, j, k,
imz) + fs
11205 fs = lam3*dre + havg*abv6 + unavg*abv7
11232 if (x3 .ge. 0.)
then
11254 & abs4+abs10)+plim)
11255 if (x4 .ge. 0.)
then
11263 if (dp1 .lt. dp2)
then
11268 if (dpmax .gt. y2)
then
11273 dis2 = fis2*ppor*min2 +
sigma*fis4*ppor
11279 & )*
w(i, j, k,
ivx)
11282 & )*
w(i, j, k,
ivy)
11285 & )*
w(i, j, k,
ivz)
11293 if (correctfork)
then
11294 ddw =
w(i, j+1, k,
irho)*
w(i, j+1, k,
itu1) -
w(i, j, k, &
11305 gm1 = gammaavg -
one
11312 a2avg =
half*(
gamma(i, j+1, k)*
p(i, j+1, k)/
w(i, j+1, k, &
11314 sx =
sj(i, j, k, 1)
11315 sy =
sj(i, j, k, 2)
11316 sz =
sj(i, j, k, 3)
11317 area = sqrt(sx**2 + sy**2 + sz**2)
11318 if (1.e-25_realtype .lt. area)
then
11321 max2 = 1.e-25_realtype
11327 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
11328 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
11330 unavg = uavg*sx + vavg*sy + wavg*sz
11332 ova2avg =
one/a2avg
11336 if (unavg - sface + aavg .ge. 0.)
then
11337 lam1 = unavg - sface + aavg
11339 lam1 = -(unavg-sface+aavg)
11341 if (unavg - sface - aavg .ge. 0.)
then
11342 lam2 = unavg - sface - aavg
11344 lam2 = -(unavg-sface-aavg)
11346 if (unavg - sface .ge. 0.)
then
11347 lam3 = unavg - sface
11349 lam3 = -(unavg-sface)
11352 if (lam1 .lt. epsacoustic*rrad)
then
11353 lam1 = epsacoustic*rrad
11357 if (lam2 .lt. epsacoustic*rrad)
then
11358 lam2 = epsacoustic*rrad
11362 if (lam3 .lt. epsshear*rrad)
then
11363 lam3 = epsshear*rrad
11374 abv1 =
half*(lam1+lam2)
11375 abv2 =
half*(lam1-lam2)
11377 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
11379 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
11380 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
11381 abv7 = abv2*abv4*ovaavg + abv3*abv5
11384 fs = lam3*dr + abv6
11388 fs = lam3*dru + uavg*abv6 + sx*abv7
11389 fw(i, j+1, k,
imx) =
fw(i, j+1, k,
imx) + fs
11392 fs = lam3*drv + vavg*abv6 + sy*abv7
11393 fw(i, j+1, k,
imy) =
fw(i, j+1, k,
imy) + fs
11396 fs = lam3*drw + wavg*abv6 + sz*abv7
11397 fw(i, j+1, k,
imz) =
fw(i, j+1, k,
imz) + fs
11400 fs = lam3*dre + havg*abv6 + unavg*abv7
11427 if (x5 .ge. 0.)
then
11449 & abs6+abs12)+plim)
11450 if (x6 .ge. 0.)
then
11458 if (dp1 .lt. dp2)
then
11463 if (dpmax .gt. y3)
then
11468 dis2 = fis2*ppor*min3 +
sigma*fis4*ppor
11474 & )*
w(i, j, k,
ivx)
11477 & )*
w(i, j, k,
ivy)
11480 & )*
w(i, j, k,
ivz)
11488 if (correctfork)
then
11489 ddw =
w(i, j, k+1,
irho)*
w(i, j, k+1,
itu1) -
w(i, j, k, &
11500 gm1 = gammaavg -
one
11507 a2avg =
half*(
gamma(i, j, k+1)*
p(i, j, k+1)/
w(i, j, k+1, &
11509 sx =
sk(i, j, k, 1)
11510 sy =
sk(i, j, k, 2)
11511 sz =
sk(i, j, k, 3)
11512 area = sqrt(sx**2 + sy**2 + sz**2)
11513 if (1.e-25_realtype .lt. area)
then
11516 max3 = 1.e-25_realtype
11522 alphaavg =
half*(uavg**2+vavg**2+wavg**2)
11523 havg = alphaavg + ovgm1*(a2avg-gm53*kavg)
11525 unavg = uavg*sx + vavg*sy + wavg*sz
11527 ova2avg =
one/a2avg
11531 if (unavg - sface + aavg .ge. 0.)
then
11532 lam1 = unavg - sface + aavg
11534 lam1 = -(unavg-sface+aavg)
11536 if (unavg - sface - aavg .ge. 0.)
then
11537 lam2 = unavg - sface - aavg
11539 lam2 = -(unavg-sface-aavg)
11541 if (unavg - sface .ge. 0.)
then
11542 lam3 = unavg - sface
11544 lam3 = -(unavg-sface)
11547 if (lam1 .lt. epsacoustic*rrad)
then
11548 lam1 = epsacoustic*rrad
11552 if (lam2 .lt. epsacoustic*rrad)
then
11553 lam2 = epsacoustic*rrad
11557 if (lam3 .lt. epsshear*rrad)
then
11558 lam3 = epsshear*rrad
11569 abv1 =
half*(lam1+lam2)
11570 abv2 =
half*(lam1-lam2)
11572 abv4 = gm1*(alphaavg*dr-uavg*dru-vavg*drv-wavg*drw+dre) - &
11574 abv5 = sx*dru + sy*drv + sz*drw - unavg*dr
11575 abv6 = abv3*abv4*ova2avg + abv2*abv5*ovaavg
11576 abv7 = abv2*abv4*ovaavg + abv3*abv5
11579 fs = lam3*dr + abv6
11583 fs = lam3*dru + uavg*abv6 + sx*abv7
11584 fw(i, j, k+1,
imx) =
fw(i, j, k+1,
imx) + fs
11587 fs = lam3*drv + vavg*abv6 + sy*abv7
11588 fw(i, j, k+1,
imy) =
fw(i, j, k+1,
imy) + fs
11591 fs = lam3*drw + wavg*abv6 + sz*abv7
11592 fw(i, j, k+1,
imz) =
fw(i, j, k+1,
imz) + fs
11595 fs = lam3*dre + havg*abv6 + unavg*abv7
subroutine riemannflux(left, right, flux)
subroutine leftrightstate(du1, du2, du3, rotmatrix, left, right)
subroutine leftrightstate_fast_b(du1, du1d, du2, du2d, du3, du3d, rotmatrix, left, leftd, right, rightd)
subroutine riemannflux_fast_b(left, leftd, right, rightd, flux, fluxd)
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 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 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 rlv
real(kind=realtype), dimension(:, :, :, :), pointer si
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
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 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
integer(kind=inttype), dimension(:, :, :), pointer indfamilyi
real(kind=realtype), dimension(:, :, :, :), pointer x
integer(kind=inttype), dimension(:, :), pointer visckmaxpointer
real(kind=realtype), dimension(:, :, :), pointer qzd
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=inttype), dimension(32) myintstack
integer(kind=portype), parameter normalflux
integer(kind=inttype) myintptr
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(rho, u, v, w, p, k, etotal, correctfork)
subroutine etot_fast_b(rho, rhod, u, ud, v, vd, w, wd, p, pd, k, kd, etotal, etotald, correctfork)
real(kind=realtype) gammainf
real(kind=realtype) pinfcorr
integer(kind=inttype) nwf
real(kind=realtype) rhoinf
real(kind=realtype) timeref
subroutine invisciddissfluxscalar()
subroutine inviscidcentralflux()
subroutine invisciddissfluxmatrix_fast_b()
subroutine viscousflux_fast_b()
subroutine viscousfluxapprox()
subroutine inviscidcentralflux_fast_b()
subroutine inviscidupwindflux_fast_b(finegrid)
subroutine invisciddissfluxscalarapprox()
subroutine invisciddissfluxmatrix()
subroutine inviscidupwindflux(finegrid)
subroutine invisciddissfluxscalar_fast_b()
subroutine invisciddissfluxmatrixapprox()
real(kind=realtype) totalr0
integer(kind=inttype) currentlevel
real(kind=realtype) totalr
integer(kind=inttype) groundlevel
integer(kind=inttype) rkstage
logical function getcorrectfork()
subroutine terminate(routinename, errormessage)
real(kind=realtype) function mydim(x, y)
subroutine mydim_fast_b(x, xd, y, yd, mydimd)