21 logical,
intent(in) :: resOnly
44 if (.not. resonly)
then
79 logical,
intent(in) :: resOnly
83 integer(kind=intType) :: i, j, k, nn
85 real(kind=realtype) :: rhoi, ss, spk, ff1, ff2, ff3, ss1, ss2, ss3
86 real(kind=realtype) :: voli, volmi, volpi
87 real(kind=realtype) :: xm, ym, zm, xp, yp, zp, xa, ya, za
88 real(kind=realtype) :: ttm, ttp, mulm, mulp, muem, muep
89 real(kind=realtype) :: c1m, c1p, c10, c2m, c2p, c20
90 real(kind=realtype) :: b1, b2, c1, c2, d1, d2
91 real(kind=realtype) :: qs, uu, um, up, utau
92 real(kind=realtype) :: tke, tep, tv2, tf2, tkea, tepa, tv2a
93 real(kind=realtype) :: tkel, tv2l, sle2i, stei
94 real(kind=realtype) :: rsct, rnu
95 real(kind=realtype) :: tu12, tu22, tu32, tu42, tu52
96 real(kind=realtype) :: rnu23, dtu23, rblank
98 real(kind=realtype),
dimension(itu1:itu5) :: tup
100 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, 2, 2) :: qq
101 real(kind=realtype),
dimension(2, 2:max(il, jl, kl)) :: bb, dd, ff
102 real(kind=realtype),
dimension(2, 2, 2:max(il, jl, kl)) :: cc
104 real(kind=realtype),
dimension(:, :, :),
pointer :: dw2, dvt2, w2, w3
105 real(kind=realtype),
dimension(:, :),
pointer :: rlv2, rlv3
106 real(kind=realtype),
dimension(:, :),
pointer :: rev2, rev3
107 real(kind=realtype),
dimension(:, :),
pointer :: d2wall2, d2wall3
109 logical,
dimension(2:jl, 2:kl),
target :: flagI2, flagIl
110 logical,
dimension(2:il, 2:kl),
target :: flagJ2, flagJl
111 logical,
dimension(2:il, 2:jl),
target :: flagK2, flagKl
113 logical,
dimension(:, :),
pointer :: flag
133 tke =
w(i, j, k,
itu1)
134 tep =
w(i, j, k,
itu2)
135 tv2 =
w(i, j, k,
itu3)
136 tf2 =
w(i, j, k,
itu4)
141 tv2l = max(tv2a,
rvflimitk * 0.666666666_realtype)
142 stei = tepa /
sct(i, j, k)
143 sle2i = tepa**2 /
scl2(i, j, k)
146 rnu =
rlv(i, j, k) * rhoi
147 rsct = max(tkea, 6.*sqrt(rnu * tepa))
155 spk =
rev(i, j, k) * ss * rhoi
156 spk = min(spk,
pklim * tepa)
162 ss1 = -(
rvfc1 - 1.) / tkel * stei * sle2i
164 ss3 = (
rvfc1 - 1.) * 2./3.*stei * sle2i +
rvfc2 * spk / tkel * sle2i
167 ff1 = ff1 - 5.0 * tepa / tkel
168 ss1 = ss1 + 5.0 / tkel * stei * sle2i
171 dvt(i, j, k, 1) = ff1 * tv2 + ff2 * tf2 + ff3
172 dvt(i, j, k, 2) = ss1 * tv2 + ss2 * tf2 + ss3
179 qq(i, j, k, 1, 1) = -ff1
180 qq(i, j, k, 1, 2) = -ff2
181 qq(i, j, k, 2, 1) = -ss1
182 qq(i, j, k, 2, 2) = -ss2
205 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
206 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
208 xm =
sk(i, j, k - 1, 1) * volmi
209 ym =
sk(i, j, k - 1, 2) * volmi
210 zm =
sk(i, j, k - 1, 3) * volmi
211 xp =
sk(i, j, k, 1) * volpi
212 yp =
sk(i, j, k, 2) * volpi
213 zp =
sk(i, j, k, 3) * volpi
215 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
216 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
217 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
218 ttm = xm * xa + ym * ya + zm * za
219 ttp = xp * xa + yp * ya + zp * za
233 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
234 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
235 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
236 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
238 c1m = ttm * (mulm +
sig1 * muem) * rhoi
239 c1p = ttp * (mulp +
sig1 * muep) * rhoi
249 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j, k - 1,
itu3) &
250 - c10 *
w(i, j, k,
itu3) + c1p *
w(i, j, k + 1,
itu3)
251 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j, k - 1,
itu4) &
252 - c20 *
w(i, j, k,
itu4) + c2p *
w(i, j, k + 1,
itu4)
271 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
273 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtk1(i, j,
itu3,
itu4)
274 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtk1(i, j,
itu4,
itu3)
275 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
277 else if (k ==
kl)
then
278 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
280 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtk2(i, j,
itu3,
itu4)
281 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtk2(i, j,
itu4,
itu3)
282 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
285 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
286 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
303 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
304 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
306 xm =
sj(i, j - 1, k, 1) * volmi
307 ym =
sj(i, j - 1, k, 2) * volmi
308 zm =
sj(i, j - 1, k, 3) * volmi
309 xp =
sj(i, j, k, 1) * volpi
310 yp =
sj(i, j, k, 2) * volpi
311 zp =
sj(i, j, k, 3) * volpi
313 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
314 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
315 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
316 ttm = xm * xa + ym * ya + zm * za
317 ttp = xp * xa + yp * ya + zp * za
331 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
332 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
333 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
334 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
336 c1m = ttm * (mulm +
sig1 * muem) * rhoi
337 c1p = ttp * (mulp +
sig1 * muep) * rhoi
347 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j - 1, k,
itu3) &
348 - c10 *
w(i, j, k,
itu3) + c1p *
w(i, j + 1, k,
itu3)
349 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j - 1, k,
itu4) &
350 - c20 *
w(i, j, k,
itu4) + c2p *
w(i, j + 1, k,
itu4)
369 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
371 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtj1(i, k,
itu3,
itu4)
372 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtj1(i, k,
itu4,
itu3)
373 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
375 else if (j ==
jl)
then
376 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
378 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtj2(i, k,
itu3,
itu4)
379 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtj2(i, k,
itu4,
itu3)
380 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
383 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
384 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
401 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
402 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
404 xm =
si(i - 1, j, k, 1) * volmi
405 ym =
si(i - 1, j, k, 2) * volmi
406 zm =
si(i - 1, j, k, 3) * volmi
407 xp =
si(i, j, k, 1) * volpi
408 yp =
si(i, j, k, 2) * volpi
409 zp =
si(i, j, k, 3) * volpi
411 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
412 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
413 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
414 ttm = xm * xa + ym * ya + zm * za
415 ttp = xp * xa + yp * ya + zp * za
429 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
430 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
431 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
432 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
434 c1m = ttm * (mulm +
sig1 * muem) * rhoi
435 c1p = ttp * (mulp +
sig1 * muep) * rhoi
445 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i - 1, j, k,
itu3) &
446 - c10 *
w(i, j, k,
itu3) + c1p *
w(i + 1, j, k,
itu3)
447 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i - 1, j, k,
itu4) &
448 - c20 *
w(i, j, k,
itu4) + c2p *
w(i + 1, j, k,
itu4)
467 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
469 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmti1(j, k,
itu3,
itu4)
470 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmti1(j, k,
itu4,
itu3)
471 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
473 else if (i ==
il)
then
474 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
476 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmti2(j, k,
itu3,
itu4)
477 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmti2(j, k,
itu4,
itu3)
478 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
481 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
482 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
499 rblank = real(
iblank(i, j, k), realtype)
530 dw2 =>
dw(2, 1:, 1:, 1:); dvt2 =>
dvt(2, 1:, 1:, 1:)
531 w2 =>
w(2, 1:, 1:, 1:); rlv2 =>
rlv(2, 1:, 1:)
532 w3 =>
w(3, 1:, 1:, 1:); rlv3 =>
rlv(3, 1:, 1:)
533 d2wall2 =>
d2wall(2, :, :); rev2 =>
rev(2, 1:, 1:)
534 d2wall3 =>
d2wall(3, :, :); rev3 =>
rev(3, 1:, 1:)
538 dw2 =>
dw(
il, 1:, 1:, 1:); dvt2 =>
dvt(
il, 1:, 1:, 1:)
539 w2 =>
w(
il, 1:, 1:, 1:); rlv2 =>
rlv(
il, 1:, 1:)
540 w3 =>
w(
il - 1, 1:, 1:, 1:); rlv3 =>
rlv(
il - 1, 1:, 1:)
546 dw2 =>
dw(1:, 2, 1:, 1:); dvt2 =>
dvt(1:, 2, 1:, 1:)
547 w2 =>
w(1:, 2, 1:, 1:); rlv2 =>
rlv(1:, 2, 1:)
548 w3 =>
w(1:, 3, 1:, 1:); rlv3 =>
rlv(1:, 3, 1:)
549 d2wall2 =>
d2wall(:, 2, :); rev2 =>
rev(1:, 2, 1:)
550 d2wall3 =>
d2wall(:, 3, :); rev3 =>
rev(1:, 3, 1:)
554 dw2 =>
dw(1:,
jl, 1:, 1:); dvt2 =>
dvt(1:,
jl, 1:, 1:)
555 w2 =>
w(1:,
jl, 1:, 1:); rlv2 =>
rlv(1:,
jl, 1:)
556 w3 =>
w(1:,
jl - 1, 1:, 1:); rlv3 =>
rlv(1:,
jl - 1, 1:)
562 dw2 =>
dw(1:, 1:, 2, 1:); dvt2 =>
dvt(1:, 1:, 2, 1:)
563 w2 =>
w(1:, 1:, 2, 1:); rlv2 =>
rlv(1:, 1:, 2)
564 w3 =>
w(1:, 1:, 3, 1:); rlv3 =>
rlv(1:, 1:, 3)
565 d2wall2 =>
d2wall(:, :, 2); rev2 =>
rev(1:, 1:, 2)
566 d2wall3 =>
d2wall(:, :, 3); rev3 =>
rev(1:, 1:, 3)
570 dw2 =>
dw(1:, 1:,
kl, 1:); dvt2 =>
dvt(1:, 1:,
kl, 1:)
571 w2 =>
w(1:, 1:,
kl, 1:); rlv2 =>
rlv(1:, 1:,
kl)
572 w3 =>
w(1:, 1:,
kl - 1, 1:); rlv3 =>
rlv(1:, 1:,
kl - 1)
593 yp = w2(i, j,
irho) * d2wall2(i - 1, j - 1) * utau / rlv2(i, j)
604 tu32 = tup(
itu3) * utau**2
605 tu42 = tup(
itu4) * utau**2 / rlv2(i, j) * w2(i, j,
irho)
609 if (
rvfn .eq. 1)
then
611 tu12 = tup(
itu1) * utau**2
612 tu22 = tup(
itu2) * utau**4 / rlv2(i, j) * w2(i, j,
irho)
614 tu52 = tup(
itu5) * rlv2(i, j)
615 dtu23 = (w3(i, j,
itu3) - tu32) &
616 / (d2wall3(i - 1, j - 1) - d2wall2(i - 1, j - 1))
617 rnu23 =
half * ((tu52 + rlv2(i, j)) / w2(i, j,
irho) + &
618 (rev3(i, j) + rlv3(i, j)) / w3(i, j,
irho))
619 tu42 = (tu22 * tu32 / tu12 - rnu23 * dtu23 &
620 / (
two * d2wall2(i - 1, j - 1))) / tu12
629 if (
rvfn .eq. 1) dvt2(i, j, 2) = (tu42 - w2(i, j,
itu4)) * 0.01
639 end if testwallfunctions
651 if ((i == 2 .and. flagi2(j, k)) .or. &
652 (i ==
il .and. flagil(j, k)) .or. &
653 (j == 2 .and. flagj2(i, k)) .or. &
654 (j ==
jl .and. flagjl(i, k)) .or. &
655 (k == 2 .and. flagk2(i, j)) .or. &
656 (k ==
kl .and. flagkl(i, j)))
then
657 qq(i, j, k, 1, 1) =
one
658 qq(i, j, k, 1, 2) =
zero
659 qq(i, j, k, 2, 1) =
zero
660 qq(i, j, k, 2, 2) =
one
688 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
689 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
691 xm =
sj(i, j - 1, k, 1) * volmi
692 ym =
sj(i, j - 1, k, 2) * volmi
693 zm =
sj(i, j - 1, k, 3) * volmi
694 xp =
sj(i, j, k, 1) * volpi
695 yp =
sj(i, j, k, 2) * volpi
696 zp =
sj(i, j, k, 3) * volpi
698 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
699 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
700 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
701 ttm = xm * xa + ym * ya + zm * za
702 ttp = xp * xa + yp * ya + zp * za
708 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
709 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
710 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
711 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
713 c1m = ttm * (mulm +
sig1 * muem) * rhoi
714 c1p = ttp * (mulp +
sig1 * muep) * rhoi
733 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
736 if (uu <
zero) um = uu
737 if (uu >
zero) up = uu
739 bb(1, j) = bb(1, j) - up
740 dd(1, j) = dd(1, j) + um
748 rblank = real(
iblank(i, j, k), realtype)
750 cc(1, 1, j) = qq(i, j, k, 1, 1)
751 cc(1, 2, j) = qq(i, j, k, 1, 2) * rblank
752 cc(2, 1, j) = qq(i, j, k, 2, 1) * rblank
753 cc(2, 2, j) = qq(i, j, k, 2, 2)
755 ff(1, j) =
dvt(i, j, k, 1) * rblank
756 ff(2, j) =
dvt(i, j, k, 2) * rblank
758 bb(:, j) = bb(:, j) * rblank
759 dd(:, j) = dd(:, j) * rblank
763 if ((i == 2 .and. flagi2(j, k)) .or. &
764 (i ==
il .and. flagil(j, k)) .or. &
765 (j == 2 .and. flagj2(i, k)) .or. &
766 (j ==
jl .and. flagjl(i, k)) .or. &
767 (k == 2 .and. flagk2(i, j)) .or. &
768 (k ==
kl .and. flagkl(i, j)))
then
779 call tdia3(2_inttype,
jl, bb, cc, dd, ff)
784 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, j) + qq(i, j, k, 1, 2) * ff(2, j)
785 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, j) + qq(i, j, k, 2, 2) * ff(2, j)
807 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
808 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
810 xm =
si(i - 1, j, k, 1) * volmi
811 ym =
si(i - 1, j, k, 2) * volmi
812 zm =
si(i - 1, j, k, 3) * volmi
813 xp =
si(i, j, k, 1) * volpi
814 yp =
si(i, j, k, 2) * volpi
815 zp =
si(i, j, k, 3) * volpi
817 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
818 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
819 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
820 ttm = xm * xa + ym * ya + zm * za
821 ttp = xp * xa + yp * ya + zp * za
827 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
828 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
829 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
830 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
832 c1m = ttm * (mulm +
sig1 * muem) * rhoi
833 c1p = ttp * (mulp +
sig1 * muep) * rhoi
852 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
855 if (uu <
zero) um = uu
856 if (uu >
zero) up = uu
858 bb(1, i) = bb(1, i) - up
859 dd(1, i) = dd(1, i) + um
867 rblank = real(
iblank(i, j, k), realtype)
869 cc(1, 1, i) = qq(i, j, k, 1, 1)
870 cc(1, 2, i) = qq(i, j, k, 1, 2) * rblank
871 cc(2, 1, i) = qq(i, j, k, 2, 1) * rblank
872 cc(2, 2, i) = qq(i, j, k, 2, 2)
874 ff(1, i) =
dvt(i, j, k, 1) * rblank
875 ff(2, i) =
dvt(i, j, k, 2) * rblank
877 bb(:, i) = bb(:, i) * rblank
878 dd(:, i) = dd(:, i) * rblank
882 if ((i == 2 .and. flagi2(j, k)) .or. &
883 (i ==
il .and. flagil(j, k)) .or. &
884 (j == 2 .and. flagj2(i, k)) .or. &
885 (j ==
jl .and. flagjl(i, k)) .or. &
886 (k == 2 .and. flagk2(i, j)) .or. &
887 (k ==
kl .and. flagkl(i, j)))
then
898 call tdia3(2_inttype,
il, bb, cc, dd, ff)
903 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, i) + qq(i, j, k, 1, 2) * ff(2, i)
904 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, i) + qq(i, j, k, 2, 2) * ff(2, i)
926 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
927 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
929 xm =
sk(i, j, k - 1, 1) * volmi
930 ym =
sk(i, j, k - 1, 2) * volmi
931 zm =
sk(i, j, k - 1, 3) * volmi
932 xp =
sk(i, j, k, 1) * volpi
933 yp =
sk(i, j, k, 2) * volpi
934 zp =
sk(i, j, k, 3) * volpi
936 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
937 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
938 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
939 ttm = xm * xa + ym * ya + zm * za
940 ttp = xp * xa + yp * ya + zp * za
946 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
947 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
948 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
949 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
951 c1m = ttm * (mulm +
sig1 * muem) * rhoi
952 c1p = ttp * (mulp +
sig1 * muep) * rhoi
971 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
974 if (uu <
zero) um = uu
975 if (uu >
zero) up = uu
977 bb(1, k) = bb(1, k) - up
978 dd(1, k) = dd(1, k) + um
986 rblank = real(
iblank(i, j, k), realtype)
988 cc(1, 1, k) = qq(i, j, k, 1, 1)
989 cc(1, 2, k) = qq(i, j, k, 1, 2) * rblank
990 cc(2, 1, k) = qq(i, j, k, 2, 1) * rblank
991 cc(2, 2, k) = qq(i, j, k, 2, 2)
993 ff(1, k) =
dvt(i, j, k, 1) * rblank
994 ff(2, k) =
dvt(i, j, k, 2) * rblank
996 bb(:, k) = bb(:, k) * rblank
997 dd(:, k) = dd(:, k) * rblank
1001 if ((i == 2 .and. flagi2(j, k)) .or. &
1002 (i ==
il .and. flagil(j, k)) .or. &
1003 (j == 2 .and. flagj2(i, k)) .or. &
1004 (j ==
jl .and. flagjl(i, k)) .or. &
1005 (k == 2 .and. flagk2(i, j)) .or. &
1006 (k ==
kl .and. flagkl(i, j)))
then
1017 call tdia3(2_inttype,
kl, bb, cc, dd, ff)
1022 dvt(i, j, k, 1) = ff(1, k)
1023 dvt(i, j, k, 2) = ff(2, k)
1059 logical,
intent(in) :: resOnly
1063 integer(kind=intType) :: i, j, k, nn
1065 real(kind=realtype) :: alp
1066 real(kind=realtype) :: rhoi, ss, spk, ff1, ff2, ff3
1067 real(kind=realtype) :: ss1, ss2, ss3
1068 real(kind=realtype) :: voli, volmi, volpi
1069 real(kind=realtype) :: xm, ym, zm, xp, yp, zp, xa, ya, za
1070 real(kind=realtype) :: ttm, ttp, mulm, mulp, muem, muep
1071 real(kind=realtype) :: c1m, c1p, c10, c2m, c2p, c20
1072 real(kind=realtype) :: b1, b2, c1, c2, d1, d2
1073 real(kind=realtype) :: qs, uu, um, up, utau
1074 real(kind=realtype) :: tke, tep, tv2, tkea, tepa, tv2a
1075 real(kind=realtype) :: tv2l, stei, sle2i
1076 real(kind=realtype) :: rnu23, tu12, tu22, tu52, prod2, dtu23
1077 real(kind=realtype) :: factor, rblank
1079 real(kind=realtype),
dimension(itu1:itu5) :: tup
1081 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, 2, 2) :: qq
1082 real(kind=realtype),
dimension(2, 2:max(il, jl, kl)) :: bb, dd, ff
1083 real(kind=realtype),
dimension(2, 2, 2:max(il, jl, kl)) :: cc
1085 real(kind=realtype),
dimension(:, :, :),
pointer :: dw2, dvt2, w2, w3
1086 real(kind=realtype),
dimension(:, :),
pointer :: rlv2, rlv3
1087 real(kind=realtype),
dimension(:, :),
pointer :: rev2, rev3
1088 real(kind=realtype),
dimension(:, :),
pointer :: d2wall2, d2wall3
1090 logical,
dimension(2:jl, 2:kl),
target :: flagI2, flagIl
1091 logical,
dimension(2:il, 2:kl),
target :: flagJ2, flagJl
1092 logical,
dimension(2:il, 2:jl),
target :: flagK2, flagKl
1094 logical,
dimension(:, :),
pointer :: flag
1119 tke =
w(i, j, k,
itu1)
1120 tep =
w(i, j, k,
itu2)
1121 tv2 =
w(i, j, k,
itu3)
1125 tv2l = max(tv2a,
rvflimitk * 0.66666_realtype)
1126 stei = tepa /
sct(i, j, k)
1127 sle2i = tepa**2 /
scl2(i, j, k)
1129 spk =
rev(i, j, k) * ss * rhoi
1130 spk = min(spk,
pklim * tepa)
1144 ss3 = alp * spk * stei
1146 dvt(i, j, k, 1) = ff1 * tke + ff2 * tep + ff3
1147 dvt(i, j, k, 2) = ss1 * tke + ss2 * tep + ss3
1154 qq(i, j, k, 1, 1) = -ff1
1155 qq(i, j, k, 1, 2) = -ff2
1156 qq(i, j, k, 2, 1) = -ss1
1157 qq(i, j, k, 2, 2) = -ss2
1179 voli =
one /
vol(i, j, k)
1180 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
1181 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
1183 xm =
sk(i, j, k - 1, 1) * volmi
1184 ym =
sk(i, j, k - 1, 2) * volmi
1185 zm =
sk(i, j, k - 1, 3) * volmi
1186 xp =
sk(i, j, k, 1) * volpi
1187 yp =
sk(i, j, k, 2) * volpi
1188 zp =
sk(i, j, k, 3) * volpi
1190 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
1191 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
1192 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
1193 ttm = xm * xa + ym * ya + zm * za
1194 ttp = xp * xa + yp * ya + zp * za
1208 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
1209 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
1210 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
1211 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
1213 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1214 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1217 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1218 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1224 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j, k - 1,
itu1) &
1225 - c10 *
w(i, j, k,
itu1) + c1p *
w(i, j, k + 1,
itu1)
1226 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j, k - 1,
itu2) &
1227 - c20 *
w(i, j, k,
itu2) + c2p *
w(i, j, k + 1,
itu2)
1246 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1248 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtk1(i, j,
itu1,
itu2)
1249 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtk1(i, j,
itu2,
itu1)
1250 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1252 else if (k ==
kl)
then
1253 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1255 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtk2(i, j,
itu1,
itu2)
1256 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtk2(i, j,
itu2,
itu1)
1257 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1260 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
1261 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
1277 voli =
one /
vol(i, j, k)
1278 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
1279 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
1281 xm =
sj(i, j - 1, k, 1) * volmi
1282 ym =
sj(i, j - 1, k, 2) * volmi
1283 zm =
sj(i, j - 1, k, 3) * volmi
1284 xp =
sj(i, j, k, 1) * volpi
1285 yp =
sj(i, j, k, 2) * volpi
1286 zp =
sj(i, j, k, 3) * volpi
1288 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
1289 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
1290 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
1291 ttm = xm * xa + ym * ya + zm * za
1292 ttp = xp * xa + yp * ya + zp * za
1306 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
1307 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
1308 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
1309 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
1311 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1312 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1315 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1316 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1322 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j - 1, k,
itu1) &
1323 - c10 *
w(i, j, k,
itu1) + c1p *
w(i, j + 1, k,
itu1)
1324 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j - 1, k,
itu2) &
1325 - c20 *
w(i, j, k,
itu2) + c2p *
w(i, j + 1, k,
itu2)
1344 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1346 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtj1(i, k,
itu1,
itu2)
1347 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtj1(i, k,
itu2,
itu1)
1348 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1350 else if (j ==
jl)
then
1351 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1353 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtj2(i, k,
itu1,
itu2)
1354 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtj2(i, k,
itu2,
itu1)
1355 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1358 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
1359 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
1375 voli =
one /
vol(i, j, k)
1376 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
1377 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
1379 xm =
si(i - 1, j, k, 1) * volmi
1380 ym =
si(i - 1, j, k, 2) * volmi
1381 zm =
si(i - 1, j, k, 3) * volmi
1382 xp =
si(i, j, k, 1) * volpi
1383 yp =
si(i, j, k, 2) * volpi
1384 zp =
si(i, j, k, 3) * volpi
1386 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
1387 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
1388 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
1389 ttm = xm * xa + ym * ya + zm * za
1390 ttp = xp * xa + yp * ya + zp * za
1404 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
1405 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
1406 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
1407 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
1409 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1410 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1413 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1414 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1420 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i - 1, j, k,
itu1) &
1421 - c10 *
w(i, j, k,
itu1) + c1p *
w(i + 1, j, k,
itu1)
1422 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i - 1, j, k,
itu2) &
1423 - c20 *
w(i, j, k,
itu2) + c2p *
w(i + 1, j, k,
itu2)
1442 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1444 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmti1(j, k,
itu1,
itu2)
1445 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmti1(j, k,
itu2,
itu1)
1446 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1448 else if (i ==
il)
then
1449 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1451 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmti2(j, k,
itu1,
itu2)
1452 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmti2(j, k,
itu2,
itu1)
1453 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1456 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
1457 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
1474 rblank = real(
iblank(i, j, k), realtype)
1505 dw2 =>
dw(2, 1:, 1:, 1:); dvt2 =>
dvt(2, 1:, 1:, 1:)
1506 w2 =>
w(2, 1:, 1:, 1:); rlv2 =>
rlv(2, 1:, 1:)
1507 w3 =>
w(3, 1:, 1:, 1:); rlv3 =>
rlv(3, 1:, 1:)
1508 d2wall2 =>
d2wall(2, :, :); rev2 =>
rev(2, 1:, 1:)
1509 d2wall3 =>
d2wall(3, :, :); rev3 =>
rev(3, 1:, 1:)
1513 dw2 =>
dw(
il, 1:, 1:, 1:); dvt2 =>
dvt(
il, 1:, 1:, 1:)
1514 w2 =>
w(
il, 1:, 1:, 1:); rlv2 =>
rlv(
il, 1:, 1:)
1515 w3 =>
w(
il - 1, 1:, 1:, 1:); rlv3 =>
rlv(
il - 1, 1:, 1:)
1517 d2wall3 =>
d2wall(
il - 1, :, :); rev3 =>
rev(
il - 1, 1:, 1:)
1521 dw2 =>
dw(1:, 2, 1:, 1:); dvt2 =>
dvt(1:, 2, 1:, 1:)
1522 w2 =>
w(1:, 2, 1:, 1:); rlv2 =>
rlv(1:, 2, 1:)
1523 w3 =>
w(1:, 3, 1:, 1:); rlv3 =>
rlv(1:, 3, 1:)
1524 d2wall2 =>
d2wall(:, 2, :); rev2 =>
rev(1:, 2, 1:)
1525 d2wall3 =>
d2wall(:, 3, :); rev3 =>
rev(1:, 3, 1:)
1529 dw2 =>
dw(1:,
jl, 1:, 1:); dvt2 =>
dvt(1:,
jl, 1:, 1:)
1530 w2 =>
w(1:,
jl, 1:, 1:); rlv2 =>
rlv(1:,
jl, 1:)
1531 w3 =>
w(1:,
jl - 1, 1:, 1:); rlv3 =>
rlv(1:,
jl - 1, 1:)
1533 d2wall3 =>
d2wall(:,
jl - 1, :); rev3 =>
rev(1:,
jl - 1, 1:)
1537 dw2 =>
dw(1:, 1:, 2, 1:); dvt2 =>
dvt(1:, 1:, 2, 1:)
1538 w2 =>
w(1:, 1:, 2, 1:); rlv2 =>
rlv(1:, 1:, 2)
1539 w3 =>
w(1:, 1:, 3, 1:); rlv3 =>
rlv(1:, 1:, 3)
1540 d2wall2 =>
d2wall(:, :, 2); rev2 =>
rev(1:, 1:, 2)
1541 d2wall3 =>
d2wall(:, :, 3); rev3 =>
rev(1:, 1:, 3)
1545 dw2 =>
dw(1:, 1:,
kl, 1:); dvt2 =>
dvt(1:, 1:,
kl, 1:)
1546 w2 =>
w(1:, 1:,
kl, 1:); rlv2 =>
rlv(1:, 1:,
kl)
1547 w3 =>
w(1:, 1:,
kl - 1, 1:); rlv3 =>
rlv(1:, 1:,
kl - 1)
1549 d2wall3 =>
d2wall(:, :,
kl - 1); rev3 =>
rev(1:, 1:,
kl - 1)
1568 yp = w2(i, j,
irho) * d2wall2(i - 1, j - 1) * utau / rlv2(i, j)
1579 tu12 = tup(
itu1) * utau**2
1580 tu22 = tup(
itu2) * utau**4 / rlv2(i, j) * w2(i, j,
irho)
1585 tu52 = tup(
itu5) * rlv2(i, j)
1586 dtu23 = (w3(i, j,
itu1) - tu12) &
1587 / (d2wall3(i - 1, j - 1) - d2wall2(i - 1, j - 1))
1588 rnu23 =
half * ((tu52 + rlv2(i, j)) / w2(i, j,
irho) + &
1589 (rev3(i, j) + rlv3(i, j)) / w3(i, j,
irho))
1590 prod2 = tu52 / w2(i, j,
irho) * (utau**2 * w2(i, j,
irho) &
1591 / (rlv2(i, j) + tu52))**2
1592 tu22 = prod2 + rnu23 * dtu23 / (
two * d2wall2(i - 1, j - 1))
1599 dvt2(i, j, 1) = (tu12 - w2(i, j,
itu1))
1600 dvt2(i, j, 2) = (tu22 - w2(i, j,
itu2)) * 0.01
1610 end if testwallfunctions
1634 qq(i, j, k, 1, 1) = factor * qq(i, j, k, 1, 1)
1635 qq(i, j, k, 1, 2) = factor * qq(i, j, k, 1, 2)
1636 qq(i, j, k, 2, 1) = factor * qq(i, j, k, 2, 1)
1637 qq(i, j, k, 2, 2) = factor * qq(i, j, k, 2, 2)
1641 if ((i == 2 .and. flagi2(j, k)) .or. &
1642 (i ==
il .and. flagil(j, k)) .or. &
1643 (j == 2 .and. flagj2(i, k)) .or. &
1644 (j ==
jl .and. flagjl(i, k)) .or. &
1645 (k == 2 .and. flagk2(i, j)) .or. &
1646 (k ==
kl .and. flagkl(i, j)))
then
1647 qq(i, j, k, 1, 1) =
one
1648 qq(i, j, k, 1, 2) =
zero
1649 qq(i, j, k, 2, 1) =
zero
1650 qq(i, j, k, 2, 2) =
one
1677 voli =
one /
vol(i, j, k)
1678 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
1679 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
1681 xm =
sj(i, j - 1, k, 1) * volmi
1682 ym =
sj(i, j - 1, k, 2) * volmi
1683 zm =
sj(i, j - 1, k, 3) * volmi
1684 xp =
sj(i, j, k, 1) * volpi
1685 yp =
sj(i, j, k, 2) * volpi
1686 zp =
sj(i, j, k, 3) * volpi
1688 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
1689 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
1690 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
1691 ttm = xm * xa + ym * ya + zm * za
1692 ttp = xp * xa + yp * ya + zp * za
1698 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
1699 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
1700 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
1701 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
1703 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1704 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1706 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1707 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1723 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1726 if (uu <
zero) um = uu
1727 if (uu >
zero) up = uu
1729 bb(1, j) = bb(1, j) - up
1730 dd(1, j) = dd(1, j) + um
1731 bb(2, j) = bb(2, j) - up
1732 dd(2, j) = dd(2, j) + um
1738 rblank = real(
iblank(i, j, k), realtype)
1740 cc(1, 1, j) = qq(i, j, k, 1, 1)
1741 cc(1, 2, j) = qq(i, j, k, 1, 2) * rblank
1742 cc(2, 1, j) = qq(i, j, k, 2, 1) * rblank
1743 cc(2, 2, j) = qq(i, j, k, 2, 2)
1745 ff(1, j) =
dvt(i, j, k, 1) * rblank
1746 ff(2, j) =
dvt(i, j, k, 2) * rblank
1748 bb(:, j) = bb(:, j) * rblank
1749 dd(:, j) = dd(:, j) * rblank
1753 if ((i == 2 .and. flagi2(j, k)) .or. &
1754 (i ==
il .and. flagil(j, k)) .or. &
1755 (j == 2 .and. flagj2(i, k)) .or. &
1756 (j ==
jl .and. flagjl(i, k)) .or. &
1757 (k == 2 .and. flagk2(i, j)) .or. &
1758 (k ==
kl .and. flagkl(i, j)))
then
1769 call tdia3(2_inttype,
jl, bb, cc, dd, ff)
1774 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, j) + qq(i, j, k, 1, 2) * ff(2, j)
1775 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, j) + qq(i, j, k, 2, 2) * ff(2, j)
1796 voli =
one /
vol(i, j, k)
1797 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
1798 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
1800 xm =
si(i - 1, j, k, 1) * volmi
1801 ym =
si(i - 1, j, k, 2) * volmi
1802 zm =
si(i - 1, j, k, 3) * volmi
1803 xp =
si(i, j, k, 1) * volpi
1804 yp =
si(i, j, k, 2) * volpi
1805 zp =
si(i, j, k, 3) * volpi
1807 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
1808 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
1809 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
1810 ttm = xm * xa + ym * ya + zm * za
1811 ttp = xp * xa + yp * ya + zp * za
1817 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
1818 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
1819 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
1820 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
1822 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1823 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1825 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1826 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1842 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1845 if (uu <
zero) um = uu
1846 if (uu >
zero) up = uu
1848 bb(1, i) = bb(1, i) - up
1849 dd(1, i) = dd(1, i) + um
1850 bb(2, i) = bb(2, i) - up
1851 dd(2, i) = dd(2, i) + um
1857 rblank = real(
iblank(i, j, k), realtype)
1859 cc(1, 1, i) = qq(i, j, k, 1, 1)
1860 cc(1, 2, i) = qq(i, j, k, 1, 2) * rblank
1861 cc(2, 1, i) = qq(i, j, k, 2, 1) * rblank
1862 cc(2, 2, i) = qq(i, j, k, 2, 2)
1864 ff(1, i) =
dvt(i, j, k, 1) * rblank
1865 ff(2, i) =
dvt(i, j, k, 2) * rblank
1867 bb(:, i) = bb(:, i) * rblank
1868 dd(:, i) = dd(:, i) * rblank
1872 if ((i == 2 .and. flagi2(j, k)) .or. &
1873 (i ==
il .and. flagil(j, k)) .or. &
1874 (j == 2 .and. flagj2(i, k)) .or. &
1875 (j ==
jl .and. flagjl(i, k)) .or. &
1876 (k == 2 .and. flagk2(i, j)) .or. &
1877 (k ==
kl .and. flagkl(i, j)))
then
1888 call tdia3(2_inttype,
il, bb, cc, dd, ff)
1893 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, i) + qq(i, j, k, 1, 2) * ff(2, i)
1894 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, i) + qq(i, j, k, 2, 2) * ff(2, i)
1915 voli =
one /
vol(i, j, k)
1916 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
1917 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
1919 xm =
sk(i, j, k - 1, 1) * volmi
1920 ym =
sk(i, j, k - 1, 2) * volmi
1921 zm =
sk(i, j, k - 1, 3) * volmi
1922 xp =
sk(i, j, k, 1) * volpi
1923 yp =
sk(i, j, k, 2) * volpi
1924 zp =
sk(i, j, k, 3) * volpi
1926 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
1927 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
1928 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
1929 ttm = xm * xa + ym * ya + zm * za
1930 ttp = xp * xa + yp * ya + zp * za
1936 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
1937 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
1938 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
1939 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
1941 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1942 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1944 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1945 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1961 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1964 if (uu <
zero) um = uu
1965 if (uu >
zero) up = uu
1967 bb(1, k) = bb(1, k) - up
1968 dd(1, k) = dd(1, k) + um
1969 bb(2, k) = bb(2, k) - up
1970 dd(2, k) = dd(2, k) + um
1976 rblank = real(
iblank(i, j, k), realtype)
1978 cc(1, 1, k) = qq(i, j, k, 1, 1)
1979 cc(1, 2, k) = qq(i, j, k, 1, 2) * rblank
1980 cc(2, 1, k) = qq(i, j, k, 2, 1) * rblank
1981 cc(2, 2, k) = qq(i, j, k, 2, 2)
1983 ff(1, k) =
dvt(i, j, k, 1) * rblank
1984 ff(2, k) =
dvt(i, j, k, 2) * rblank
1986 bb(:, k) = bb(:, k) * rblank
1987 dd(:, k) = dd(:, k) * rblank
1991 if ((i == 2 .and. flagi2(j, k)) .or. &
1992 (i ==
il .and. flagil(j, k)) .or. &
1993 (j == 2 .and. flagj2(i, k)) .or. &
1994 (j ==
jl .and. flagjl(i, k)) .or. &
1995 (k == 2 .and. flagk2(i, j)) .or. &
1996 (k ==
kl .and. flagkl(i, j)))
then
2007 call tdia3(2_inttype,
kl, bb, cc, dd, ff)
2012 dvt(i, j, k, 1) = ff(1, k)
2013 dvt(i, j, k, 2) = ff(2, k)
2026 w(i, j, k,
itu1) =
w(i, j, k,
itu1) + factor *
dvt(i, j, k, 1)
2027 w(i, j, k,
itu2) =
w(i, j, k,
itu2) + factor *
dvt(i, j, k, 2)
real(kind=realtype), dimension(:, :, :, :), pointer bmtk2
real(kind=realtype), dimension(:, :, :), pointer sfacek
logical addgridvelocities
real(kind=realtype), dimension(:, :, :, :), pointer bmti1
integer(kind=inttype) nviscbocos
real(kind=realtype), dimension(:, :, :, :), pointer bmtj1
real(kind=realtype), dimension(:, :, :, :), pointer bmti2
real(kind=realtype), dimension(:, :, :, :), pointer w
real(kind=realtype), dimension(:, :, :, :), pointer scratch
real(kind=realtype), dimension(:, :, :), pointer sfacei
type(viscsubfacetype), dimension(:), pointer viscsubface
real(kind=realtype), dimension(:, :, :), pointer d2wall
integer(kind=inttype), dimension(:, :, :), pointer iblank
real(kind=realtype), dimension(:, :, :), pointer rlv
integer(kind=inttype), dimension(:), pointer bcfaceid
real(kind=realtype), dimension(:, :, :, :), pointer si
real(kind=realtype), dimension(:, :, :), pointer volref
real(kind=realtype), dimension(:, :, :, :), pointer sj
real(kind=realtype), dimension(:, :, :), pointer rev
real(kind=realtype), dimension(:, :, :, :), pointer bmtj2
real(kind=realtype), dimension(:, :, :, :), pointer dw
real(kind=realtype), dimension(:, :, :, :), pointer sk
real(kind=realtype), dimension(:, :, :), pointer vol
real(kind=realtype), dimension(:, :, :), pointer sfacej
real(kind=realtype), dimension(:, :, :, :), pointer bmtk1
real(kind=realtype), parameter zero
integer(kind=inttype), parameter imax
integer(kind=inttype), parameter kmin
integer(kind=inttype), parameter jmax
real(kind=realtype), parameter one
real(kind=realtype), parameter half
integer(kind=inttype), parameter imin
real(kind=realtype), parameter two
integer(kind=inttype), parameter kmax
integer(kind=inttype), parameter jmin
real(kind=realtype), parameter rvfc2
real(kind=realtype), parameter rvfn6a
real(kind=realtype), parameter rvfsigv1
real(kind=realtype), parameter rvfn6b
real(kind=realtype), parameter rvfbeta
real(kind=realtype) rvfcl
real(kind=realtype), parameter rvfsigk1
real(kind=realtype), parameter rvfsige1
real(kind=realtype) rvflimitk
real(kind=realtype), parameter rvfn1a
real(kind=realtype), parameter rvfn1b
real(kind=realtype), parameter rvfc1
subroutine bcturbtreatment
subroutine applyallturbbcthisblock(secondHalo)
subroutine curvetupyp(tup, yp, ntu1, ntu2)
real(kind=realtype), dimension(:, :, :), pointer scl2
real(kind=realtype), dimension(:, :, :), pointer prod
real(kind=realtype), dimension(:, :, :, :), pointer dvt
real(kind=realtype), dimension(:, :, :), pointer sct
subroutine vfeddyviscosity(iBeg, iEnd, jBeg, jEnd, kBeg, kEnd)
subroutine unsteadyturbterm(mAdv, nAdv, offset, qq)
subroutine tdia3(nb, ne, l, c, u, r)
subroutine turbadvection(mAdv, nAdv, offset, qq)
subroutine setpointers(nn, mm, ll)
subroutine kesolve(resOnly)
subroutine vf_block(resOnly)
subroutine vfsolve(resOnly)