scalrec Subroutine

private subroutine scalrec()

Uses

  • proc~~scalrec~~UsesGraph proc~scalrec modboundary::scalrec module~modfields modfields proc~scalrec->module~modfields module~modglobal modglobal proc~scalrec->module~modglobal module~modinletdata modinletdata proc~scalrec->module~modinletdata

Arguments

None

Called by

proc~~scalrec~~CalledByGraph proc~scalrec modboundary::scalrec proc~boundary modboundary::boundary proc~boundary->proc~scalrec proc~readinitfiles modstartup::readinitfiles proc~readinitfiles->proc~boundary program~dalesurban DALESURBAN program~dalesurban->proc~boundary proc~startup modstartup::startup program~dalesurban->proc~startup proc~startup->proc~readinitfiles

Contents

Source Code


Source Code

   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