30 integer(kind=inttype) :: discr
31 integer(kind=inttype) :: i, j, k, l
33 integer(kind=inttype) :: iale, jale, kale, lale, male
34 real(kind=realtype),
parameter :: k1=1.05_realtype
37 real(kind=realtype),
parameter :: k2=0.6_realtype
39 real(kind=realtype),
parameter :: m0=0.2_realtype
40 real(kind=realtype),
parameter :: alpha=0_realtype
41 real(kind=realtype),
parameter :: delta=0_realtype
44 real(kind=realtype),
parameter :: cpres=4.18_realtype
45 real(kind=realtype),
parameter :: temp=297.15_realtype
49 real(kind=realtype) :: k3, h, velxrho, velyrho, velzrho, sos, hinf
50 real(kind=realtype) :: resm, a11, a12, a13, a14, a15, a21, a22, a23&
51 & , a24, a25, a31, a32, a33, a34, a35
52 real(kind=realtype) :: a41, a42, a43, a44, a45, a51, a52, a53, a54, &
53 & a55, b11, b12, b13, b14, b15
54 real(kind=realtype) :: b21, b22, b23, b24, b25, b31, b32, b33, b34, &
56 real(kind=realtype) :: b41, b42, b43, b44, b45, b51, b52, b53, b54, &
58 real(kind=realtype) :: rhohdash, betamr2
59 real(kind=realtype) :: g, q
60 real(kind=realtype) :: b1, b2, b3, b4, b5
61 real(kind=realtype) :: dwo(
nwf)
68 real(kind=realtype) :: x1
71 real(kind=realtype) :: abs0
72 real(realtype) :: max1
73 real(realtype) :: max2
74 real(kind=realtype) :: arg1
75 real(kind=realtype) :: result1
136 if (
rfil .ge. 0.)
then
142 if (abs0 .gt. thresholdreal)
then
172 arg1 =
gamma(i, j, k)*
p(i, j, k)/
w(i, j, k, irho)
182 velxrho =
w(i, j, k, ivx)
183 velyrho =
w(i, j, k, ivy)
184 velzrho =
w(i, j, k, ivz)
185 q = velxrho**2 + velyrho**2 + velzrho**2
205 k3 = k1*(1+(1-k1*m0**2)*resm**2/(k1*m0**4))
206 if (k3*(velxrho**2+velyrho**2+velzrho**2) .lt. k2*(
winf(ivx)&
207 & **2+
winf(ivy)**2+
winf(ivz)**2))
then
210 x1 = k3*(velxrho**2+velyrho**2+velzrho**2)
212 if (x1 .gt. sos**2)
then
220 a11 = betamr2*(1/sos**4)
224 a15 = (-betamr2)/sos**4
225 a21 = one*velxrho/sos**2
226 a22 = one*
w(i, j, k, irho)
229 a25 = one*(-velxrho)/sos**2
230 a31 = one*velyrho/sos**2
232 a33 = one*
w(i, j, k, irho)
234 a35 = one*(-velyrho)/sos**2
235 a41 = one*velzrho/sos**2
238 a44 = one*
w(i, j, k, irho)
239 a45 = zero + one*(-velzrho)/sos**2
241 a51 = one*(1/(
gamma(i, j, k)-1)+resm**2/2)
242 a52 = one*
w(i, j, k, irho)*velxrho
243 a53 = one*
w(i, j, k, irho)*velyrho
244 a54 = one*
w(i, j, k, irho)*velzrho
245 a55 = one*((-(resm**2))/2)
246 b11 = a11*(
gamma(i, j, k)-1)*q/2 + a12*(-velxrho)/
w(i, j, k&
247 & , irho) + a13*(-velyrho)/
w(i, j, k, irho) + a14*(-velzrho)&
248 & /
w(i, j, k, irho) + a15*((
gamma(i, j, k)-1)*q/2-sos**2)
249 b12 = a11*(1-
gamma(i, j, k))*velxrho + a12*1/
w(i, j, k, irho&
250 & ) + a15*(1-
gamma(i, j, k))*velxrho
251 b13 = a11*(1-
gamma(i, j, k))*velyrho + a13/
w(i, j, k, irho) &
252 & + a15*(1-
gamma(i, j, k))*velyrho
253 b14 = a11*(1-
gamma(i, j, k))*velzrho + a14/
w(i, j, k, irho) &
254 & + a15*(1-
gamma(i, j, k))*velzrho
255 b15 = a11*(
gamma(i, j, k)-1) + a15*(
gamma(i, j, k)-1)
256 b21 = a21*(
gamma(i, j, k)-1)*q/2 + a22*(-velxrho)/
w(i, j, k&
257 & , irho) + a23*(-velyrho)/
w(i, j, k, irho) + a24*(-velzrho)&
258 & /
w(i, j, k, irho) + a25*((
gamma(i, j, k)-1)*q/2-sos**2)
259 b22 = a21*(1-
gamma(i, j, k))*velxrho + a22/
w(i, j, k, irho) &
260 & + a25*(1-
gamma(i, j, k))*velxrho
261 b23 = a21*(1-
gamma(i, j, k))*velyrho + a23*1/
w(i, j, k, irho&
262 & ) + a25*(1-
gamma(i, j, k))*velyrho
263 b24 = a21*(1-
gamma(i, j, k))*velzrho + a24*1/
w(i, j, k, irho&
264 & ) + a25*(1-
gamma(i, j, k))*velzrho
265 b25 = a21*(
gamma(i, j, k)-1) + a25*(
gamma(i, j, k)-1)
266 b31 = a31*(
gamma(i, j, k)-1)*q/2 + a32*(-velxrho)/
w(i, j, k&
267 & , irho) + a33*(-velyrho)/
w(i, j, k, irho) + a34*(-velzrho)&
268 & /
w(i, j, k, irho) + a35*((
gamma(i, j, k)-1)*q/2-sos**2)
269 b32 = a31*(1-
gamma(i, j, k))*velxrho + a32/
w(i, j, k, irho) &
270 & + a35*(1-
gamma(i, j, k))*velxrho
271 b33 = a31*(1-
gamma(i, j, k))*velyrho + a33*1/
w(i, j, k, irho&
272 & ) + a35*(1-
gamma(i, j, k))*velyrho
273 b34 = a31*(1-
gamma(i, j, k))*velzrho + a34*1/
w(i, j, k, irho&
274 & ) + a35*(1-
gamma(i, j, k))*velzrho
275 b35 = a31*(
gamma(i, j, k)-1) + a35*(
gamma(i, j, k)-1)
276 b41 = a41*(
gamma(i, j, k)-1)*q/2 + a42*(-velxrho)/
w(i, j, k&
277 & , irho) + a43*(-velyrho)/
w(i, j, k, irho) + a44*(-velzrho)&
278 & /
w(i, j, k, irho) + a45*((
gamma(i, j, k)-1)*q/2-sos**2)
279 b42 = a41*(1-
gamma(i, j, k))*velxrho + a42/
w(i, j, k, irho) &
280 & + a45*(1-
gamma(i, j, k))*velxrho
281 b43 = a41*(1-
gamma(i, j, k))*velyrho + a43*1/
w(i, j, k, irho&
282 & ) + a45*(1-
gamma(i, j, k))*velyrho
283 b44 = a41*(1-
gamma(i, j, k))*velzrho + a44*1/
w(i, j, k, irho&
284 & ) + a45*(1-
gamma(i, j, k))*velzrho
285 b45 = a41*(
gamma(i, j, k)-1) + a45*(
gamma(i, j, k)-1)
286 b51 = a51*(
gamma(i, j, k)-1)*q/2 + a52*(-velxrho)/
w(i, j, k&
287 & , irho) + a53*(-velyrho)/
w(i, j, k, irho) + a54*(-velzrho)&
288 & /
w(i, j, k, irho) + a55*((
gamma(i, j, k)-1)*q/2-sos**2)
289 b52 = a51*(1-
gamma(i, j, k))*velxrho + a52/
w(i, j, k, irho) &
290 & + a55*(1-
gamma(i, j, k))*velxrho
291 b53 = a51*(1-
gamma(i, j, k))*velyrho + a53*1/
w(i, j, k, irho&
292 & ) + a55*(1-
gamma(i, j, k))*velyrho
293 b54 = a51*(1-
gamma(i, j, k))*velzrho + a54*1/
w(i, j, k, irho&
294 & ) + a55*(1-
gamma(i, j, k))*velzrho
295 b55 = a51*(
gamma(i, j, k)-1) + a55*(
gamma(i, j, k)-1)
298 x2 = real(
iblank(i, j, k), realtype)
299 if (x2 .lt. zero)
then
304 dwo(l) = (
dw(i, j, k, l)+
fw(i, j, k, l))*max1
306 dw(i, j, k, 1) = b11*dwo(1) + b12*dwo(2) + b13*dwo(3) + b14*&
307 & dwo(4) + b15*dwo(5)
308 dw(i, j, k, 2) = b21*dwo(1) + b22*dwo(2) + b23*dwo(3) + b24*&
309 & dwo(4) + b25*dwo(5)
310 dw(i, j, k, 3) = b31*dwo(1) + b32*dwo(2) + b33*dwo(3) + b34*&
311 & dwo(4) + b35*dwo(5)
312 dw(i, j, k, 4) = b41*dwo(1) + b42*dwo(2) + b43*dwo(3) + b44*&
313 & dwo(4) + b45*dwo(5)
314 dw(i, j, k, 5) = b51*dwo(1) + b52*dwo(2) + b53*dwo(3) + b54*&
315 & dwo(4) + b55*dwo(5)
327 x3 = real(
iblank(i, j, k), realtype)
328 if (x3 .lt. zero)
then
333 dw(i, j, k, l) = (
dw(i, j, k, l)+
fw(i, j, k, l))*max2
360 integer(kind=inttype),
intent(in) :: nn, iregion
361 logical,
intent(in) :: res
362 real(kind=realtype),
intent(inout) :: plocal
363 real(kind=realtype),
intent(inout) :: plocald
365 integer(kind=inttype) :: i, j, k, ii, istart, iend
366 real(kind=realtype) :: ftmp(3), vx, vy, vz, f_fact(3), q_fact, qtmp&
367 & , redim, factor, ostart, oend
368 real(kind=realtype) :: ftmpd(3), vxd, vyd, vzd, f_factd(3), q_factd&
370 real(kind=realtype) :: temp
371 real(kind=realtype) :: temp0
372 real(kind=realtype) :: temp1
401 q_fact = factor*temp1
411 ftmpd = f_fact*
vold(i, j, k) +
vol(i, j, k)*f_factd
412 ftmp =
vol(i, j, k)*f_fact
413 vxd =
wd(i, j, k,
ivx)
415 vyd =
wd(i, j, k,
ivy)
417 vzd =
wd(i, j, k,
ivz)
420 qtmpd = q_fact*
vold(i, j, k) +
vol(i, j, k)*q_factd
421 qtmp =
vol(i, j, k)*q_fact
428 & )*vxd - vy*ftmpd(2) - ftmp(2)*vyd - vz*ftmpd(3) - ftmp(3)*vzd &
431 & vy - ftmp(3)*vz - qtmp
434 temp1 = vx*ftmp(1) + vy*ftmp(2) + vz*ftmp(3)
435 plocald = plocald + redim*(ftmp(1)*vxd+vx*ftmpd(1)+ftmp(2)*vyd+&
436 & vy*ftmpd(2)+ftmp(3)*vzd+vz*ftmpd(3)) + temp1*redimd
437 plocal = plocal + temp1*redim
453 integer(kind=inttype),
intent(in) :: nn, iregion
454 logical,
intent(in) :: res
455 real(kind=realtype),
intent(inout) :: plocal
457 integer(kind=inttype) :: i, j, k, ii, istart, iend
458 real(kind=realtype) :: ftmp(3), vx, vy, vz, f_fact(3), q_fact, qtmp&
459 & , redim, factor, ostart, oend
476 & iregion)%volume/
pref
490 ftmp =
vol(i, j, k)*f_fact
495 qtmp =
vol(i, j, k)*q_fact
501 & vy - ftmp(3)*vz - qtmp
504 plocal = plocal + (vx*ftmp(1)+vy*ftmp(2)+vz*ftmp(3))*redim
532 integer(kind=inttype),
intent(in) :: varstart, varend, nn, sps
536 integer(kind=inttype) :: mm, ll, ii, jj, i, j, k, l, m
537 real(kind=realtype) :: oneoverdt, tmp
538 real(kind=realtype),
dimension(:, :, :, :),
pointer :: ww, wsp, wsp1
539 real(kind=realtype),
dimension(:, :, :),
pointer :: volsp
541 if (varend .lt. varstart)
then
556 dwd(i, j, k, l) = 0.0_8
557 dw(i, j, k, l) = zero
569 dwd(i, j, k, l) = 0.0_8
570 dw(i, j, k, l) =
wr(i, j, k, l)
582 dwd(0, j, k, l) = 0.0_8
583 dw(0, j, k, l) = zero
584 dwd(1, j, k, l) = 0.0_8
585 dw(1, j, k, l) = zero
586 dwd(
ie, j, k, l) = 0.0_8
587 dw(
ie, j, k, l) = zero
588 dwd(
ib, j, k, l) = 0.0_8
589 dw(
ib, j, k, l) = zero
594 dwd(i, 0, k, l) = 0.0_8
595 dw(i, 0, k, l) = zero
596 dwd(i, 1, k, l) = 0.0_8
597 dw(i, 1, k, l) = zero
598 dwd(i,
je, k, l) = 0.0_8
599 dw(i,
je, k, l) = zero
600 dwd(i,
jb, k, l) = 0.0_8
601 dw(i,
jb, k, l) = zero
606 dwd(i, j, 0, l) = 0.0_8
607 dw(i, j, 0, l) = zero
608 dwd(i, j, 1, l) = 0.0_8
609 dw(i, j, 1, l) = zero
610 dwd(i, j,
ke, l) = 0.0_8
611 dw(i, j,
ke, l) = zero
612 dwd(i, j,
kb, l) = 0.0_8
613 dw(i, j,
kb, l) = zero
638 integer(kind=inttype),
intent(in) :: varstart, varend, nn, sps
642 integer(kind=inttype) :: mm, ll, ii, jj, i, j, k, l, m
643 real(kind=realtype) :: oneoverdt, tmp
644 real(kind=realtype),
dimension(:, :, :, :),
pointer :: ww, wsp, wsp1
645 real(kind=realtype),
dimension(:, :, :),
pointer :: volsp
647 if (varend .lt. varstart)
then
662 dw(i, j, k, l) = zero
674 dw(i, j, k, l) =
wr(i, j, k, l)
686 dw(0, j, k, l) = zero
687 dw(1, j, k, l) = zero
688 dw(
ie, j, k, l) = zero
689 dw(
ib, j, k, l) = zero
694 dw(i, 0, k, l) = zero
695 dw(i, 1, k, l) = zero
696 dw(i,
je, k, l) = zero
697 dw(i,
jb, k, l) = zero
702 dw(i, j, 0, l) = zero
703 dw(i, j, 1, l) = zero
704 dw(i, j,
ke, l) = zero
705 dw(i, j,
kb, l) = zero
type(actuatorregiontype), dimension(nactuatorregionsmax), target actuatorregions
type(actuatorregiontype), dimension(nactuatorregionsmax), target actuatorregionsd
real(kind=realtype), dimension(:, :, :), pointer gamma
real(kind=realtype), dimension(:, :, :, :), pointer wd
real(kind=realtype), dimension(:, :, :), pointer vold
real(kind=realtype), dimension(:, :, :, :), pointer wr
real(kind=realtype), dimension(:, :, :), pointer p
real(kind=realtype), dimension(:, :, :, :), pointer w
integer(kind=inttype), dimension(:, :, :), pointer iblank
real(kind=realtype), dimension(:, :, :, :), pointer dw
real(kind=realtype), dimension(:, :, :), pointer vol
real(kind=realtype), dimension(:, :, :, :), pointer fw
real(kind=realtype), dimension(:, :, :, :), pointer dwd
real(kind=realtype), parameter zero
real(kind=realtype), parameter one
subroutine computespeedofsoundsquared()
subroutine allnodalgradients()
real(kind=realtype) prefd
integer(kind=inttype) nwf
real(kind=realtype), dimension(:), allocatable winf
real(kind=realtype) urefd
subroutine viscousfluxapprox()
subroutine inviscidcentralflux()
subroutine invisciddissfluxscalar()
subroutine invisciddissfluxmatrix()
subroutine invisciddissfluxmatrixapprox()
subroutine invisciddissfluxscalarapprox()
subroutine inviscidupwindflux(finegrid)
integer(kind=inttype) currentlevel
integer(kind=inttype) groundlevel
integer(kind=inttype) rkstage
real(kind=realtype) ordersconverged
subroutine residual_block()
subroutine initres_block_d(varstart, varend, nn, sps)
subroutine sourceterms_block_d(nn, res, iregion, plocal, plocald)
subroutine sourceterms_block(nn, res, iregion, plocal)
subroutine initres_block(varstart, varend, nn, sps)