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
134 tke =
w(i, j, k,
itu1)
135 tep =
w(i, j, k,
itu2)
136 tv2 =
w(i, j, k,
itu3)
137 tf2 =
w(i, j, k,
itu4)
142 tv2l = max(tv2a,
rvflimitk * 0.666666666_realtype)
143 stei = tepa /
sct(i, j, k)
144 sle2i = tepa**2 /
scl2(i, j, k)
147 rnu =
rlv(i, j, k) * rhoi
148 rsct = max(tkea, 6.*sqrt(rnu * tepa))
156 spk =
rev(i, j, k) * ss * rhoi
157 spk = min(spk,
pklim * tepa)
163 ss1 = -(
rvfc1 - 1.) / tkel * stei * sle2i
165 ss3 = (
rvfc1 - 1.) * 2./3.*stei * sle2i +
rvfc2 * spk / tkel * sle2i
168 ff1 = ff1 - 5.0 * tepa / tkel
169 ss1 = ss1 + 5.0 / tkel * stei * sle2i
172 dvt(i, j, k, 1) = ff1 * tv2 + ff2 * tf2 + ff3
173 dvt(i, j, k, 2) = ss1 * tv2 + ss2 * tf2 + ss3
180 qq(i, j, k, 1, 1) = -ff1
181 qq(i, j, k, 1, 2) = -ff2
182 qq(i, j, k, 2, 1) = -ss1
183 qq(i, j, k, 2, 2) = -ss2
206 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
207 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
209 xm =
sk(i, j, k - 1, 1) * volmi
210 ym =
sk(i, j, k - 1, 2) * volmi
211 zm =
sk(i, j, k - 1, 3) * volmi
212 xp =
sk(i, j, k, 1) * volpi
213 yp =
sk(i, j, k, 2) * volpi
214 zp =
sk(i, j, k, 3) * volpi
216 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
217 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
218 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
219 ttm = xm * xa + ym * ya + zm * za
220 ttp = xp * xa + yp * ya + zp * za
234 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
235 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
236 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
237 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
239 c1m = ttm * (mulm +
sig1 * muem) * rhoi
240 c1p = ttp * (mulp +
sig1 * muep) * rhoi
250 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j, k - 1,
itu3) &
251 - c10 *
w(i, j, k,
itu3) + c1p *
w(i, j, k + 1,
itu3)
252 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j, k - 1,
itu4) &
253 - c20 *
w(i, j, k,
itu4) + c2p *
w(i, j, k + 1,
itu4)
272 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
274 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtk1(i, j,
itu3,
itu4)
275 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtk1(i, j,
itu4,
itu3)
276 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
278 else if (k ==
kl)
then
279 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
281 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtk2(i, j,
itu3,
itu4)
282 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtk2(i, j,
itu4,
itu3)
283 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
286 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
287 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
304 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
305 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
307 xm =
sj(i, j - 1, k, 1) * volmi
308 ym =
sj(i, j - 1, k, 2) * volmi
309 zm =
sj(i, j - 1, k, 3) * volmi
310 xp =
sj(i, j, k, 1) * volpi
311 yp =
sj(i, j, k, 2) * volpi
312 zp =
sj(i, j, k, 3) * volpi
314 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
315 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
316 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
317 ttm = xm * xa + ym * ya + zm * za
318 ttp = xp * xa + yp * ya + zp * za
332 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
333 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
334 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
335 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
337 c1m = ttm * (mulm +
sig1 * muem) * rhoi
338 c1p = ttp * (mulp +
sig1 * muep) * rhoi
348 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j - 1, k,
itu3) &
349 - c10 *
w(i, j, k,
itu3) + c1p *
w(i, j + 1, k,
itu3)
350 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j - 1, k,
itu4) &
351 - c20 *
w(i, j, k,
itu4) + c2p *
w(i, j + 1, k,
itu4)
370 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
372 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtj1(i, k,
itu3,
itu4)
373 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtj1(i, k,
itu4,
itu3)
374 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
376 else if (j ==
jl)
then
377 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
379 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtj2(i, k,
itu3,
itu4)
380 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtj2(i, k,
itu4,
itu3)
381 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
384 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
385 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
402 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
403 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
405 xm =
si(i - 1, j, k, 1) * volmi
406 ym =
si(i - 1, j, k, 2) * volmi
407 zm =
si(i - 1, j, k, 3) * volmi
408 xp =
si(i, j, k, 1) * volpi
409 yp =
si(i, j, k, 2) * volpi
410 zp =
si(i, j, k, 3) * volpi
412 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
413 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
414 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
415 ttm = xm * xa + ym * ya + zm * za
416 ttp = xp * xa + yp * ya + zp * za
430 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
431 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
432 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
433 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
435 c1m = ttm * (mulm +
sig1 * muem) * rhoi
436 c1p = ttp * (mulp +
sig1 * muep) * rhoi
446 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i - 1, j, k,
itu3) &
447 - c10 *
w(i, j, k,
itu3) + c1p *
w(i + 1, j, k,
itu3)
448 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i - 1, j, k,
itu4) &
449 - c20 *
w(i, j, k,
itu4) + c2p *
w(i + 1, j, k,
itu4)
468 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
470 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmti1(j, k,
itu3,
itu4)
471 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmti1(j, k,
itu4,
itu3)
472 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
474 else if (i ==
il)
then
475 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
477 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmti2(j, k,
itu3,
itu4)
478 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmti2(j, k,
itu4,
itu3)
479 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
482 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
483 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
500 rblank = real(
iblank(i, j, k), realtype)
531 dw2 =>
dw(2, 1:, 1:, 1:); dvt2 =>
dvt(2, 1:, 1:, 1:)
532 w2 =>
w(2, 1:, 1:, 1:); rlv2 =>
rlv(2, 1:, 1:)
533 w3 =>
w(3, 1:, 1:, 1:); rlv3 =>
rlv(3, 1:, 1:)
534 d2wall2 =>
d2wall(2, :, :); rev2 =>
rev(2, 1:, 1:)
535 d2wall3 =>
d2wall(3, :, :); rev3 =>
rev(3, 1:, 1:)
539 dw2 =>
dw(
il, 1:, 1:, 1:); dvt2 =>
dvt(
il, 1:, 1:, 1:)
540 w2 =>
w(
il, 1:, 1:, 1:); rlv2 =>
rlv(
il, 1:, 1:)
541 w3 =>
w(
il - 1, 1:, 1:, 1:); rlv3 =>
rlv(
il - 1, 1:, 1:)
547 dw2 =>
dw(1:, 2, 1:, 1:); dvt2 =>
dvt(1:, 2, 1:, 1:)
548 w2 =>
w(1:, 2, 1:, 1:); rlv2 =>
rlv(1:, 2, 1:)
549 w3 =>
w(1:, 3, 1:, 1:); rlv3 =>
rlv(1:, 3, 1:)
550 d2wall2 =>
d2wall(:, 2, :); rev2 =>
rev(1:, 2, 1:)
551 d2wall3 =>
d2wall(:, 3, :); rev3 =>
rev(1:, 3, 1:)
555 dw2 =>
dw(1:,
jl, 1:, 1:); dvt2 =>
dvt(1:,
jl, 1:, 1:)
556 w2 =>
w(1:,
jl, 1:, 1:); rlv2 =>
rlv(1:,
jl, 1:)
557 w3 =>
w(1:,
jl - 1, 1:, 1:); rlv3 =>
rlv(1:,
jl - 1, 1:)
563 dw2 =>
dw(1:, 1:, 2, 1:); dvt2 =>
dvt(1:, 1:, 2, 1:)
564 w2 =>
w(1:, 1:, 2, 1:); rlv2 =>
rlv(1:, 1:, 2)
565 w3 =>
w(1:, 1:, 3, 1:); rlv3 =>
rlv(1:, 1:, 3)
566 d2wall2 =>
d2wall(:, :, 2); rev2 =>
rev(1:, 1:, 2)
567 d2wall3 =>
d2wall(:, :, 3); rev3 =>
rev(1:, 1:, 3)
571 dw2 =>
dw(1:, 1:,
kl, 1:); dvt2 =>
dvt(1:, 1:,
kl, 1:)
572 w2 =>
w(1:, 1:,
kl, 1:); rlv2 =>
rlv(1:, 1:,
kl)
573 w3 =>
w(1:, 1:,
kl - 1, 1:); rlv3 =>
rlv(1:, 1:,
kl - 1)
594 yp = w2(i, j,
irho) * d2wall2(i - 1, j - 1) * utau / rlv2(i, j)
605 tu32 = tup(
itu3) * utau**2
606 tu42 = tup(
itu4) * utau**2 / rlv2(i, j) * w2(i, j,
irho)
610 if (
rvfn .eq. 1)
then
612 tu12 = tup(
itu1) * utau**2
613 tu22 = tup(
itu2) * utau**4 / rlv2(i, j) * w2(i, j,
irho)
615 tu52 = tup(
itu5) * rlv2(i, j)
616 dtu23 = (w3(i, j,
itu3) - tu32) &
617 / (d2wall3(i - 1, j - 1) - d2wall2(i - 1, j - 1))
618 rnu23 =
half * ((tu52 + rlv2(i, j)) / w2(i, j,
irho) + &
619 (rev3(i, j) + rlv3(i, j)) / w3(i, j,
irho))
620 tu42 = (tu22 * tu32 / tu12 - rnu23 * dtu23 &
621 / (
two * d2wall2(i - 1, j - 1))) / tu12
630 if (
rvfn .eq. 1) dvt2(i, j, 2) = (tu42 - w2(i, j,
itu4)) * 0.01
640 end if testwallfunctions
652 if ((i == 2 .and. flagi2(j, k)) .or. &
653 (i ==
il .and. flagil(j, k)) .or. &
654 (j == 2 .and. flagj2(i, k)) .or. &
655 (j ==
jl .and. flagjl(i, k)) .or. &
656 (k == 2 .and. flagk2(i, j)) .or. &
657 (k ==
kl .and. flagkl(i, j)))
then
658 qq(i, j, k, 1, 1) =
one
659 qq(i, j, k, 1, 2) =
zero
660 qq(i, j, k, 2, 1) =
zero
661 qq(i, j, k, 2, 2) =
one
689 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
690 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
692 xm =
sj(i, j - 1, k, 1) * volmi
693 ym =
sj(i, j - 1, k, 2) * volmi
694 zm =
sj(i, j - 1, k, 3) * volmi
695 xp =
sj(i, j, k, 1) * volpi
696 yp =
sj(i, j, k, 2) * volpi
697 zp =
sj(i, j, k, 3) * volpi
699 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
700 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
701 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
702 ttm = xm * xa + ym * ya + zm * za
703 ttp = xp * xa + yp * ya + zp * za
709 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
710 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
711 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
712 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
714 c1m = ttm * (mulm +
sig1 * muem) * rhoi
715 c1p = ttp * (mulp +
sig1 * muep) * rhoi
734 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
737 if (uu <
zero) um = uu
738 if (uu >
zero) up = uu
740 bb(1, j) = bb(1, j) - up
741 dd(1, j) = dd(1, j) + um
749 rblank = real(
iblank(i, j, k), realtype)
751 cc(1, 1, j) = qq(i, j, k, 1, 1)
752 cc(1, 2, j) = qq(i, j, k, 1, 2) * rblank
753 cc(2, 1, j) = qq(i, j, k, 2, 1) * rblank
754 cc(2, 2, j) = qq(i, j, k, 2, 2)
756 ff(1, j) =
dvt(i, j, k, 1) * rblank
757 ff(2, j) =
dvt(i, j, k, 2) * rblank
759 bb(:, j) = bb(:, j) * rblank
760 dd(:, j) = dd(:, j) * rblank
764 if ((i == 2 .and. flagi2(j, k)) .or. &
765 (i ==
il .and. flagil(j, k)) .or. &
766 (j == 2 .and. flagj2(i, k)) .or. &
767 (j ==
jl .and. flagjl(i, k)) .or. &
768 (k == 2 .and. flagk2(i, j)) .or. &
769 (k ==
kl .and. flagkl(i, j)))
then
780 call tdia3(2_inttype,
jl, bb, cc, dd, ff)
785 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, j) + qq(i, j, k, 1, 2) * ff(2, j)
786 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, j) + qq(i, j, k, 2, 2) * ff(2, j)
808 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
809 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
811 xm =
si(i - 1, j, k, 1) * volmi
812 ym =
si(i - 1, j, k, 2) * volmi
813 zm =
si(i - 1, j, k, 3) * volmi
814 xp =
si(i, j, k, 1) * volpi
815 yp =
si(i, j, k, 2) * volpi
816 zp =
si(i, j, k, 3) * volpi
818 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
819 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
820 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
821 ttm = xm * xa + ym * ya + zm * za
822 ttp = xp * xa + yp * ya + zp * za
828 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
829 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
830 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
831 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
833 c1m = ttm * (mulm +
sig1 * muem) * rhoi
834 c1p = ttp * (mulp +
sig1 * muep) * rhoi
853 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
856 if (uu <
zero) um = uu
857 if (uu >
zero) up = uu
859 bb(1, i) = bb(1, i) - up
860 dd(1, i) = dd(1, i) + um
868 rblank = real(
iblank(i, j, k), realtype)
870 cc(1, 1, i) = qq(i, j, k, 1, 1)
871 cc(1, 2, i) = qq(i, j, k, 1, 2) * rblank
872 cc(2, 1, i) = qq(i, j, k, 2, 1) * rblank
873 cc(2, 2, i) = qq(i, j, k, 2, 2)
875 ff(1, i) =
dvt(i, j, k, 1) * rblank
876 ff(2, i) =
dvt(i, j, k, 2) * rblank
878 bb(:, i) = bb(:, i) * rblank
879 dd(:, i) = dd(:, i) * rblank
883 if ((i == 2 .and. flagi2(j, k)) .or. &
884 (i ==
il .and. flagil(j, k)) .or. &
885 (j == 2 .and. flagj2(i, k)) .or. &
886 (j ==
jl .and. flagjl(i, k)) .or. &
887 (k == 2 .and. flagk2(i, j)) .or. &
888 (k ==
kl .and. flagkl(i, j)))
then
899 call tdia3(2_inttype,
il, bb, cc, dd, ff)
904 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, i) + qq(i, j, k, 1, 2) * ff(2, i)
905 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, i) + qq(i, j, k, 2, 2) * ff(2, i)
927 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
928 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
930 xm =
sk(i, j, k - 1, 1) * volmi
931 ym =
sk(i, j, k - 1, 2) * volmi
932 zm =
sk(i, j, k - 1, 3) * volmi
933 xp =
sk(i, j, k, 1) * volpi
934 yp =
sk(i, j, k, 2) * volpi
935 zp =
sk(i, j, k, 3) * volpi
937 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
938 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
939 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
940 ttm = xm * xa + ym * ya + zm * za
941 ttp = xp * xa + yp * ya + zp * za
947 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
948 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
949 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
950 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
952 c1m = ttm * (mulm +
sig1 * muem) * rhoi
953 c1p = ttp * (mulp +
sig1 * muep) * rhoi
972 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
975 if (uu <
zero) um = uu
976 if (uu >
zero) up = uu
978 bb(1, k) = bb(1, k) - up
979 dd(1, k) = dd(1, k) + um
987 rblank = real(
iblank(i, j, k), realtype)
989 cc(1, 1, k) = qq(i, j, k, 1, 1)
990 cc(1, 2, k) = qq(i, j, k, 1, 2) * rblank
991 cc(2, 1, k) = qq(i, j, k, 2, 1) * rblank
992 cc(2, 2, k) = qq(i, j, k, 2, 2)
994 ff(1, k) =
dvt(i, j, k, 1) * rblank
995 ff(2, k) =
dvt(i, j, k, 2) * rblank
997 bb(:, k) = bb(:, k) * rblank
998 dd(:, k) = dd(:, k) * rblank
1002 if ((i == 2 .and. flagi2(j, k)) .or. &
1003 (i ==
il .and. flagil(j, k)) .or. &
1004 (j == 2 .and. flagj2(i, k)) .or. &
1005 (j ==
jl .and. flagjl(i, k)) .or. &
1006 (k == 2 .and. flagk2(i, j)) .or. &
1007 (k ==
kl .and. flagkl(i, j)))
then
1018 call tdia3(2_inttype,
kl, bb, cc, dd, ff)
1023 dvt(i, j, k, 1) = ff(1, k)
1024 dvt(i, j, k, 2) = ff(2, k)
1060 logical,
intent(in) :: resOnly
1064 integer(kind=intType) :: i, j, k, nn
1066 real(kind=realtype) :: alp
1067 real(kind=realtype) :: rhoi, ss, spk, ff1, ff2, ff3
1068 real(kind=realtype) :: ss1, ss2, ss3
1069 real(kind=realtype) :: voli, volmi, volpi
1070 real(kind=realtype) :: xm, ym, zm, xp, yp, zp, xa, ya, za
1071 real(kind=realtype) :: ttm, ttp, mulm, mulp, muem, muep
1072 real(kind=realtype) :: c1m, c1p, c10, c2m, c2p, c20
1073 real(kind=realtype) :: b1, b2, c1, c2, d1, d2
1074 real(kind=realtype) :: qs, uu, um, up, utau
1075 real(kind=realtype) :: tke, tep, tv2, tkea, tepa, tv2a
1076 real(kind=realtype) :: tv2l, stei, sle2i
1077 real(kind=realtype) :: rnu23, tu12, tu22, tu52, prod2, dtu23
1078 real(kind=realtype) :: factor, rblank
1080 real(kind=realtype),
dimension(itu1:itu5) :: tup
1082 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, 2, 2) :: qq
1083 real(kind=realtype),
dimension(2, 2:max(il, jl, kl)) :: bb, dd, ff
1084 real(kind=realtype),
dimension(2, 2, 2:max(il, jl, kl)) :: cc
1086 real(kind=realtype),
dimension(:, :, :),
pointer :: dw2, dvt2, w2, w3
1087 real(kind=realtype),
dimension(:, :),
pointer :: rlv2, rlv3
1088 real(kind=realtype),
dimension(:, :),
pointer :: rev2, rev3
1089 real(kind=realtype),
dimension(:, :),
pointer :: d2wall2, d2wall3
1091 logical,
dimension(2:jl, 2:kl),
target :: flagI2, flagIl
1092 logical,
dimension(2:il, 2:kl),
target :: flagJ2, flagJl
1093 logical,
dimension(2:il, 2:jl),
target :: flagK2, flagKl
1095 logical,
dimension(:, :),
pointer :: flag
1121 tke =
w(i, j, k,
itu1)
1122 tep =
w(i, j, k,
itu2)
1123 tv2 =
w(i, j, k,
itu3)
1127 tv2l = max(tv2a,
rvflimitk * 0.66666_realtype)
1128 stei = tepa /
sct(i, j, k)
1129 sle2i = tepa**2 /
scl2(i, j, k)
1131 spk =
rev(i, j, k) * ss * rhoi
1132 spk = min(spk,
pklim * tepa)
1146 ss3 = alp * spk * stei
1148 dvt(i, j, k, 1) = ff1 * tke + ff2 * tep + ff3
1149 dvt(i, j, k, 2) = ss1 * tke + ss2 * tep + ss3
1156 qq(i, j, k, 1, 1) = -ff1
1157 qq(i, j, k, 1, 2) = -ff2
1158 qq(i, j, k, 2, 1) = -ss1
1159 qq(i, j, k, 2, 2) = -ss2
1181 voli =
one /
vol(i, j, k)
1182 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
1183 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
1185 xm =
sk(i, j, k - 1, 1) * volmi
1186 ym =
sk(i, j, k - 1, 2) * volmi
1187 zm =
sk(i, j, k - 1, 3) * volmi
1188 xp =
sk(i, j, k, 1) * volpi
1189 yp =
sk(i, j, k, 2) * volpi
1190 zp =
sk(i, j, k, 3) * volpi
1192 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
1193 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
1194 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
1195 ttm = xm * xa + ym * ya + zm * za
1196 ttp = xp * xa + yp * ya + zp * za
1210 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
1211 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
1212 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
1213 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
1215 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1216 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1219 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1220 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1226 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j, k - 1,
itu1) &
1227 - c10 *
w(i, j, k,
itu1) + c1p *
w(i, j, k + 1,
itu1)
1228 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j, k - 1,
itu2) &
1229 - c20 *
w(i, j, k,
itu2) + c2p *
w(i, j, k + 1,
itu2)
1248 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1250 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtk1(i, j,
itu1,
itu2)
1251 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtk1(i, j,
itu2,
itu1)
1252 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1254 else if (k ==
kl)
then
1255 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1257 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtk2(i, j,
itu1,
itu2)
1258 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtk2(i, j,
itu2,
itu1)
1259 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1262 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
1263 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
1279 voli =
one /
vol(i, j, k)
1280 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
1281 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
1283 xm =
sj(i, j - 1, k, 1) * volmi
1284 ym =
sj(i, j - 1, k, 2) * volmi
1285 zm =
sj(i, j - 1, k, 3) * volmi
1286 xp =
sj(i, j, k, 1) * volpi
1287 yp =
sj(i, j, k, 2) * volpi
1288 zp =
sj(i, j, k, 3) * volpi
1290 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
1291 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
1292 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
1293 ttm = xm * xa + ym * ya + zm * za
1294 ttp = xp * xa + yp * ya + zp * za
1308 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
1309 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
1310 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
1311 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
1313 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1314 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1317 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1318 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1324 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j - 1, k,
itu1) &
1325 - c10 *
w(i, j, k,
itu1) + c1p *
w(i, j + 1, k,
itu1)
1326 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j - 1, k,
itu2) &
1327 - c20 *
w(i, j, k,
itu2) + c2p *
w(i, j + 1, k,
itu2)
1346 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1348 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtj1(i, k,
itu1,
itu2)
1349 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtj1(i, k,
itu2,
itu1)
1350 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1352 else if (j ==
jl)
then
1353 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1355 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtj2(i, k,
itu1,
itu2)
1356 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtj2(i, k,
itu2,
itu1)
1357 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1360 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
1361 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
1377 voli =
one /
vol(i, j, k)
1378 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
1379 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
1381 xm =
si(i - 1, j, k, 1) * volmi
1382 ym =
si(i - 1, j, k, 2) * volmi
1383 zm =
si(i - 1, j, k, 3) * volmi
1384 xp =
si(i, j, k, 1) * volpi
1385 yp =
si(i, j, k, 2) * volpi
1386 zp =
si(i, j, k, 3) * volpi
1388 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
1389 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
1390 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
1391 ttm = xm * xa + ym * ya + zm * za
1392 ttp = xp * xa + yp * ya + zp * za
1406 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
1407 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
1408 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
1409 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
1411 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1412 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1415 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1416 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1422 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i - 1, j, k,
itu1) &
1423 - c10 *
w(i, j, k,
itu1) + c1p *
w(i + 1, j, k,
itu1)
1424 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i - 1, j, k,
itu2) &
1425 - c20 *
w(i, j, k,
itu2) + c2p *
w(i + 1, j, k,
itu2)
1444 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1446 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmti1(j, k,
itu1,
itu2)
1447 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmti1(j, k,
itu2,
itu1)
1448 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1450 else if (i ==
il)
then
1451 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
1453 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmti2(j, k,
itu1,
itu2)
1454 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmti2(j, k,
itu2,
itu1)
1455 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
1458 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
1459 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
1476 rblank = real(
iblank(i, j, k), realtype)
1507 dw2 =>
dw(2, 1:, 1:, 1:); dvt2 =>
dvt(2, 1:, 1:, 1:)
1508 w2 =>
w(2, 1:, 1:, 1:); rlv2 =>
rlv(2, 1:, 1:)
1509 w3 =>
w(3, 1:, 1:, 1:); rlv3 =>
rlv(3, 1:, 1:)
1510 d2wall2 =>
d2wall(2, :, :); rev2 =>
rev(2, 1:, 1:)
1511 d2wall3 =>
d2wall(3, :, :); rev3 =>
rev(3, 1:, 1:)
1515 dw2 =>
dw(
il, 1:, 1:, 1:); dvt2 =>
dvt(
il, 1:, 1:, 1:)
1516 w2 =>
w(
il, 1:, 1:, 1:); rlv2 =>
rlv(
il, 1:, 1:)
1517 w3 =>
w(
il - 1, 1:, 1:, 1:); rlv3 =>
rlv(
il - 1, 1:, 1:)
1519 d2wall3 =>
d2wall(
il - 1, :, :); rev3 =>
rev(
il - 1, 1:, 1:)
1523 dw2 =>
dw(1:, 2, 1:, 1:); dvt2 =>
dvt(1:, 2, 1:, 1:)
1524 w2 =>
w(1:, 2, 1:, 1:); rlv2 =>
rlv(1:, 2, 1:)
1525 w3 =>
w(1:, 3, 1:, 1:); rlv3 =>
rlv(1:, 3, 1:)
1526 d2wall2 =>
d2wall(:, 2, :); rev2 =>
rev(1:, 2, 1:)
1527 d2wall3 =>
d2wall(:, 3, :); rev3 =>
rev(1:, 3, 1:)
1531 dw2 =>
dw(1:,
jl, 1:, 1:); dvt2 =>
dvt(1:,
jl, 1:, 1:)
1532 w2 =>
w(1:,
jl, 1:, 1:); rlv2 =>
rlv(1:,
jl, 1:)
1533 w3 =>
w(1:,
jl - 1, 1:, 1:); rlv3 =>
rlv(1:,
jl - 1, 1:)
1535 d2wall3 =>
d2wall(:,
jl - 1, :); rev3 =>
rev(1:,
jl - 1, 1:)
1539 dw2 =>
dw(1:, 1:, 2, 1:); dvt2 =>
dvt(1:, 1:, 2, 1:)
1540 w2 =>
w(1:, 1:, 2, 1:); rlv2 =>
rlv(1:, 1:, 2)
1541 w3 =>
w(1:, 1:, 3, 1:); rlv3 =>
rlv(1:, 1:, 3)
1542 d2wall2 =>
d2wall(:, :, 2); rev2 =>
rev(1:, 1:, 2)
1543 d2wall3 =>
d2wall(:, :, 3); rev3 =>
rev(1:, 1:, 3)
1547 dw2 =>
dw(1:, 1:,
kl, 1:); dvt2 =>
dvt(1:, 1:,
kl, 1:)
1548 w2 =>
w(1:, 1:,
kl, 1:); rlv2 =>
rlv(1:, 1:,
kl)
1549 w3 =>
w(1:, 1:,
kl - 1, 1:); rlv3 =>
rlv(1:, 1:,
kl - 1)
1551 d2wall3 =>
d2wall(:, :,
kl - 1); rev3 =>
rev(1:, 1:,
kl - 1)
1570 yp = w2(i, j,
irho) * d2wall2(i - 1, j - 1) * utau / rlv2(i, j)
1581 tu12 = tup(
itu1) * utau**2
1582 tu22 = tup(
itu2) * utau**4 / rlv2(i, j) * w2(i, j,
irho)
1587 tu52 = tup(
itu5) * rlv2(i, j)
1588 dtu23 = (w3(i, j,
itu1) - tu12) &
1589 / (d2wall3(i - 1, j - 1) - d2wall2(i - 1, j - 1))
1590 rnu23 =
half * ((tu52 + rlv2(i, j)) / w2(i, j,
irho) + &
1591 (rev3(i, j) + rlv3(i, j)) / w3(i, j,
irho))
1592 prod2 = tu52 / w2(i, j,
irho) * (utau**2 * w2(i, j,
irho) &
1593 / (rlv2(i, j) + tu52))**2
1594 tu22 = prod2 + rnu23 * dtu23 / (
two * d2wall2(i - 1, j - 1))
1601 dvt2(i, j, 1) = (tu12 - w2(i, j,
itu1))
1602 dvt2(i, j, 2) = (tu22 - w2(i, j,
itu2)) * 0.01
1612 end if testwallfunctions
1636 qq(i, j, k, 1, 1) = factor * qq(i, j, k, 1, 1)
1637 qq(i, j, k, 1, 2) = factor * qq(i, j, k, 1, 2)
1638 qq(i, j, k, 2, 1) = factor * qq(i, j, k, 2, 1)
1639 qq(i, j, k, 2, 2) = factor * qq(i, j, k, 2, 2)
1643 if ((i == 2 .and. flagi2(j, k)) .or. &
1644 (i ==
il .and. flagil(j, k)) .or. &
1645 (j == 2 .and. flagj2(i, k)) .or. &
1646 (j ==
jl .and. flagjl(i, k)) .or. &
1647 (k == 2 .and. flagk2(i, j)) .or. &
1648 (k ==
kl .and. flagkl(i, j)))
then
1649 qq(i, j, k, 1, 1) =
one
1650 qq(i, j, k, 1, 2) =
zero
1651 qq(i, j, k, 2, 1) =
zero
1652 qq(i, j, k, 2, 2) =
one
1679 voli =
one /
vol(i, j, k)
1680 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
1681 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
1683 xm =
sj(i, j - 1, k, 1) * volmi
1684 ym =
sj(i, j - 1, k, 2) * volmi
1685 zm =
sj(i, j - 1, k, 3) * volmi
1686 xp =
sj(i, j, k, 1) * volpi
1687 yp =
sj(i, j, k, 2) * volpi
1688 zp =
sj(i, j, k, 3) * volpi
1690 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
1691 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
1692 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
1693 ttm = xm * xa + ym * ya + zm * za
1694 ttp = xp * xa + yp * ya + zp * za
1700 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
1701 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
1702 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
1703 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
1705 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1706 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1708 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1709 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1725 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1728 if (uu <
zero) um = uu
1729 if (uu >
zero) up = uu
1731 bb(1, j) = bb(1, j) - up
1732 dd(1, j) = dd(1, j) + um
1733 bb(2, j) = bb(2, j) - up
1734 dd(2, j) = dd(2, j) + um
1740 rblank = real(
iblank(i, j, k), realtype)
1742 cc(1, 1, j) = qq(i, j, k, 1, 1)
1743 cc(1, 2, j) = qq(i, j, k, 1, 2) * rblank
1744 cc(2, 1, j) = qq(i, j, k, 2, 1) * rblank
1745 cc(2, 2, j) = qq(i, j, k, 2, 2)
1747 ff(1, j) =
dvt(i, j, k, 1) * rblank
1748 ff(2, j) =
dvt(i, j, k, 2) * rblank
1750 bb(:, j) = bb(:, j) * rblank
1751 dd(:, j) = dd(:, j) * rblank
1755 if ((i == 2 .and. flagi2(j, k)) .or. &
1756 (i ==
il .and. flagil(j, k)) .or. &
1757 (j == 2 .and. flagj2(i, k)) .or. &
1758 (j ==
jl .and. flagjl(i, k)) .or. &
1759 (k == 2 .and. flagk2(i, j)) .or. &
1760 (k ==
kl .and. flagkl(i, j)))
then
1771 call tdia3(2_inttype,
jl, bb, cc, dd, ff)
1776 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, j) + qq(i, j, k, 1, 2) * ff(2, j)
1777 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, j) + qq(i, j, k, 2, 2) * ff(2, j)
1798 voli =
one /
vol(i, j, k)
1799 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
1800 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
1802 xm =
si(i - 1, j, k, 1) * volmi
1803 ym =
si(i - 1, j, k, 2) * volmi
1804 zm =
si(i - 1, j, k, 3) * volmi
1805 xp =
si(i, j, k, 1) * volpi
1806 yp =
si(i, j, k, 2) * volpi
1807 zp =
si(i, j, k, 3) * volpi
1809 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
1810 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
1811 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
1812 ttm = xm * xa + ym * ya + zm * za
1813 ttp = xp * xa + yp * ya + zp * za
1819 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
1820 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
1821 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
1822 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
1824 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1825 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1827 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1828 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1844 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1847 if (uu <
zero) um = uu
1848 if (uu >
zero) up = uu
1850 bb(1, i) = bb(1, i) - up
1851 dd(1, i) = dd(1, i) + um
1852 bb(2, i) = bb(2, i) - up
1853 dd(2, i) = dd(2, i) + um
1859 rblank = real(
iblank(i, j, k), realtype)
1861 cc(1, 1, i) = qq(i, j, k, 1, 1)
1862 cc(1, 2, i) = qq(i, j, k, 1, 2) * rblank
1863 cc(2, 1, i) = qq(i, j, k, 2, 1) * rblank
1864 cc(2, 2, i) = qq(i, j, k, 2, 2)
1866 ff(1, i) =
dvt(i, j, k, 1) * rblank
1867 ff(2, i) =
dvt(i, j, k, 2) * rblank
1869 bb(:, i) = bb(:, i) * rblank
1870 dd(:, i) = dd(:, i) * rblank
1874 if ((i == 2 .and. flagi2(j, k)) .or. &
1875 (i ==
il .and. flagil(j, k)) .or. &
1876 (j == 2 .and. flagj2(i, k)) .or. &
1877 (j ==
jl .and. flagjl(i, k)) .or. &
1878 (k == 2 .and. flagk2(i, j)) .or. &
1879 (k ==
kl .and. flagkl(i, j)))
then
1890 call tdia3(2_inttype,
il, bb, cc, dd, ff)
1895 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, i) + qq(i, j, k, 1, 2) * ff(2, i)
1896 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, i) + qq(i, j, k, 2, 2) * ff(2, i)
1917 voli =
one /
vol(i, j, k)
1918 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
1919 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
1921 xm =
sk(i, j, k - 1, 1) * volmi
1922 ym =
sk(i, j, k - 1, 2) * volmi
1923 zm =
sk(i, j, k - 1, 3) * volmi
1924 xp =
sk(i, j, k, 1) * volpi
1925 yp =
sk(i, j, k, 2) * volpi
1926 zp =
sk(i, j, k, 3) * volpi
1928 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
1929 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
1930 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
1931 ttm = xm * xa + ym * ya + zm * za
1932 ttp = xp * xa + yp * ya + zp * za
1938 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
1939 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
1940 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
1941 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
1943 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1944 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1946 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1947 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1963 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1966 if (uu <
zero) um = uu
1967 if (uu >
zero) up = uu
1969 bb(1, k) = bb(1, k) - up
1970 dd(1, k) = dd(1, k) + um
1971 bb(2, k) = bb(2, k) - up
1972 dd(2, k) = dd(2, k) + um
1978 rblank = real(
iblank(i, j, k), realtype)
1980 cc(1, 1, k) = qq(i, j, k, 1, 1)
1981 cc(1, 2, k) = qq(i, j, k, 1, 2) * rblank
1982 cc(2, 1, k) = qq(i, j, k, 2, 1) * rblank
1983 cc(2, 2, k) = qq(i, j, k, 2, 2)
1985 ff(1, k) =
dvt(i, j, k, 1) * rblank
1986 ff(2, k) =
dvt(i, j, k, 2) * rblank
1988 bb(:, k) = bb(:, k) * rblank
1989 dd(:, k) = dd(:, k) * rblank
1993 if ((i == 2 .and. flagi2(j, k)) .or. &
1994 (i ==
il .and. flagil(j, k)) .or. &
1995 (j == 2 .and. flagj2(i, k)) .or. &
1996 (j ==
jl .and. flagjl(i, k)) .or. &
1997 (k == 2 .and. flagk2(i, j)) .or. &
1998 (k ==
kl .and. flagkl(i, j)))
then
2009 call tdia3(2_inttype,
kl, bb, cc, dd, ff)
2014 dvt(i, j, k, 1) = ff(1, k)
2015 dvt(i, j, k, 2) = ff(2, k)
2028 w(i, j, k,
itu1) =
w(i, j, k,
itu1) + factor *
dvt(i, j, k, 1)
2029 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)