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
134 if (
rfil .ge. 0.)
then
140 if (abs0 .gt. thresholdreal)
then
170 sos = sqrt(
gamma(i, j, k)*
p(i, j, k)/
w(i, j, k, irho))
179 velxrho =
w(i, j, k, ivx)
180 velyrho =
w(i, j, k, ivy)
181 velzrho =
w(i, j, k, ivz)
182 q = velxrho**2 + velyrho**2 + velzrho**2
201 k3 = k1*(1+(1-k1*m0**2)*resm**2/(k1*m0**4))
202 if (k3*(velxrho**2+velyrho**2+velzrho**2) .lt. k2*(
winf(ivx)&
203 & **2+
winf(ivy)**2+
winf(ivz)**2))
then
206 x1 = k3*(velxrho**2+velyrho**2+velzrho**2)
208 if (x1 .gt. sos**2)
then
216 a11 = betamr2*(1/sos**4)
220 a15 = (-betamr2)/sos**4
221 a21 = one*velxrho/sos**2
222 a22 = one*
w(i, j, k, irho)
225 a25 = one*(-velxrho)/sos**2
226 a31 = one*velyrho/sos**2
228 a33 = one*
w(i, j, k, irho)
230 a35 = one*(-velyrho)/sos**2
231 a41 = one*velzrho/sos**2
234 a44 = one*
w(i, j, k, irho)
235 a45 = zero + one*(-velzrho)/sos**2
237 a51 = one*(1/(
gamma(i, j, k)-1)+resm**2/2)
238 a52 = one*
w(i, j, k, irho)*velxrho
239 a53 = one*
w(i, j, k, irho)*velyrho
240 a54 = one*
w(i, j, k, irho)*velzrho
241 a55 = one*((-(resm**2))/2)
242 b11 = a11*(
gamma(i, j, k)-1)*q/2 + a12*(-velxrho)/
w(i, j, k&
243 & , irho) + a13*(-velyrho)/
w(i, j, k, irho) + a14*(-velzrho)&
244 & /
w(i, j, k, irho) + a15*((
gamma(i, j, k)-1)*q/2-sos**2)
245 b12 = a11*(1-
gamma(i, j, k))*velxrho + a12*1/
w(i, j, k, irho&
246 & ) + a15*(1-
gamma(i, j, k))*velxrho
247 b13 = a11*(1-
gamma(i, j, k))*velyrho + a13/
w(i, j, k, irho) &
248 & + a15*(1-
gamma(i, j, k))*velyrho
249 b14 = a11*(1-
gamma(i, j, k))*velzrho + a14/
w(i, j, k, irho) &
250 & + a15*(1-
gamma(i, j, k))*velzrho
251 b15 = a11*(
gamma(i, j, k)-1) + a15*(
gamma(i, j, k)-1)
252 b21 = a21*(
gamma(i, j, k)-1)*q/2 + a22*(-velxrho)/
w(i, j, k&
253 & , irho) + a23*(-velyrho)/
w(i, j, k, irho) + a24*(-velzrho)&
254 & /
w(i, j, k, irho) + a25*((
gamma(i, j, k)-1)*q/2-sos**2)
255 b22 = a21*(1-
gamma(i, j, k))*velxrho + a22/
w(i, j, k, irho) &
256 & + a25*(1-
gamma(i, j, k))*velxrho
257 b23 = a21*(1-
gamma(i, j, k))*velyrho + a23*1/
w(i, j, k, irho&
258 & ) + a25*(1-
gamma(i, j, k))*velyrho
259 b24 = a21*(1-
gamma(i, j, k))*velzrho + a24*1/
w(i, j, k, irho&
260 & ) + a25*(1-
gamma(i, j, k))*velzrho
261 b25 = a21*(
gamma(i, j, k)-1) + a25*(
gamma(i, j, k)-1)
262 b31 = a31*(
gamma(i, j, k)-1)*q/2 + a32*(-velxrho)/
w(i, j, k&
263 & , irho) + a33*(-velyrho)/
w(i, j, k, irho) + a34*(-velzrho)&
264 & /
w(i, j, k, irho) + a35*((
gamma(i, j, k)-1)*q/2-sos**2)
265 b32 = a31*(1-
gamma(i, j, k))*velxrho + a32/
w(i, j, k, irho) &
266 & + a35*(1-
gamma(i, j, k))*velxrho
267 b33 = a31*(1-
gamma(i, j, k))*velyrho + a33*1/
w(i, j, k, irho&
268 & ) + a35*(1-
gamma(i, j, k))*velyrho
269 b34 = a31*(1-
gamma(i, j, k))*velzrho + a34*1/
w(i, j, k, irho&
270 & ) + a35*(1-
gamma(i, j, k))*velzrho
271 b35 = a31*(
gamma(i, j, k)-1) + a35*(
gamma(i, j, k)-1)
272 b41 = a41*(
gamma(i, j, k)-1)*q/2 + a42*(-velxrho)/
w(i, j, k&
273 & , irho) + a43*(-velyrho)/
w(i, j, k, irho) + a44*(-velzrho)&
274 & /
w(i, j, k, irho) + a45*((
gamma(i, j, k)-1)*q/2-sos**2)
275 b42 = a41*(1-
gamma(i, j, k))*velxrho + a42/
w(i, j, k, irho) &
276 & + a45*(1-
gamma(i, j, k))*velxrho
277 b43 = a41*(1-
gamma(i, j, k))*velyrho + a43*1/
w(i, j, k, irho&
278 & ) + a45*(1-
gamma(i, j, k))*velyrho
279 b44 = a41*(1-
gamma(i, j, k))*velzrho + a44*1/
w(i, j, k, irho&
280 & ) + a45*(1-
gamma(i, j, k))*velzrho
281 b45 = a41*(
gamma(i, j, k)-1) + a45*(
gamma(i, j, k)-1)
282 b51 = a51*(
gamma(i, j, k)-1)*q/2 + a52*(-velxrho)/
w(i, j, k&
283 & , irho) + a53*(-velyrho)/
w(i, j, k, irho) + a54*(-velzrho)&
284 & /
w(i, j, k, irho) + a55*((
gamma(i, j, k)-1)*q/2-sos**2)
285 b52 = a51*(1-
gamma(i, j, k))*velxrho + a52/
w(i, j, k, irho) &
286 & + a55*(1-
gamma(i, j, k))*velxrho
287 b53 = a51*(1-
gamma(i, j, k))*velyrho + a53*1/
w(i, j, k, irho&
288 & ) + a55*(1-
gamma(i, j, k))*velyrho
289 b54 = a51*(1-
gamma(i, j, k))*velzrho + a54*1/
w(i, j, k, irho&
290 & ) + a55*(1-
gamma(i, j, k))*velzrho
291 b55 = a51*(
gamma(i, j, k)-1) + a55*(
gamma(i, j, k)-1)
294 x2 = real(
iblank(i, j, k), realtype)
295 if (x2 .lt. zero)
then
300 dwo(l) = (
dw(i, j, k, l)+
fw(i, j, k, l))*max1
302 dw(i, j, k, 1) = b11*dwo(1) + b12*dwo(2) + b13*dwo(3) + b14*&
303 & dwo(4) + b15*dwo(5)
304 dw(i, j, k, 2) = b21*dwo(1) + b22*dwo(2) + b23*dwo(3) + b24*&
305 & dwo(4) + b25*dwo(5)
306 dw(i, j, k, 3) = b31*dwo(1) + b32*dwo(2) + b33*dwo(3) + b34*&
307 & dwo(4) + b35*dwo(5)
308 dw(i, j, k, 4) = b41*dwo(1) + b42*dwo(2) + b43*dwo(3) + b44*&
309 & dwo(4) + b45*dwo(5)
310 dw(i, j, k, 5) = b51*dwo(1) + b52*dwo(2) + b53*dwo(3) + b54*&
311 & dwo(4) + b55*dwo(5)
323 x3 = real(
iblank(i, j, k), realtype)
324 if (x3 .lt. zero)
then
329 dw(i, j, k, l) = (
dw(i, j, k, l)+
fw(i, j, k, l))*max2
357 integer(kind=inttype),
intent(in) :: nn, iregion
358 logical,
intent(in) :: res
359 real(kind=realtype),
intent(inout) :: plocal
360 real(kind=realtype),
intent(inout) :: plocald
362 integer(kind=inttype) :: i, j, k, ii, istart, iend
363 real(kind=realtype) :: ftmp(3), vx, vy, vz, f_fact(3), q_fact, qtmp&
364 & , redim, factor, ostart, oend
365 real(kind=realtype) :: ftmpd(3), vxd, vyd, vzd, f_factd(3), q_factd&
367 real(kind=realtype),
dimension(3) :: tempd
368 real(kind=realtype) :: temp
369 real(kind=realtype) :: tempd0
370 real(kind=realtype) :: temp0
371 real(kind=realtype) :: tempd1
372 real(kind=realtype) :: tempd2
378 call pushcontrol1b(0)
382 call pushcontrol1b(1)
385 call pushcontrol1b(1)
393 & iregion)%volume/
pref
410 ftmp =
vol(i, j, k)*f_fact
417 ftmpd(1) = ftmpd(1) - vx*
dwd(i, j, k,
irhoe)
418 vxd = -(ftmp(1)*
dwd(i, j, k,
irhoe))
419 ftmpd(2) = ftmpd(2) - vy*
dwd(i, j, k,
irhoe)
420 vyd = -(ftmp(2)*
dwd(i, j, k,
irhoe))
421 ftmpd(3) = ftmpd(3) - vz*
dwd(i, j, k,
irhoe)
422 vzd = -(ftmp(3)*
dwd(i, j, k,
irhoe))
427 tempd1 = redim*plocald
428 redimd = redimd + (vx*ftmp(1)+vy*ftmp(2)+vz*ftmp(3))*plocald
430 ftmpd(1) = ftmpd(1) + vx*tempd1
432 ftmpd(2) = ftmpd(2) + vy*tempd1
434 ftmpd(3) = ftmpd(3) + vz*tempd1
437 vold(i, j, k) =
vold(i, j, k) + q_fact*qtmpd + sum(f_fact*ftmpd)
438 q_factd = q_factd +
vol(i, j, k)*qtmpd
442 f_factd = f_factd +
vol(i, j, k)*ftmpd
449 tempd1 = factor*q_factd/temp0
460 call popcontrol1b(branch)
476 integer(kind=inttype),
intent(in) :: nn, iregion
477 logical,
intent(in) :: res
478 real(kind=realtype),
intent(inout) :: plocal
480 integer(kind=inttype) :: i, j, k, ii, istart, iend
481 real(kind=realtype) :: ftmp(3), vx, vy, vz, f_fact(3), q_fact, qtmp&
482 & , redim, factor, ostart, oend
499 & iregion)%volume/
pref
513 ftmp =
vol(i, j, k)*f_fact
518 qtmp =
vol(i, j, k)*q_fact
524 & vy - ftmp(3)*vz - qtmp
527 plocal = plocal + (vx*ftmp(1)+vy*ftmp(2)+vz*ftmp(3))*redim
555 integer(kind=inttype),
intent(in) :: varstart, varend, nn, sps
559 integer(kind=inttype) :: mm, ll, ii, jj, i, j, k, l, m
560 real(kind=realtype) :: oneoverdt, tmp
561 real(kind=realtype),
dimension(:, :, :, :),
pointer :: ww, wsp, wsp1
562 real(kind=realtype),
dimension(:, :, :),
pointer :: volsp
565 if (varend .ge. varstart)
then
572 call pushcontrol2b(1)
574 call pushcontrol2b(0)
577 call pushcontrol2b(2)
579 do l=varend,varstart,-1
582 dwd(i, j,
kb, l) = 0.0_8
583 dwd(i, j,
ke, l) = 0.0_8
584 dwd(i, j, 1, l) = 0.0_8
585 dwd(i, j, 0, l) = 0.0_8
590 dwd(i,
jb, k, l) = 0.0_8
591 dwd(i,
je, k, l) = 0.0_8
592 dwd(i, 1, k, l) = 0.0_8
593 dwd(i, 0, k, l) = 0.0_8
598 dwd(
ib, j, k, l) = 0.0_8
599 dwd(
ie, j, k, l) = 0.0_8
600 dwd(1, j, k, l) = 0.0_8
601 dwd(0, j, k, l) = 0.0_8
605 call popcontrol2b(branch)
606 if (branch .eq. 0)
then
607 do l=varend,varstart,-1
611 dwd(i, j, k, l) = 0.0_8
616 else if (branch .eq. 1)
then
617 do l=varend,varstart,-1
621 dwd(i, j, k, l) = 0.0_8
648 integer(kind=inttype),
intent(in) :: varstart, varend, nn, sps
652 integer(kind=inttype) :: mm, ll, ii, jj, i, j, k, l, m
653 real(kind=realtype) :: oneoverdt, tmp
654 real(kind=realtype),
dimension(:, :, :, :),
pointer :: ww, wsp, wsp1
655 real(kind=realtype),
dimension(:, :, :),
pointer :: volsp
657 if (varend .lt. varstart)
then
672 dw(i, j, k, l) = zero
684 dw(i, j, k, l) =
wr(i, j, k, l)
696 dw(0, j, k, l) = zero
697 dw(1, j, k, l) = zero
698 dw(
ie, j, k, l) = zero
699 dw(
ib, j, k, l) = zero
704 dw(i, 0, k, l) = zero
705 dw(i, 1, k, l) = zero
706 dw(i,
je, k, l) = zero
707 dw(i,
jb, k, l) = zero
712 dw(i, j, 0, l) = zero
713 dw(i, j, 1, l) = zero
714 dw(i, j,
ke, l) = zero
715 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 inviscidcentralflux()
subroutine viscousfluxapprox()
subroutine invisciddissfluxmatrixapprox()
subroutine invisciddissfluxscalarapprox()
subroutine invisciddissfluxmatrix()
subroutine invisciddissfluxscalar()
subroutine inviscidupwindflux(finegrid)
integer(kind=inttype) currentlevel
integer(kind=inttype) groundlevel
integer(kind=inttype) rkstage
real(kind=realtype) ordersconverged
subroutine initres_block_b(varstart, varend, nn, sps)
subroutine sourceterms_block_b(nn, res, iregion, plocal, plocald)
subroutine sourceterms_block(nn, res, iregion, plocal)
subroutine initres_block(varstart, varend, nn, sps)
subroutine residual_block()