subroutine scalrec
use modglobal, only:ib, ie, jb, je, ih, jh, kb, ke, kh, nsv, dt, rk3step, dxhi, ltempeq, &
ihc, jhc, khc, dy
use modfields, only:sv0, svm, svprof, uouttot, um, u0, vm, v0
use modinletdata, only:ubulk
real rk3coef
integer k, n, m
! recycling method for scalar fields following Matheou and Bowman (2015)
if (nsv > 0) then
rk3coef = dt/(4.-dble(rk3step))
do m = 1, ihc ! loop over virtual cells
do n = 1, nsv - 1
sv0(ib - m, :, :, n + 1) = sv0(ie + 1 - m, :, :, n)
sv0(ie + m, :, :, n) = sv0(ib - 1 + m, :, :, n + 1)
svm(ib - m, :, :, n + 1) = svm(ie + 1 - m, :, :, n)
svm(ie + m, :, :, n) = svm(ib - 1 + m, :, :, n + 1)
end do
! zero conc. on scalar 1 !tg3315 should be changed to as above in
sv0(ib - m, :, :, 1) = 0.
svm(ib - m, :, :, 1) = 0.
! DIY outflow BC (advection step as linout) tg3315
sv0(ie+m,:,:,nsv)=sv0(ie+1-m,:,:,nsv)-(sv0(ie+m,:,:,nsv)-sv0(ie+1-m,:,:,nsv))*dxhi(ie+m)*rk3coef*uouttot
svm(ie+m,:,:,nsv)=svm(ie+1-m,:,:,nsv)-(svm(ie+m,:,:,nsv)-svm(ie+1-m,:,:,nsv))*dxhi(ie+m)*rk3coef*uouttot
end do
end if
return
end subroutine scalrec