14 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
w,
si,
sj, &
23 integer(kind=inttype) :: i, j, k, ii
24 real(kind=realtype) :: uux, uuy, uuz, vvx, vvy, vvz, wwx, wwy, wwz
25 real(kind=realtype) :: qxx, qyy, qzz, qxy, qxz, qyz, sijsij
26 real(kind=realtype) :: oxy, oxz, oyz, oijoij
27 real(kind=realtype) :: fact, omegax, omegay, omegaz
47 j = mod(ii/
nx,
ny) + 2
53 uux =
w(i+1, j, k,
ivx)*
si(i, j, k, 1) -
w(i-1, j, k,
ivx)*
si(i-1&
54 & , j, k, 1) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivx&
55 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 1) -
w(i, j, &
56 & k-1,
ivx)*
sk(i, j, k-1, 1)
57 uuy =
w(i+1, j, k,
ivx)*
si(i, j, k, 2) -
w(i-1, j, k,
ivx)*
si(i-1&
58 & , j, k, 2) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivx&
59 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 2) -
w(i, j, &
60 & k-1,
ivx)*
sk(i, j, k-1, 2)
61 uuz =
w(i+1, j, k,
ivx)*
si(i, j, k, 3) -
w(i-1, j, k,
ivx)*
si(i-1&
62 & , j, k, 3) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivx&
63 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 3) -
w(i, j, &
64 & k-1,
ivx)*
sk(i, j, k-1, 3)
66 vvx =
w(i+1, j, k,
ivy)*
si(i, j, k, 1) -
w(i-1, j, k,
ivy)*
si(i-1&
67 & , j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivy&
68 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 1) -
w(i, j, &
69 & k-1,
ivy)*
sk(i, j, k-1, 1)
70 vvy =
w(i+1, j, k,
ivy)*
si(i, j, k, 2) -
w(i-1, j, k,
ivy)*
si(i-1&
71 & , j, k, 2) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivy&
72 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 2) -
w(i, j, &
73 & k-1,
ivy)*
sk(i, j, k-1, 2)
74 vvz =
w(i+1, j, k,
ivy)*
si(i, j, k, 3) -
w(i-1, j, k,
ivy)*
si(i-1&
75 & , j, k, 3) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivy&
76 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 3) -
w(i, j, &
77 & k-1,
ivy)*
sk(i, j, k-1, 3)
79 wwx =
w(i+1, j, k,
ivz)*
si(i, j, k, 1) -
w(i-1, j, k,
ivz)*
si(i-1&
80 & , j, k, 1) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivz&
81 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 1) -
w(i, j, &
82 & k-1,
ivz)*
sk(i, j, k-1, 1)
83 wwy =
w(i+1, j, k,
ivz)*
si(i, j, k, 2) -
w(i-1, j, k,
ivz)*
si(i-1&
84 & , j, k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivz&
85 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 2) -
w(i, j, &
86 & k-1,
ivz)*
sk(i, j, k-1, 2)
87 wwz =
w(i+1, j, k,
ivz)*
si(i, j, k, 3) -
w(i-1, j, k,
ivz)*
si(i-1&
88 & , j, k, 3) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivz&
89 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 3) -
w(i, j, &
90 & k-1,
ivz)*
sk(i, j, k-1, 3)
98 qxy = fact*
half*(uuy+vvx)
99 qxz = fact*
half*(uuz+wwx)
100 qyz = fact*
half*(vvz+wwy)
101 oxy = fact*
half*(vvx-uuy) - omegaz
102 oxz = fact*
half*(uuz-wwx) - omegay
103 oyz = fact*
half*(wwy-vvz) - omegax
105 sijsij =
two*(qxy**2+qxz**2+qyz**2) + qxx**2 + qyy**2 + qzz**2
106 oijoij =
two*(oxy**2+oxz**2+oyz**2)
121 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
w,
si,
sj, &
127 real(kind=realtype),
parameter :: f23=
two*
third
131 integer(kind=inttype) :: i, j, k, ii
132 real(kind=realtype) :: uux, uuy, uuz, vvx, vvy, vvz, wwx, wwy, wwz
133 real(kind=realtype) :: div2, fact, sxx, syy, szz, sxy, sxz, syz
142 j = mod(ii/
nx,
ny) + 2
148 uux =
w(i+1, j, k,
ivx)*
si(i, j, k, 1) -
w(i-1, j, k,
ivx)*
si(i-1&
149 & , j, k, 1) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivx&
150 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 1) -
w(i, j, &
151 & k-1,
ivx)*
sk(i, j, k-1, 1)
152 uuy =
w(i+1, j, k,
ivx)*
si(i, j, k, 2) -
w(i-1, j, k,
ivx)*
si(i-1&
153 & , j, k, 2) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivx&
154 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 2) -
w(i, j, &
155 & k-1,
ivx)*
sk(i, j, k-1, 2)
156 uuz =
w(i+1, j, k,
ivx)*
si(i, j, k, 3) -
w(i-1, j, k,
ivx)*
si(i-1&
157 & , j, k, 3) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivx&
158 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 3) -
w(i, j, &
159 & k-1,
ivx)*
sk(i, j, k-1, 3)
161 vvx =
w(i+1, j, k,
ivy)*
si(i, j, k, 1) -
w(i-1, j, k,
ivy)*
si(i-1&
162 & , j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivy&
163 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 1) -
w(i, j, &
164 & k-1,
ivy)*
sk(i, j, k-1, 1)
165 vvy =
w(i+1, j, k,
ivy)*
si(i, j, k, 2) -
w(i-1, j, k,
ivy)*
si(i-1&
166 & , j, k, 2) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivy&
167 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 2) -
w(i, j, &
168 & k-1,
ivy)*
sk(i, j, k-1, 2)
169 vvz =
w(i+1, j, k,
ivy)*
si(i, j, k, 3) -
w(i-1, j, k,
ivy)*
si(i-1&
170 & , j, k, 3) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivy&
171 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 3) -
w(i, j, &
172 & k-1,
ivy)*
sk(i, j, k-1, 3)
174 wwx =
w(i+1, j, k,
ivz)*
si(i, j, k, 1) -
w(i-1, j, k,
ivz)*
si(i-1&
175 & , j, k, 1) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivz&
176 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 1) -
w(i, j, &
177 & k-1,
ivz)*
sk(i, j, k-1, 1)
178 wwy =
w(i+1, j, k,
ivz)*
si(i, j, k, 2) -
w(i-1, j, k,
ivz)*
si(i-1&
179 & , j, k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivz&
180 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 2) -
w(i, j, &
181 & k-1,
ivz)*
sk(i, j, k-1, 2)
182 wwz =
w(i+1, j, k,
ivz)*
si(i, j, k, 3) -
w(i-1, j, k,
ivz)*
si(i-1&
183 & , j, k, 3) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivz&
184 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 3) -
w(i, j, &
185 & k-1,
ivz)*
sk(i, j, k-1, 3)
198 div2 = f23*(sxx+syy+szz)**2
201 & syy**2+szz**2) - div2
214 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
w,
si,
sj, &
222 integer :: i, j, k, ii
223 real(kind=realtype) :: uuy, uuz, vvx, vvz, wwx, wwy
224 real(kind=realtype) :: fact, vortx, vorty, vortz
225 real(kind=realtype) :: omegax, omegay, omegaz
238 j = mod(ii/
nx,
ny) + 2
244 uuy =
w(i+1, j, k,
ivx)*
si(i, j, k, 2) -
w(i-1, j, k,
ivx)*
si(i-1&
245 & , j, k, 2) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivx&
246 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 2) -
w(i, j, &
247 & k-1,
ivx)*
sk(i, j, k-1, 2)
248 uuz =
w(i+1, j, k,
ivx)*
si(i, j, k, 3) -
w(i-1, j, k,
ivx)*
si(i-1&
249 & , j, k, 3) +
w(i, j+1, k,
ivx)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivx&
250 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivx)*
sk(i, j, k, 3) -
w(i, j, &
251 & k-1,
ivx)*
sk(i, j, k-1, 3)
253 vvx =
w(i+1, j, k,
ivy)*
si(i, j, k, 1) -
w(i-1, j, k,
ivy)*
si(i-1&
254 & , j, k, 1) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivy&
255 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 1) -
w(i, j, &
256 & k-1,
ivy)*
sk(i, j, k-1, 1)
257 vvz =
w(i+1, j, k,
ivy)*
si(i, j, k, 3) -
w(i-1, j, k,
ivy)*
si(i-1&
258 & , j, k, 3) +
w(i, j+1, k,
ivy)*
sj(i, j, k, 3) -
w(i, j-1, k,
ivy&
259 & )*
sj(i, j-1, k, 3) +
w(i, j, k+1,
ivy)*
sk(i, j, k, 3) -
w(i, j, &
260 & k-1,
ivy)*
sk(i, j, k-1, 3)
262 wwx =
w(i+1, j, k,
ivz)*
si(i, j, k, 1) -
w(i-1, j, k,
ivz)*
si(i-1&
263 & , j, k, 1) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 1) -
w(i, j-1, k,
ivz&
264 & )*
sj(i, j-1, k, 1) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 1) -
w(i, j, &
265 & k-1,
ivz)*
sk(i, j, k-1, 1)
266 wwy =
w(i+1, j, k,
ivz)*
si(i, j, k, 2) -
w(i-1, j, k,
ivz)*
si(i-1&
267 & , j, k, 2) +
w(i, j+1, k,
ivz)*
sj(i, j, k, 2) -
w(i, j-1, k,
ivz&
268 & )*
sj(i, j-1, k, 2) +
w(i, j, k+1,
ivz)*
sk(i, j, k, 2) -
w(i, j, &
269 & k-1,
ivz)*
sk(i, j, k-1, 2)
273 vortx = fact*(wwy-vvz) -
two*omegax
274 vorty = fact*(uuz-wwx) -
two*omegay
275 vortz = fact*(vvx-uuy) -
two*omegaz
277 scratch(i, j, k,
ivort) = vortx**2 + vorty**2 + vortz**2
296 real(kind=realtype),
intent(in) :: eddyratio, nulam
300 real(kind=realtype) :: cv13, chi, chi2, chi3, chi4, f, df, dchi
302 real(kind=realtype) :: abs0
304 if (eddyratio .le.
zero)
then
314 if (eddyratio .lt. 1.e-4_realtype)
then
316 else if (eddyratio .lt. 1.0_realtype)
then
318 else if (eddyratio .lt. 10.0_realtype)
then
329 f = chi4 - eddyratio*(chi3+cv13)
334 if (dchi/chi .ge. 0.)
then
381 integer(kind=inttype),
intent(in) :: madv, nadv, offset
382 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, madv, madv), &
383 &
intent(inout) :: qq
387 integer(kind=inttype) :: i, j, k, ii, jj, nn
388 real(kind=realtype) :: oneoverdt, tmp
406 nadvloopunsteady:
do ii=1,nadv
431 qq(i, j, k, ii, ii) = qq(i, j, k, ii, ii) +
coeftime(0)*&
436 end do nadvloopunsteady
447 nadvloopspectral:
do ii=1,nadv
467 qq(i, j, k, ii, ii) = qq(i, j, k, ii, ii) + tmp
471 end do nadvloopspectral
489 logical,
intent(in) :: includehalos
493 logical :: returnimmediately
494 integer(kind=inttype) :: ibeg, iend, jbeg, jend, kbeg, kend
498 returnimmediately = .false.
500 returnimmediately = .true.
503 returnimmediately = .true.
505 if (returnimmediately)
then
510 if (includehalos)
then
550 integer(kind=inttype) :: ibeg, iend, jbeg, jend, kbeg, kend
554 integer(kind=inttype) :: i, j, k, ii, isize, jsize, ksize
555 real(kind=realtype) :: chi, chi3, fv1, rnusa, cv13
556 real(kind=realtype) :: chid, chi3d, fv1d, rnusad
558 real(kind=realtype) :: tempd
563 isize = iend - ibeg + 1
564 jsize = jend - jbeg + 1
565 ksize = kend - kbeg + 1
567 do ii=0,isize*jsize*ksize-1
568 i = mod(ii, isize) + ibeg
569 j = mod(ii/isize, jsize) + jbeg
570 k = ii/(isize*jsize) + kbeg
572 chi = rnusa/
rlv(i, j, k)
574 fv1 = chi3/(chi3+cv13)
575 fv1d = rnusa*
revd(i, j, k)
576 tempd = fv1d/(cv13+chi3)
577 chi3d = (1.0-chi3/(cv13+chi3))*tempd
578 chid = 3*chi**2*chi3d
579 tempd = chid/
rlv(i, j, k)
580 rnusad = fv1*
revd(i, j, k) + tempd
581 revd(i, j, k) = 0.0_8
582 rlvd(i, j, k) =
rlvd(i, j, k) - rnusa*tempd/
rlv(i, j, k)
601 integer(kind=inttype) :: ibeg, iend, jbeg, jend, kbeg, kend
605 integer(kind=inttype) :: i, j, k, ii, isize, jsize, ksize
606 real(kind=realtype) :: chi, chi3, fv1, rnusa, cv13
612 isize = iend - ibeg + 1
613 jsize = jend - jbeg + 1
614 ksize = kend - kbeg + 1
616 do ii=0,isize*jsize*ksize-1
617 i = mod(ii, isize) + ibeg
618 j = mod(ii/isize, jsize) + jbeg
619 k = ii/(isize*jsize) + kbeg
621 chi = rnusa/
rlv(i, j, k)
623 fv1 = chi3/(chi3+cv13)
624 rev(i, j, k) = fv1*rnusa
638 integer(kind=inttype) :: ibeg, iend, jbeg, jend, kbeg, kend
642 integer(kind=inttype) :: i, j, k, ii, isize, jsize, ksize
645 real(kind=realtype) :: x1
648 isize = iend - ibeg + 1
649 jsize = jend - jbeg + 1
650 ksize = kend - kbeg + 1
652 do ii=0,isize*jsize*ksize-1
653 i = mod(ii, isize) + ibeg
654 j = mod(ii/isize, jsize) + jbeg
655 k = ii/(isize*jsize) + kbeg
677 integer(kind=inttype) :: ibeg, iend, jbeg, jend, kbeg, kend
681 integer(kind=inttype) :: i, j, k, ii, isize, jsize, ksize
682 real(kind=realtype) :: t1, t2, arg2, f2, vortmag
687 real(kind=realtype) :: max1
695 isize = iend - ibeg + 1
696 jsize = jend - jbeg + 1
697 ksize = kend - kbeg + 1
699 do ii=0,isize*jsize*ksize-1
700 i = mod(ii, isize) + ibeg
701 j = mod(ii/isize, jsize) + jbeg
702 k = ii/(isize*jsize) + kbeg
705 t1 =
two*sqrt(
w(i, j, k,
itu1))/(0.09_realtype*
w(i, j, k,
itu2)*&
707 t2 = 500.0_realtype*
rlv(i, j, k)/(
w(i, j, k,
irho)*
w(i, j, k,
itu2&
753 & ,
sfacej,
sfacek,
w,
wd,
si,
sj,
sk,
addgridvelocities,
bmti1,
bmti2&
762 integer(kind=inttype),
intent(in) :: nadv, madv, offset
763 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, madv, madv), &
764 &
intent(inout) :: qq
768 integer(kind=inttype) :: i, j, k, ii, jj, kk, iii
769 real(kind=realtype) :: qs, voli, xa, ya, za
770 real(kind=realtype) :: uu, dwt, dwtm1, dwtp1, dwti, dwtj, dwtk
771 real(kind=realtype) :: uud, dwtd, dwtm1d, dwtp1d, dwtid, dwtjd, &
773 real(kind=realtype),
dimension(madv) :: impl
776 real(kind=realtype) :: abs0
777 real(kind=realtype) :: abs1
778 real(kind=realtype) :: abs2
779 real(kind=realtype) :: abs3
780 real(kind=realtype) :: abs4
781 real(kind=realtype) :: abs5
782 real(kind=realtype) :: abs6
783 real(kind=realtype) :: abs7
784 real(kind=realtype) :: abs8
785 real(kind=realtype) :: abs9
786 real(kind=realtype) :: abs10
787 real(kind=realtype) :: abs11
788 real(kind=realtype) :: abs12
789 real(kind=realtype) :: abs13
790 real(kind=realtype) :: abs14
791 real(kind=realtype) :: abs15
792 real(kind=realtype) :: abs16
793 real(kind=realtype) :: abs17
794 real(kind=realtype) :: abs18
795 real(kind=realtype) :: abs19
796 real(kind=realtype) :: abs20
797 real(kind=realtype) :: abs21
798 real(kind=realtype) :: abs22
799 real(kind=realtype) :: abs23
810 j = mod(iii/
nx,
ny) + 2
819 xa = (
si(i, j, k, 1)+
si(i-1, j, k, 1))*voli
820 ya = (
si(i, j, k, 2)+
si(i-1, j, k, 2))*voli
821 za = (
si(i, j, k, 3)+
si(i-1, j, k, 3))*voli
822 uu = xa*
w(i, j, k,
ivx) + ya*
w(i, j, k,
ivy) + za*
w(i, j, k,
ivz) &
826 if (uu .gt.
zero)
then
838 dwtm1 =
w(i-1, j, k, jj) -
w(i-2, j, k, jj)
839 dwt =
w(i, j, k, jj) -
w(i-1, j, k, jj)
840 dwtp1 =
w(i+1, j, k, jj) -
w(i, j, k, jj)
845 if (dwt*dwtp1 .gt.
zero)
then
846 if (dwt .ge. 0.)
then
851 if (dwtp1 .ge. 0.)
then
856 if (abs8 .lt. abs20)
then
857 dwti = dwti +
half*dwt
858 call pushcontrol2b(0)
860 dwti = dwti +
half*dwtp1
861 call pushcontrol2b(1)
864 call pushcontrol2b(2)
866 if (dwt*dwtm1 .gt.
zero)
then
867 if (dwt .ge. 0.)
then
872 if (dwtm1 .ge. 0.)
then
877 if (abs9 .lt. abs21)
then
878 dwti = dwti -
half*dwt
879 call pushcontrol2b(0)
881 dwti = dwti -
half*dwtm1
882 call pushcontrol2b(1)
885 call pushcontrol2b(2)
889 dwti =
w(i, j, k, jj) -
w(i-1, j, k, jj)
890 call pushcontrol2b(3)
894 call popcontrol2b(branch)
895 if (branch .lt. 2)
then
896 if (branch .eq. 0)
then
900 dwtm1d = -(
half*dwtid)
903 else if (branch .eq. 2)
then
907 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtid
908 wd(i-1, j, k, jj) =
wd(i-1, j, k, jj) - dwtid
911 call popcontrol2b(branch)
912 if (branch .eq. 0)
then
913 dwtd = dwtd +
half*dwtid
915 else if (branch .eq. 1)
then
921 wd(i+1, j, k, jj) =
wd(i+1, j, k, jj) + dwtp1d
922 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtd - dwtp1d
923 wd(i-1, j, k, jj) =
wd(i-1, j, k, jj) + dwtm1d - dwtd
924 wd(i-2, j, k, jj) =
wd(i-2, j, k, jj) - dwtm1d
938 dwtm1 =
w(i, j, k, jj) -
w(i-1, j, k, jj)
939 dwt =
w(i+1, j, k, jj) -
w(i, j, k, jj)
940 dwtp1 =
w(i+2, j, k, jj) -
w(i+1, j, k, jj)
945 if (dwt*dwtp1 .gt.
zero)
then
946 if (dwt .ge. 0.)
then
951 if (dwtp1 .ge. 0.)
then
956 if (abs10 .lt. abs22)
then
957 dwti = dwti -
half*dwt
958 call pushcontrol2b(0)
960 dwti = dwti -
half*dwtp1
961 call pushcontrol2b(1)
964 call pushcontrol2b(2)
966 if (dwt*dwtm1 .gt.
zero)
then
967 if (dwt .ge. 0.)
then
972 if (dwtm1 .ge. 0.)
then
977 if (abs11 .lt. abs23)
then
978 dwti = dwti +
half*dwt
979 call pushcontrol2b(0)
981 dwti = dwti +
half*dwtm1
982 call pushcontrol2b(1)
985 call pushcontrol2b(2)
989 dwti =
w(i+1, j, k, jj) -
w(i, j, k, jj)
990 call pushcontrol2b(3)
994 call popcontrol2b(branch)
995 if (branch .lt. 2)
then
996 if (branch .eq. 0)
then
1003 else if (branch .eq. 2)
then
1007 wd(i+1, j, k, jj) =
wd(i+1, j, k, jj) + dwtid
1008 wd(i, j, k, jj) =
wd(i, j, k, jj) - dwtid
1011 call popcontrol2b(branch)
1012 if (branch .eq. 0)
then
1013 dwtd = dwtd -
half*dwtid
1015 else if (branch .eq. 1)
then
1016 dwtp1d = -(
half*dwtid)
1021 wd(i+2, j, k, jj) =
wd(i+2, j, k, jj) + dwtp1d
1022 wd(i+1, j, k, jj) =
wd(i+1, j, k, jj) + dwtd - dwtp1d
1023 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtm1d - dwtd
1024 wd(i-1, j, k, jj) =
wd(i-1, j, k, jj) - dwtm1d
1034 i = mod(iii,
nx) + 2
1035 j = mod(iii/
nx,
ny) + 2
1044 xa = (
sj(i, j, k, 1)+
sj(i, j-1, k, 1))*voli
1045 ya = (
sj(i, j, k, 2)+
sj(i, j-1, k, 2))*voli
1046 za = (
sj(i, j, k, 3)+
sj(i, j-1, k, 3))*voli
1047 uu = xa*
w(i, j, k,
ivx) + ya*
w(i, j, k,
ivy) + za*
w(i, j, k,
ivz) &
1051 if (uu .gt.
zero)
then
1063 dwtm1 =
w(i, j-1, k, jj) -
w(i, j-2, k, jj)
1064 dwt =
w(i, j, k, jj) -
w(i, j-1, k, jj)
1065 dwtp1 =
w(i, j+1, k, jj) -
w(i, j, k, jj)
1070 if (dwt*dwtp1 .gt.
zero)
then
1071 if (dwt .ge. 0.)
then
1076 if (dwtp1 .ge. 0.)
then
1081 if (abs4 .lt. abs16)
then
1082 dwtj = dwtj +
half*dwt
1083 call pushcontrol2b(0)
1085 dwtj = dwtj +
half*dwtp1
1086 call pushcontrol2b(1)
1089 call pushcontrol2b(2)
1091 if (dwt*dwtm1 .gt.
zero)
then
1092 if (dwt .ge. 0.)
then
1097 if (dwtm1 .ge. 0.)
then
1102 if (abs5 .lt. abs17)
then
1103 dwtj = dwtj -
half*dwt
1104 call pushcontrol2b(0)
1106 dwtj = dwtj -
half*dwtm1
1107 call pushcontrol2b(1)
1110 call pushcontrol2b(2)
1114 dwtj =
w(i, j, k, jj) -
w(i, j-1, k, jj)
1115 call pushcontrol2b(3)
1119 call popcontrol2b(branch)
1120 if (branch .lt. 2)
then
1121 if (branch .eq. 0)
then
1122 dwtd = -(
half*dwtjd)
1125 dwtm1d = -(
half*dwtjd)
1128 else if (branch .eq. 2)
then
1132 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtjd
1133 wd(i, j-1, k, jj) =
wd(i, j-1, k, jj) - dwtjd
1136 call popcontrol2b(branch)
1137 if (branch .eq. 0)
then
1138 dwtd = dwtd +
half*dwtjd
1140 else if (branch .eq. 1)
then
1146 wd(i, j+1, k, jj) =
wd(i, j+1, k, jj) + dwtp1d
1147 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtd - dwtp1d
1148 wd(i, j-1, k, jj) =
wd(i, j-1, k, jj) + dwtm1d - dwtd
1149 wd(i, j-2, k, jj) =
wd(i, j-2, k, jj) - dwtm1d
1163 dwtm1 =
w(i, j, k, jj) -
w(i, j-1, k, jj)
1164 dwt =
w(i, j+1, k, jj) -
w(i, j, k, jj)
1165 dwtp1 =
w(i, j+2, k, jj) -
w(i, j+1, k, jj)
1170 if (dwt*dwtp1 .gt.
zero)
then
1171 if (dwt .ge. 0.)
then
1176 if (dwtp1 .ge. 0.)
then
1181 if (abs6 .lt. abs18)
then
1182 dwtj = dwtj -
half*dwt
1183 call pushcontrol2b(0)
1185 dwtj = dwtj -
half*dwtp1
1186 call pushcontrol2b(1)
1189 call pushcontrol2b(2)
1191 if (dwt*dwtm1 .gt.
zero)
then
1192 if (dwt .ge. 0.)
then
1197 if (dwtm1 .ge. 0.)
then
1202 if (abs7 .lt. abs19)
then
1203 dwtj = dwtj +
half*dwt
1204 call pushcontrol2b(0)
1206 dwtj = dwtj +
half*dwtm1
1207 call pushcontrol2b(1)
1210 call pushcontrol2b(2)
1214 dwtj =
w(i, j+1, k, jj) -
w(i, j, k, jj)
1215 call pushcontrol2b(3)
1219 call popcontrol2b(branch)
1220 if (branch .lt. 2)
then
1221 if (branch .eq. 0)
then
1228 else if (branch .eq. 2)
then
1232 wd(i, j+1, k, jj) =
wd(i, j+1, k, jj) + dwtjd
1233 wd(i, j, k, jj) =
wd(i, j, k, jj) - dwtjd
1236 call popcontrol2b(branch)
1237 if (branch .eq. 0)
then
1238 dwtd = dwtd -
half*dwtjd
1240 else if (branch .eq. 1)
then
1241 dwtp1d = -(
half*dwtjd)
1246 wd(i, j+2, k, jj) =
wd(i, j+2, k, jj) + dwtp1d
1247 wd(i, j+1, k, jj) =
wd(i, j+1, k, jj) + dwtd - dwtp1d
1248 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtm1d - dwtd
1249 wd(i, j-1, k, jj) =
wd(i, j-1, k, jj) - dwtm1d
1261 i = mod(iii,
nx) + 2
1262 j = mod(iii/
nx,
ny) + 2
1271 xa = (
sk(i, j, k, 1)+
sk(i, j, k-1, 1))*voli
1272 ya = (
sk(i, j, k, 2)+
sk(i, j, k-1, 2))*voli
1273 za = (
sk(i, j, k, 3)+
sk(i, j, k-1, 3))*voli
1274 uu = xa*
w(i, j, k,
ivx) + ya*
w(i, j, k,
ivy) + za*
w(i, j, k,
ivz) &
1279 if (uu .gt.
zero)
then
1291 dwtm1 =
w(i, j, k-1, jj) -
w(i, j, k-2, jj)
1292 dwt =
w(i, j, k, jj) -
w(i, j, k-1, jj)
1293 dwtp1 =
w(i, j, k+1, jj) -
w(i, j, k, jj)
1298 if (dwt*dwtp1 .gt.
zero)
then
1299 if (dwt .ge. 0.)
then
1304 if (dwtp1 .ge. 0.)
then
1309 if (abs0 .lt. abs12)
then
1310 dwtk = dwtk +
half*dwt
1311 call pushcontrol2b(0)
1313 dwtk = dwtk +
half*dwtp1
1314 call pushcontrol2b(1)
1317 call pushcontrol2b(2)
1319 if (dwt*dwtm1 .gt.
zero)
then
1320 if (dwt .ge. 0.)
then
1325 if (dwtm1 .ge. 0.)
then
1330 if (abs1 .lt. abs13)
then
1331 dwtk = dwtk -
half*dwt
1332 call pushcontrol2b(0)
1334 dwtk = dwtk -
half*dwtm1
1335 call pushcontrol2b(1)
1338 call pushcontrol2b(2)
1342 dwtk =
w(i, j, k, jj) -
w(i, j, k-1, jj)
1343 call pushcontrol2b(3)
1347 call popcontrol2b(branch)
1348 if (branch .lt. 2)
then
1349 if (branch .eq. 0)
then
1350 dwtd = -(
half*dwtkd)
1353 dwtm1d = -(
half*dwtkd)
1356 else if (branch .eq. 2)
then
1360 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtkd
1361 wd(i, j, k-1, jj) =
wd(i, j, k-1, jj) - dwtkd
1364 call popcontrol2b(branch)
1365 if (branch .eq. 0)
then
1366 dwtd = dwtd +
half*dwtkd
1368 else if (branch .eq. 1)
then
1374 wd(i, j, k+1, jj) =
wd(i, j, k+1, jj) + dwtp1d
1375 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtd - dwtp1d
1376 wd(i, j, k-1, jj) =
wd(i, j, k-1, jj) + dwtm1d - dwtd
1377 wd(i, j, k-2, jj) =
wd(i, j, k-2, jj) - dwtm1d
1391 dwtm1 =
w(i, j, k, jj) -
w(i, j, k-1, jj)
1392 dwt =
w(i, j, k+1, jj) -
w(i, j, k, jj)
1393 dwtp1 =
w(i, j, k+2, jj) -
w(i, j, k+1, jj)
1398 if (dwt*dwtp1 .gt.
zero)
then
1399 if (dwt .ge. 0.)
then
1404 if (dwtp1 .ge. 0.)
then
1409 if (abs2 .lt. abs14)
then
1410 dwtk = dwtk -
half*dwt
1411 call pushcontrol2b(0)
1413 dwtk = dwtk -
half*dwtp1
1414 call pushcontrol2b(1)
1417 call pushcontrol2b(2)
1419 if (dwt*dwtm1 .gt.
zero)
then
1420 if (dwt .ge. 0.)
then
1425 if (dwtm1 .ge. 0.)
then
1430 if (abs3 .lt. abs15)
then
1431 dwtk = dwtk +
half*dwt
1432 call pushcontrol2b(0)
1434 dwtk = dwtk +
half*dwtm1
1435 call pushcontrol2b(1)
1438 call pushcontrol2b(2)
1442 dwtk =
w(i, j, k+1, jj) -
w(i, j, k, jj)
1443 call pushcontrol2b(3)
1447 call popcontrol2b(branch)
1448 if (branch .lt. 2)
then
1449 if (branch .eq. 0)
then
1456 else if (branch .eq. 2)
then
1460 wd(i, j, k+1, jj) =
wd(i, j, k+1, jj) + dwtkd
1461 wd(i, j, k, jj) =
wd(i, j, k, jj) - dwtkd
1464 call popcontrol2b(branch)
1465 if (branch .eq. 0)
then
1466 dwtd = dwtd -
half*dwtkd
1468 else if (branch .eq. 1)
then
1469 dwtp1d = -(
half*dwtkd)
1474 wd(i, j, k+2, jj) =
wd(i, j, k+2, jj) + dwtp1d
1475 wd(i, j, k+1, jj) =
wd(i, j, k+1, jj) + dwtd - dwtp1d
1476 wd(i, j, k, jj) =
wd(i, j, k, jj) + dwtm1d - dwtd
1477 wd(i, j, k-1, jj) =
wd(i, j, k-1, jj) - dwtm1d
1508 & ,
sfacej,
sfacek,
w,
si,
sj,
sk,
addgridvelocities,
bmti1,
bmti2, &
1517 integer(kind=inttype),
intent(in) :: nadv, madv, offset
1518 real(kind=realtype),
dimension(2:il, 2:jl, 2:kl, madv, madv), &
1519 &
intent(inout) :: qq
1523 integer(kind=inttype) :: i, j, k, ii, jj, kk, iii
1524 real(kind=realtype) :: qs, voli, xa, ya, za
1525 real(kind=realtype) :: uu, dwt, dwtm1, dwtp1, dwti, dwtj, dwtk
1526 real(kind=realtype),
dimension(madv) :: impl
1529 real(kind=realtype) :: abs0
1530 real(kind=realtype) :: abs1
1531 real(kind=realtype) :: abs2
1532 real(kind=realtype) :: abs3
1533 real(kind=realtype) :: abs4
1534 real(kind=realtype) :: abs5
1535 real(kind=realtype) :: abs6
1536 real(kind=realtype) :: abs7
1537 real(kind=realtype) :: abs8
1538 real(kind=realtype) :: abs9
1539 real(kind=realtype) :: abs10
1540 real(kind=realtype) :: abs11
1541 real(kind=realtype) :: abs12
1542 real(kind=realtype) :: abs13
1543 real(kind=realtype) :: abs14
1544 real(kind=realtype) :: abs15
1545 real(kind=realtype) :: abs16
1546 real(kind=realtype) :: abs17
1547 real(kind=realtype) :: abs18
1548 real(kind=realtype) :: abs19
1549 real(kind=realtype) :: abs20
1550 real(kind=realtype) :: abs21
1551 real(kind=realtype) :: abs22
1552 real(kind=realtype) :: abs23
1571 i = mod(iii,
nx) + 2
1572 j = mod(iii/
nx,
ny) + 2
1581 xa = (
sk(i, j, k, 1)+
sk(i, j, k-1, 1))*voli
1582 ya = (
sk(i, j, k, 2)+
sk(i, j, k-1, 2))*voli
1583 za = (
sk(i, j, k, 3)+
sk(i, j, k-1, 3))*voli
1584 uu = xa*
w(i, j, k,
ivx) + ya*
w(i, j, k,
ivy) + za*
w(i, j, k,
ivz) &
1589 if (uu .gt.
zero)
then
1602 dwtm1 =
w(i, j, k-1, jj) -
w(i, j, k-2, jj)
1603 dwt =
w(i, j, k, jj) -
w(i, j, k-1, jj)
1604 dwtp1 =
w(i, j, k+1, jj) -
w(i, j, k, jj)
1609 if (dwt*dwtp1 .gt.
zero)
then
1610 if (dwt .ge. 0.)
then
1615 if (dwtp1 .ge. 0.)
then
1620 if (abs0 .lt. abs12)
then
1621 dwtk = dwtk +
half*dwt
1623 dwtk = dwtk +
half*dwtp1
1626 if (dwt*dwtm1 .gt.
zero)
then
1627 if (dwt .ge. 0.)
then
1632 if (dwtm1 .ge. 0.)
then
1637 if (abs1 .lt. abs13)
then
1638 dwtk = dwtk -
half*dwt
1640 dwtk = dwtk -
half*dwtm1
1645 dwtk =
w(i, j, k, jj) -
w(i, j, k-1, jj)
1667 dwtm1 =
w(i, j, k, jj) -
w(i, j, k-1, jj)
1668 dwt =
w(i, j, k+1, jj) -
w(i, j, k, jj)
1669 dwtp1 =
w(i, j, k+2, jj) -
w(i, j, k+1, jj)
1674 if (dwt*dwtp1 .gt.
zero)
then
1675 if (dwt .ge. 0.)
then
1680 if (dwtp1 .ge. 0.)
then
1685 if (abs2 .lt. abs14)
then
1686 dwtk = dwtk -
half*dwt
1688 dwtk = dwtk -
half*dwtp1
1691 if (dwt*dwtm1 .gt.
zero)
then
1692 if (dwt .ge. 0.)
then
1697 if (dwtm1 .ge. 0.)
then
1702 if (abs3 .lt. abs15)
then
1703 dwtk = dwtk +
half*dwt
1705 dwtk = dwtk +
half*dwtm1
1710 dwtk =
w(i, j, k+1, jj) -
w(i, j, k, jj)
1735 i = mod(iii,
nx) + 2
1736 j = mod(iii/
nx,
ny) + 2
1745 xa = (
sj(i, j, k, 1)+
sj(i, j-1, k, 1))*voli
1746 ya = (
sj(i, j, k, 2)+
sj(i, j-1, k, 2))*voli
1747 za = (
sj(i, j, k, 3)+
sj(i, j-1, k, 3))*voli
1748 uu = xa*
w(i, j, k,
ivx) + ya*
w(i, j, k,
ivy) + za*
w(i, j, k,
ivz) &
1752 if (uu .gt.
zero)
then
1765 dwtm1 =
w(i, j-1, k, jj) -
w(i, j-2, k, jj)
1766 dwt =
w(i, j, k, jj) -
w(i, j-1, k, jj)
1767 dwtp1 =
w(i, j+1, k, jj) -
w(i, j, k, jj)
1772 if (dwt*dwtp1 .gt.
zero)
then
1773 if (dwt .ge. 0.)
then
1778 if (dwtp1 .ge. 0.)
then
1783 if (abs4 .lt. abs16)
then
1784 dwtj = dwtj +
half*dwt
1786 dwtj = dwtj +
half*dwtp1
1789 if (dwt*dwtm1 .gt.
zero)
then
1790 if (dwt .ge. 0.)
then
1795 if (dwtm1 .ge. 0.)
then
1800 if (abs5 .lt. abs17)
then
1801 dwtj = dwtj -
half*dwt
1803 dwtj = dwtj -
half*dwtm1
1808 dwtj =
w(i, j, k, jj) -
w(i, j-1, k, jj)
1831 dwtm1 =
w(i, j, k, jj) -
w(i, j-1, k, jj)
1832 dwt =
w(i, j+1, k, jj) -
w(i, j, k, jj)
1833 dwtp1 =
w(i, j+2, k, jj) -
w(i, j+1, k, jj)
1838 if (dwt*dwtp1 .gt.
zero)
then
1839 if (dwt .ge. 0.)
then
1844 if (dwtp1 .ge. 0.)
then
1849 if (abs6 .lt. abs18)
then
1850 dwtj = dwtj -
half*dwt
1852 dwtj = dwtj -
half*dwtp1
1855 if (dwt*dwtm1 .gt.
zero)
then
1856 if (dwt .ge. 0.)
then
1861 if (dwtm1 .ge. 0.)
then
1866 if (abs7 .lt. abs19)
then
1867 dwtj = dwtj +
half*dwt
1869 dwtj = dwtj +
half*dwtm1
1874 dwtj =
w(i, j+1, k, jj) -
w(i, j, k, jj)
1899 i = mod(iii,
nx) + 2
1900 j = mod(iii/
nx,
ny) + 2
1909 xa = (
si(i, j, k, 1)+
si(i-1, j, k, 1))*voli
1910 ya = (
si(i, j, k, 2)+
si(i-1, j, k, 2))*voli
1911 za = (
si(i, j, k, 3)+
si(i-1, j, k, 3))*voli
1912 uu = xa*
w(i, j, k,
ivx) + ya*
w(i, j, k,
ivy) + za*
w(i, j, k,
ivz) &
1916 if (uu .gt.
zero)
then
1929 dwtm1 =
w(i-1, j, k, jj) -
w(i-2, j, k, jj)
1930 dwt =
w(i, j, k, jj) -
w(i-1, j, k, jj)
1931 dwtp1 =
w(i+1, j, k, jj) -
w(i, j, k, jj)
1936 if (dwt*dwtp1 .gt.
zero)
then
1937 if (dwt .ge. 0.)
then
1942 if (dwtp1 .ge. 0.)
then
1947 if (abs8 .lt. abs20)
then
1948 dwti = dwti +
half*dwt
1950 dwti = dwti +
half*dwtp1
1953 if (dwt*dwtm1 .gt.
zero)
then
1954 if (dwt .ge. 0.)
then
1959 if (dwtm1 .ge. 0.)
then
1964 if (abs9 .lt. abs21)
then
1965 dwti = dwti -
half*dwt
1967 dwti = dwti -
half*dwtm1
1972 dwti =
w(i, j, k, jj) -
w(i-1, j, k, jj)
1995 dwtm1 =
w(i, j, k, jj) -
w(i-1, j, k, jj)
1996 dwt =
w(i+1, j, k, jj) -
w(i, j, k, jj)
1997 dwtp1 =
w(i+2, j, k, jj) -
w(i+1, j, k, jj)
2002 if (dwt*dwtp1 .gt.
zero)
then
2003 if (dwt .ge. 0.)
then
2008 if (dwtp1 .ge. 0.)
then
2013 if (abs10 .lt. abs22)
then
2014 dwti = dwti -
half*dwt
2016 dwti = dwti -
half*dwtp1
2019 if (dwt*dwtm1 .gt.
zero)
then
2020 if (dwt .ge. 0.)
then
2025 if (dwtm1 .ge. 0.)
then
2030 if (abs11 .lt. abs23)
then
2031 dwti = dwti +
half*dwt
2033 dwti = dwti +
half*dwtm1
2038 dwti =
w(i+1, j, k, jj) -
w(i, j, k, jj)
real(kind=realtype), dimension(:, :, :, :), pointer bmtk2
real(kind=realtype), dimension(:, :, :), pointer sfacek
logical addgridvelocities
real(kind=realtype), dimension(:, :, :, :), pointer bmti1
real(kind=realtype), dimension(:, :, :, :), pointer wd
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
real(kind=realtype), dimension(:, :, :), pointer d2wall
real(kind=realtype), dimension(:, :, :), pointer revd
real(kind=realtype), dimension(:, :, :), pointer rlv
real(kind=realtype), dimension(:, :, :, :), pointer si
real(kind=realtype), dimension(:, :, :, :), pointer sj
integer(kind=inttype) sectionid
real(kind=realtype), dimension(:, :, :, :), pointer scratchd
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 rlvd
real(kind=realtype), dimension(:, :, :), pointer vol
real(kind=realtype), dimension(:, :, :), pointer sfacej
real(kind=realtype), dimension(:, :, :, :), pointer bmtk1
real(kind=realtype), dimension(:, :, :, :, :), pointer wold
integer(kind=inttype), parameter spalartallmarasedwards
integer(kind=inttype), parameter spalartallmaras
real(kind=realtype), parameter zero
real(kind=realtype), parameter three
real(kind=realtype), parameter four
real(kind=realtype), parameter third
real(kind=realtype), parameter thresholdreal
real(kind=realtype), parameter half
real(kind=realtype), parameter two
real(kind=realtype), parameter fourth
integer(kind=inttype), parameter secondorder
real(kind=realtype) timeref
integer(kind=inttype) noldlevels
integer(kind=inttype) currentlevel
integer(kind=inttype) groundlevel
real(kind=realtype), dimension(:), allocatable coeftime
real(kind=realtype), parameter rssta1
real(kind=realtype), parameter rsacv1
type(sectiontype), dimension(:), allocatable sections
real(kind=realtype), dimension(:, :, :), pointer prod
subroutine saeddyviscosity(ibeg, iend, jbeg, jend, kbeg, kend)
subroutine prodkatolaunder()
subroutine unsteadyturbterm(madv, nadv, offset, qq)
subroutine kweddyviscosity(ibeg, iend, jbeg, jend, kbeg, kend)
subroutine saeddyviscosity_fast_b(ibeg, iend, jbeg, jend, kbeg, kend)
subroutine turbadvection_fast_b(madv, nadv, offset, qq)
subroutine turbadvection(madv, nadv, offset, qq)
real(kind=realtype) function sanuknowneddyratio(eddyratio, nulam)
subroutine computeeddyviscosity(includehalos)
subroutine ssteddyviscosity(ibeg, iend, jbeg, jend, kbeg, kend)