22 logical,
intent(in) :: resOnly
36 if (.not. resonly)
then
63 integer(kind=intType) :: i, j, k
64 real(kind=realtype) :: kx, ky, kz, tx, ty, tz, cd
80 kx =
w(i + 1, j, k,
itu1) *
si(i, j, k, 1) -
w(i - 1, j, k,
itu1) *
si(i - 1, j, k, 1) &
81 +
w(i, j + 1, k,
itu1) *
sj(i, j, k, 1) -
w(i, j - 1, k,
itu1) *
sj(i, j - 1, k, 1) &
82 +
w(i, j, k + 1,
itu1) *
sk(i, j, k, 1) -
w(i, j, k - 1,
itu1) *
sk(i, j, k - 1, 1)
83 ky =
w(i + 1, j, k,
itu1) *
si(i, j, k, 2) -
w(i - 1, j, k,
itu1) *
si(i - 1, j, k, 2) &
84 +
w(i, j + 1, k,
itu1) *
sj(i, j, k, 2) -
w(i, j - 1, k,
itu1) *
sj(i, j - 1, k, 2) &
85 +
w(i, j, k + 1,
itu1) *
sk(i, j, k, 2) -
w(i, j, k - 1,
itu1) *
sk(i, j, k - 1, 2)
86 kz =
w(i + 1, j, k,
itu1) *
si(i, j, k, 3) -
w(i - 1, j, k,
itu1) *
si(i - 1, j, k, 3) &
87 +
w(i, j + 1, k,
itu1) *
sj(i, j, k, 3) -
w(i, j - 1, k,
itu1) *
sj(i, j - 1, k, 3) &
88 +
w(i, j, k + 1,
itu1) *
sk(i, j, k, 3) -
w(i, j, k - 1,
itu1) *
sk(i, j, k - 1, 3)
92 tx =
w(i + 1, j, k,
itu2) *
si(i, j, k, 1) -
w(i - 1, j, k,
itu2) *
si(i - 1, j, k, 1) &
93 +
w(i, j + 1, k,
itu2) *
sj(i, j, k, 1) -
w(i, j - 1, k,
itu2) *
sj(i, j - 1, k, 1) &
94 +
w(i, j, k + 1,
itu2) *
sk(i, j, k, 1) -
w(i, j, k - 1,
itu2) *
sk(i, j, k - 1, 1)
95 ty =
w(i + 1, j, k,
itu2) *
si(i, j, k, 2) -
w(i - 1, j, k,
itu2) *
si(i - 1, j, k, 2) &
96 +
w(i, j + 1, k,
itu2) *
sj(i, j, k, 2) -
w(i, j - 1, k,
itu2) *
sj(i, j - 1, k, 2) &
97 +
w(i, j, k + 1,
itu2) *
sk(i, j, k, 2) -
w(i, j, k - 1,
itu2) *
sk(i, j, k - 1, 2)
98 tz =
w(i + 1, j, k,
itu2) *
si(i, j, k, 3) -
w(i - 1, j, k,
itu2) *
si(i - 1, j, k, 3) &
99 +
w(i, j + 1, k,
itu2) *
sj(i, j, k, 3) -
w(i, j - 1, k,
itu2) *
sj(i, j - 1, k, 3) &
100 +
w(i, j, k + 1,
itu2) *
sk(i, j, k, 3) -
w(i, j, k - 1,
itu2) *
sk(i, j, k - 1, 3)
105 cd =
fourth * (kx * tx + ky * ty + kz * tz) / (
vol(i, j, k)**2)
137 logical,
intent(in) :: resOnly
141 integer(kind=intType) :: i, j, k, nn
143 real(kind=realtype) :: rktgam1
144 real(kind=realtype) :: rhoi, ss, spk, sdk, tau, tau2, cd
145 real(kind=realtype) :: voli, volmi, volpi
146 real(kind=realtype) :: xm, ym, zm, xp, yp, zp, xa, ya, za
147 real(kind=realtype) :: ttm, ttp, mulm, mulp, muem, muep
148 real(kind=realtype) :: c1m, c1p, c10, c2m, c2p, c20
149 real(kind=realtype) :: nui, voli2, sp2, sm2, spm
150 real(kind=realtype) :: taup, taum, gp, gm
151 real(kind=realtype) :: b1, b2, c1, c2, d1, d2
152 real(kind=realtype) :: qs, uu, um, up, factor, utau, rblank
154 real(kind=realtype),
dimension(itu1:itu2) :: tup
156 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, 2, 2) :: qq
157 real(kind=realtype),
dimension(2, 2:max(il, jl, kl)) :: bb, dd, ff
158 real(kind=realtype),
dimension(2, 2, 2:max(il, jl, kl)) :: cc
160 real(kind=realtype),
dimension(:, :, :),
pointer :: ddw, ww, ddvt
161 real(kind=realtype),
dimension(:, :),
pointer :: rrlv
162 real(kind=realtype),
dimension(:, :),
pointer :: dd2wall
164 logical,
dimension(2:jl, 2:kl),
target :: flagI2, flagIl
165 logical,
dimension(2:il, 2:kl),
target :: flagJ2, flagJl
166 logical,
dimension(2:il, 2:jl),
target :: flagK2, flagKl
168 logical,
dimension(:, :),
pointer :: flag
216 tau =
w(i, j, k,
itu2)
220 spk =
rev(i, j, k) * ss * rhoi
222 spk = min(spk,
pklim * sdk)
224 dvt(i, j, k, 1) = spk - sdk
225 dvt(i, j, k, 2) =
rktbeta1 - rktgam1 * ss * tau2 + cd * tau
235 qq(i, j, k, 1, 2) =
zero
236 qq(i, j, k, 2, 1) =
zero
237 qq(i, j, k, 2, 2) =
two * rktgam1 * ss * tau - cd
260 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
261 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
263 xm =
sk(i, j, k - 1, 1) * volmi
264 ym =
sk(i, j, k - 1, 2) * volmi
265 zm =
sk(i, j, k - 1, 3) * volmi
266 xp =
sk(i, j, k, 1) * volpi
267 yp =
sk(i, j, k, 2) * volpi
268 zp =
sk(i, j, k, 3) * volpi
270 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
271 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
272 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
273 ttm = xm * xa + ym * ya + zm * za
274 ttp = xp * xa + yp * ya + zp * za
288 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
289 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
290 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
291 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
293 c1m = ttm * (mulm +
sig1 * muem) * rhoi
294 c1p = ttp * (mulp +
sig1 * muep) * rhoi
297 c2m = ttm * (mulm +
sig2 * muem) * rhoi
298 c2p = ttp * (mulp +
sig2 * muep) * rhoi
312 sp2 = voli2 * (
sk(i, j, k, 1)**2 +
sk(i, j, k, 2)**2 &
314 sm2 = voli2 * (
sk(i, j, k - 1, 1)**2 +
sk(i, j, k - 1, 2)**2 &
315 +
sk(i, j, k - 1, 3)**2)
316 spm = voli2 * (
sk(i, j, k, 1) *
sk(i, j, k - 1, 1) &
317 +
sk(i, j, k, 2) *
sk(i, j, k - 1, 2) &
318 +
sk(i, j, k, 3) *
sk(i, j, k - 1, 3))
322 gp = sqrt(max(
zero, taup))
323 gm = sqrt(max(
zero, taum))
334 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j, k - 1,
itu1) &
335 - c10 *
w(i, j, k,
itu1) + c1p *
w(i, j, k + 1,
itu1)
336 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j, k - 1,
itu2) &
337 - c20 *
w(i, j, k,
itu2) + c2p *
w(i, j, k + 1,
itu2) &
338 - nui * (taup * sp2 + taum * sm2 -
two * gp * gm * spm)
344 b2 = -c2m +
half * nui * (sp2 - spm)
345 c2 = c20 +
half * nui * (sp2 + sm2 -
two * spm)
346 d2 = -c2p +
half * nui * (sm2 - spm)
357 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
359 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtk1(i, j,
itu1,
itu2)
360 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtk1(i, j,
itu2,
itu1)
361 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
363 else if (k ==
kl)
then
364 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
366 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtk2(i, j,
itu1,
itu2)
367 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtk2(i, j,
itu2,
itu1)
368 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
371 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
372 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
389 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
390 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
392 xm =
sj(i, j - 1, k, 1) * volmi
393 ym =
sj(i, j - 1, k, 2) * volmi
394 zm =
sj(i, j - 1, k, 3) * volmi
395 xp =
sj(i, j, k, 1) * volpi
396 yp =
sj(i, j, k, 2) * volpi
397 zp =
sj(i, j, k, 3) * volpi
399 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
400 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
401 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
402 ttm = xm * xa + ym * ya + zm * za
403 ttp = xp * xa + yp * ya + zp * za
417 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
418 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
419 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
420 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
422 c1m = ttm * (mulm +
sig1 * muem) * rhoi
423 c1p = ttp * (mulp +
sig1 * muep) * rhoi
426 c2m = ttm * (mulm +
sig2 * muem) * rhoi
427 c2p = ttp * (mulp +
sig2 * muep) * rhoi
441 sp2 = voli2 * (
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 &
443 sm2 = voli2 * (
sj(i, j - 1, k, 1)**2 +
sj(i, j - 1, k, 2)**2 &
444 +
sj(i, j - 1, k, 3)**2)
445 spm = voli2 * (
sj(i, j, k, 1) *
sj(i, j - 1, k, 1) &
446 +
sj(i, j, k, 2) *
sj(i, j - 1, k, 2) &
447 +
sj(i, j, k, 3) *
sj(i, j - 1, k, 3))
451 gp = sqrt(max(
zero, taup))
452 gm = sqrt(max(
zero, taum))
463 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i, j - 1, k,
itu1) &
464 - c10 *
w(i, j, k,
itu1) + c1p *
w(i, j + 1, k,
itu1)
465 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i, j - 1, k,
itu2) &
466 - c20 *
w(i, j, k,
itu2) + c2p *
w(i, j + 1, k,
itu2) &
467 - nui * (taup * sp2 + taum * sm2 -
two * gp * gm * spm)
473 b2 = -c2m +
half * nui * (sp2 - spm)
474 c2 = c20 +
half * nui * (sp2 + sm2 -
two * spm)
475 d2 = -c2p +
half * nui * (sm2 - spm)
486 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
488 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmtj1(i, k,
itu1,
itu2)
489 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmtj1(i, k,
itu2,
itu1)
490 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
492 else if (j ==
jl)
then
493 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
495 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmtj2(i, k,
itu1,
itu2)
496 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmtj2(i, k,
itu2,
itu1)
497 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
500 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
501 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
518 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
519 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
521 xm =
si(i - 1, j, k, 1) * volmi
522 ym =
si(i - 1, j, k, 2) * volmi
523 zm =
si(i - 1, j, k, 3) * volmi
524 xp =
si(i, j, k, 1) * volpi
525 yp =
si(i, j, k, 2) * volpi
526 zp =
si(i, j, k, 3) * volpi
528 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
529 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
530 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
531 ttm = xm * xa + ym * ya + zm * za
532 ttp = xp * xa + yp * ya + zp * za
546 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
547 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
548 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
549 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
551 c1m = ttm * (mulm +
sig1 * muem) * rhoi
552 c1p = ttp * (mulp +
sig1 * muep) * rhoi
555 c2m = ttm * (mulm +
sig2 * muem) * rhoi
556 c2p = ttp * (mulp +
sig2 * muep) * rhoi
570 sp2 = voli2 * (
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 &
572 sm2 = voli2 * (
si(i - 1, j, k, 1)**2 +
si(i - 1, j, k, 2)**2 &
573 +
si(i - 1, j, k, 3)**2)
574 spm = voli2 * (
si(i, j, k, 1) *
si(i - 1, j, k, 1) &
575 +
si(i, j, k, 2) *
si(i - 1, j, k, 2) &
576 +
si(i, j, k, 3) *
si(i - 1, j, k, 3))
580 gp = sqrt(max(
zero, taup))
581 gm = sqrt(max(
zero, taum))
592 dvt(i, j, k, 1) =
dvt(i, j, k, 1) + c1m *
w(i - 1, j, k,
itu1) &
593 - c10 *
w(i, j, k,
itu1) + c1p *
w(i + 1, j, k,
itu1)
594 dvt(i, j, k, 2) =
dvt(i, j, k, 2) + c2m *
w(i - 1, j, k,
itu2) &
595 - c20 *
w(i, j, k,
itu2) + c2p *
w(i + 1, j, k,
itu2) &
596 - nui * (taup * sp2 + taum * sm2 -
two * gp * gm * spm)
602 b2 = -c2m +
half * nui * (sp2 - spm)
603 c2 = c20 +
half * nui * (sp2 + sm2 -
two * spm)
604 d2 = -c2p +
half * nui * (sm2 - spm)
615 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
617 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - b1 *
bmti1(j, k,
itu1,
itu2)
618 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - b2 *
bmti1(j, k,
itu2,
itu1)
619 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
621 else if (i ==
il)
then
622 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1 &
624 qq(i, j, k, 1, 2) = qq(i, j, k, 1, 2) - d1 *
bmti2(j, k,
itu1,
itu2)
625 qq(i, j, k, 2, 1) = qq(i, j, k, 2, 1) - d2 *
bmti2(j, k,
itu2,
itu1)
626 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2 &
629 qq(i, j, k, 1, 1) = qq(i, j, k, 1, 1) + c1
630 qq(i, j, k, 2, 2) = qq(i, j, k, 2, 2) + c2
647 rblank = real(
iblank(i, j, k), realtype)
678 ddw =>
dw(2, 1:, 1:, 1:); ddvt =>
dvt(2, 1:, 1:, 1:)
679 ww =>
w(2, 1:, 1:, 1:); rrlv =>
rlv(2, 1:, 1:)
680 dd2wall =>
d2wall(2, :, :)
684 ddw =>
dw(
il, 1:, 1:, 1:); ddvt =>
dvt(
il, 1:, 1:, 1:)
685 ww =>
w(
il, 1:, 1:, 1:); rrlv =>
rlv(
il, 1:, 1:)
690 ddw =>
dw(1:, 2, 1:, 1:); ddvt =>
dvt(1:, 2, 1:, 1:)
691 ww =>
w(1:, 2, 1:, 1:); rrlv =>
rlv(1:, 2, 1:)
692 dd2wall =>
d2wall(:, 2, :)
696 ddw =>
dw(1:,
jl, 1:, 1:); ddvt =>
dvt(1:,
jl, 1:, 1:)
697 ww =>
w(1:,
jl, 1:, 1:); rrlv =>
rlv(1:,
jl, 1:)
702 ddw =>
dw(1:, 1:, 2, 1:); ddvt =>
dvt(1:, 1:, 2, 1:)
703 ww =>
w(1:, 1:, 2, 1:); rrlv =>
rlv(1:, 1:, 2)
704 dd2wall =>
d2wall(:, :, 2)
708 ddw =>
dw(1:, 1:,
kl, 1:); ddvt =>
dvt(1:, 1:,
kl, 1:)
709 ww =>
w(1:, 1:,
kl, 1:); rrlv =>
rlv(1:, 1:,
kl)
734 yp = ww(i, j,
irho) * dd2wall(i - 1, j - 1) * utau / rrlv(i, j)
739 tup(
itu2) = tup(
itu2) * rrlv(i, j) / (ww(i, j,
irho) * utau**2)
741 ddvt(i, j, 1) = tup(
itu1) - ww(i, j,
itu1)
742 ddvt(i, j, 2) = tup(
itu2) - ww(i, j,
itu2)
752 end if testwallfunctions
775 qq(i, j, k, 1, 1) = factor * qq(i, j, k, 1, 1)
776 qq(i, j, k, 1, 2) = factor * qq(i, j, k, 1, 2)
777 qq(i, j, k, 2, 1) = factor * qq(i, j, k, 2, 1)
778 qq(i, j, k, 2, 2) = factor * qq(i, j, k, 2, 2)
782 if ((i == 2 .and. flagi2(j, k)) .or. &
783 (i ==
il .and. flagil(j, k)) .or. &
784 (j == 2 .and. flagj2(i, k)) .or. &
785 (j ==
jl .and. flagjl(i, k)) .or. &
786 (k == 2 .and. flagk2(i, j)) .or. &
787 (k ==
kl .and. flagkl(i, j)))
then
788 qq(i, j, k, 1, 1) =
one
789 qq(i, j, k, 2, 2) =
one
790 qq(i, j, k, 1, 2) =
zero
791 qq(i, j, k, 2, 1) =
zero
819 volmi =
two / (
vol(i, j, k) +
vol(i, j - 1, k))
820 volpi =
two / (
vol(i, j, k) +
vol(i, j + 1, k))
822 xm =
sj(i, j - 1, k, 1) * volmi
823 ym =
sj(i, j - 1, k, 2) * volmi
824 zm =
sj(i, j - 1, k, 3) * volmi
825 xp =
sj(i, j, k, 1) * volpi
826 yp =
sj(i, j, k, 2) * volpi
827 zp =
sj(i, j, k, 3) * volpi
829 xa =
half * (
sj(i, j, k, 1) +
sj(i, j - 1, k, 1)) * voli
830 ya =
half * (
sj(i, j, k, 2) +
sj(i, j - 1, k, 2)) * voli
831 za =
half * (
sj(i, j, k, 3) +
sj(i, j - 1, k, 3)) * voli
832 ttm = xm * xa + ym * ya + zm * za
833 ttp = xp * xa + yp * ya + zp * za
839 mulm =
half * (
rlv(i, j - 1, k) +
rlv(i, j, k))
840 mulp =
half * (
rlv(i, j + 1, k) +
rlv(i, j, k))
841 muem =
half * (
rev(i, j - 1, k) +
rev(i, j, k))
842 muep =
half * (
rev(i, j + 1, k) +
rev(i, j, k))
844 c1m = ttm * (mulm +
sig1 * muem) * rhoi
845 c1p = ttp * (mulp +
sig1 * muep) * rhoi
847 c2m = ttm * (mulm +
sig2 * muem) * rhoi
848 c2p = ttp * (mulp +
sig2 * muep) * rhoi
855 sp2 = voli2 * (
sj(i, j, k, 1)**2 +
sj(i, j, k, 2)**2 &
857 sm2 = voli2 * (
sj(i, j - 1, k, 1)**2 +
sj(i, j - 1, k, 2)**2 &
858 +
sj(i, j - 1, k, 3)**2)
859 spm = voli2 * (
sj(i, j, k, 1) *
sj(i, j - 1, k, 1) &
860 +
sj(i, j, k, 2) *
sj(i, j - 1, k, 2) &
861 +
sj(i, j, k, 3) *
sj(i, j - 1, k, 3))
867 bb(2, j) = -c2m +
half * nui * (sp2 - spm)
868 dd(2, j) = -c2p +
half * nui * (sm2 - spm)
879 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
882 if (uu <
zero) um = uu
883 if (uu >
zero) up = uu
885 bb(1, j) = bb(1, j) - up
886 dd(1, j) = dd(1, j) + um
887 bb(2, j) = bb(2, j) - up
888 dd(2, j) = dd(2, j) + um
894 rblank = real(
iblank(i, j, k), realtype)
896 cc(1, 1, j) = qq(i, j, k, 1, 1)
897 cc(1, 2, j) = qq(i, j, k, 1, 2) * rblank
898 cc(2, 1, j) = qq(i, j, k, 2, 1) * rblank
899 cc(2, 2, j) = qq(i, j, k, 2, 2)
901 ff(1, j) =
dvt(i, j, k, 1) * rblank
902 ff(2, j) =
dvt(i, j, k, 2) * rblank
904 bb(:, j) = bb(:, j) * rblank
905 dd(:, j) = dd(:, j) * rblank
909 if ((i == 2 .and. flagi2(j, k)) .or. &
910 (i ==
il .and. flagil(j, k)) .or. &
911 (j == 2 .and. flagj2(i, k)) .or. &
912 (j ==
jl .and. flagjl(i, k)) .or. &
913 (k == 2 .and. flagk2(i, j)) .or. &
914 (k ==
kl .and. flagkl(i, j)))
then
925 call tdia3(2_inttype,
jl, bb, cc, dd, ff)
930 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, j) + qq(i, j, k, 1, 2) * ff(2, j)
931 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, j) + qq(i, j, k, 2, 2) * ff(2, j)
953 volmi =
two / (
vol(i, j, k) +
vol(i - 1, j, k))
954 volpi =
two / (
vol(i, j, k) +
vol(i + 1, j, k))
956 xm =
si(i - 1, j, k, 1) * volmi
957 ym =
si(i - 1, j, k, 2) * volmi
958 zm =
si(i - 1, j, k, 3) * volmi
959 xp =
si(i, j, k, 1) * volpi
960 yp =
si(i, j, k, 2) * volpi
961 zp =
si(i, j, k, 3) * volpi
963 xa =
half * (
si(i, j, k, 1) +
si(i - 1, j, k, 1)) * voli
964 ya =
half * (
si(i, j, k, 2) +
si(i - 1, j, k, 2)) * voli
965 za =
half * (
si(i, j, k, 3) +
si(i - 1, j, k, 3)) * voli
966 ttm = xm * xa + ym * ya + zm * za
967 ttp = xp * xa + yp * ya + zp * za
973 mulm =
half * (
rlv(i - 1, j, k) +
rlv(i, j, k))
974 mulp =
half * (
rlv(i + 1, j, k) +
rlv(i, j, k))
975 muem =
half * (
rev(i - 1, j, k) +
rev(i, j, k))
976 muep =
half * (
rev(i + 1, j, k) +
rev(i, j, k))
978 c1m = ttm * (mulm +
sig1 * muem) * rhoi
979 c1p = ttp * (mulp +
sig1 * muep) * rhoi
981 c2m = ttm * (mulm +
sig2 * muem) * rhoi
982 c2p = ttp * (mulp +
sig2 * muep) * rhoi
989 sp2 = voli2 * (
si(i, j, k, 1)**2 +
si(i, j, k, 2)**2 &
991 sm2 = voli2 * (
si(i - 1, j, k, 1)**2 +
si(i - 1, j, k, 2)**2 &
992 +
si(i - 1, j, k, 3)**2)
993 spm = voli2 * (
si(i, j, k, 1) *
si(i - 1, j, k, 1) &
994 +
si(i, j, k, 2) *
si(i - 1, j, k, 2) &
995 +
si(i, j, k, 3) *
si(i - 1, j, k, 3))
1001 bb(2, i) = -c2m +
half * nui * (sp2 - spm)
1002 dd(2, i) = -c2p +
half * nui * (sm2 - spm)
1013 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1016 if (uu <
zero) um = uu
1017 if (uu >
zero) up = uu
1019 bb(1, i) = bb(1, i) - up
1020 dd(1, i) = dd(1, i) + um
1021 bb(2, i) = bb(2, i) - up
1022 dd(2, i) = dd(2, i) + um
1028 rblank = real(
iblank(i, j, k), realtype)
1030 cc(1, 1, i) = qq(i, j, k, 1, 1)
1031 cc(1, 2, i) = qq(i, j, k, 1, 2) * rblank
1032 cc(2, 1, i) = qq(i, j, k, 2, 1) * rblank
1033 cc(2, 2, i) = qq(i, j, k, 2, 2)
1035 ff(1, i) =
dvt(i, j, k, 1) * rblank
1036 ff(2, i) =
dvt(i, j, k, 2) * rblank
1038 bb(:, i) = bb(:, i) * rblank
1039 dd(:, i) = dd(:, i) * rblank
1043 if ((i == 2 .and. flagi2(j, k)) .or. &
1044 (i ==
il .and. flagil(j, k)) .or. &
1045 (j == 2 .and. flagj2(i, k)) .or. &
1046 (j ==
jl .and. flagjl(i, k)) .or. &
1047 (k == 2 .and. flagk2(i, j)) .or. &
1048 (k ==
kl .and. flagkl(i, j)))
then
1059 call tdia3(2_inttype,
il, bb, cc, dd, ff)
1064 dvt(i, j, k, 1) = qq(i, j, k, 1, 1) * ff(1, i) + qq(i, j, k, 1, 2) * ff(2, i)
1065 dvt(i, j, k, 2) = qq(i, j, k, 2, 1) * ff(1, i) + qq(i, j, k, 2, 2) * ff(2, i)
1086 voli =
one /
vol(i, j, k)
1087 volmi =
two / (
vol(i, j, k) +
vol(i, j, k - 1))
1088 volpi =
two / (
vol(i, j, k) +
vol(i, j, k + 1))
1090 xm =
sk(i, j, k - 1, 1) * volmi
1091 ym =
sk(i, j, k - 1, 2) * volmi
1092 zm =
sk(i, j, k - 1, 3) * volmi
1093 xp =
sk(i, j, k, 1) * volpi
1094 yp =
sk(i, j, k, 2) * volpi
1095 zp =
sk(i, j, k, 3) * volpi
1097 xa =
half * (
sk(i, j, k, 1) +
sk(i, j, k - 1, 1)) * voli
1098 ya =
half * (
sk(i, j, k, 2) +
sk(i, j, k - 1, 2)) * voli
1099 za =
half * (
sk(i, j, k, 3) +
sk(i, j, k - 1, 3)) * voli
1100 ttm = xm * xa + ym * ya + zm * za
1101 ttp = xp * xa + yp * ya + zp * za
1107 mulm =
half * (
rlv(i, j, k - 1) +
rlv(i, j, k))
1108 mulp =
half * (
rlv(i, j, k + 1) +
rlv(i, j, k))
1109 muem =
half * (
rev(i, j, k - 1) +
rev(i, j, k))
1110 muep =
half * (
rev(i, j, k + 1) +
rev(i, j, k))
1112 c1m = ttm * (mulm +
sig1 * muem) * rhoi
1113 c1p = ttp * (mulp +
sig1 * muep) * rhoi
1115 c2m = ttm * (mulm +
sig2 * muem) * rhoi
1116 c2p = ttp * (mulp +
sig2 * muep) * rhoi
1123 sp2 = voli2 * (
sk(i, j, k, 1)**2 +
sk(i, j, k, 2)**2 &
1124 +
sk(i, j, k, 3)**2)
1125 sm2 = voli2 * (
sk(i, j, k - 1, 1)**2 +
sk(i, j, k - 1, 2)**2 &
1126 +
sk(i, j, k - 1, 3)**2)
1127 spm = voli2 * (
sk(i, j, k, 1) *
sk(i, j, k - 1, 1) &
1128 +
sk(i, j, k, 2) *
sk(i, j, k - 1, 2) &
1129 +
sk(i, j, k, 3) *
sk(i, j, k - 1, 3))
1135 bb(2, k) = -c2m +
half * nui * (sp2 - spm)
1136 dd(2, k) = -c2p +
half * nui * (sm2 - spm)
1147 uu = xa *
w(i, j, k,
ivx) + ya *
w(i, j, k,
ivy) + za *
w(i, j, k,
ivz) - qs
1150 if (uu <
zero) um = uu
1151 if (uu >
zero) up = uu
1153 bb(1, k) = bb(1, k) - up
1154 dd(1, k) = dd(1, k) + um
1155 bb(2, k) = bb(2, k) - up
1156 dd(2, k) = dd(2, k) + um
1162 rblank = real(
iblank(i, j, k), realtype)
1164 cc(1, 1, k) = qq(i, j, k, 1, 1)
1165 cc(1, 2, k) = qq(i, j, k, 1, 2) * rblank
1166 cc(2, 1, k) = qq(i, j, k, 2, 1) * rblank
1167 cc(2, 2, k) = qq(i, j, k, 2, 2)
1169 ff(1, k) =
dvt(i, j, k, 1) * rblank
1170 ff(2, k) =
dvt(i, j, k, 2) * rblank
1172 bb(:, k) = bb(:, k) * rblank
1173 dd(:, k) = dd(:, k) * rblank
1177 if ((i == 2 .and. flagi2(j, k)) .or. &
1178 (i ==
il .and. flagil(j, k)) .or. &
1179 (j == 2 .and. flagj2(i, k)) .or. &
1180 (j ==
jl .and. flagjl(i, k)) .or. &
1181 (k == 2 .and. flagk2(i, j)) .or. &
1182 (k ==
kl .and. flagkl(i, j)))
then
1193 call tdia3(2_inttype,
kl, bb, cc, dd, ff)
1198 dvt(i, j, k, 1) = ff(1, k)
1199 dvt(i, j, k, 2) = ff(2, k)
1215 w(i, j, k,
itu1) =
w(i, j, k,
itu1) + factor *
dvt(i, j, k, 1)
1218 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
integer(kind=inttype), parameter strain
real(kind=realtype), parameter zero
integer(kind=inttype), parameter imax
integer(kind=inttype), parameter kmin
integer(kind=inttype), parameter jmax
integer(kind=inttype), parameter vorticity
real(kind=realtype), parameter one
real(kind=realtype), parameter half
integer(kind=inttype), parameter turbrelaximplicit
integer(kind=inttype), parameter turbrelaxexplicit
integer(kind=inttype), parameter katolaunder
integer(kind=inttype), parameter imin
real(kind=realtype), parameter two
real(kind=realtype), parameter fourth
real(kind=realtype), parameter eight
integer(kind=inttype), parameter kmax
integer(kind=inttype), parameter jmin
real(kind=realtype), dimension(:), allocatable winf
subroutine ktsolve(resOnly)
subroutine kt_block(resOnly)
real(kind=realtype), parameter rktbeta1
real(kind=realtype), parameter rktsigk1
real(kind=realtype), parameter rktsigt1
real(kind=realtype), parameter rktbetas
real(kind=realtype), parameter rktk
real(kind=realtype), parameter rktsigd1
subroutine bcturbtreatment
subroutine applyallturbbcthisblock(secondHalo)
subroutine curvetupyp(tup, yp, ntu1, ntu2)
real(kind=realtype), dimension(:, :, :), pointer vort
real(kind=realtype), dimension(:, :, :), pointer prod
real(kind=realtype), dimension(:, :, :), pointer ktcd
real(kind=realtype), dimension(:, :, :, :), pointer dvt
real(kind=realtype), dimension(:, :, :), pointer sct
subroutine unsteadyturbterm(mAdv, nAdv, offset, qq)
subroutine tdia3(nb, ne, l, c, u, r)
subroutine turbadvection(mAdv, nAdv, offset, qq)
subroutine prodkatolaunder
subroutine kteddyviscosity(iBeg, iEnd, jBeg, jEnd, kBeg, kEnd)
subroutine setpointers(nn, mm, ll)