closurebc Subroutine

public subroutine closurebc()

Uses

  • proc~~closurebc~~UsesGraph proc~closurebc modboundary::closurebc module~modglobal modglobal proc~closurebc->module~modglobal module~modmpi modmpi proc~closurebc->module~modmpi module~modsubgriddata modsubgriddata proc~closurebc->module~modsubgriddata mpi mpi module~modmpi->mpi

Arguments

None

Calls

proc~~closurebc~~CallsGraph proc~closurebc modboundary::closurebc proc~excjs modmpi::excjs proc~closurebc->proc~excjs mpi_sendrecv mpi_sendrecv proc~excjs->mpi_sendrecv

Called by

proc~~closurebc~~CalledByGraph proc~closurebc modboundary::closurebc proc~closure modsubgrid::closure proc~closure->proc~closurebc proc~subgrid modsubgrid::subgrid proc~subgrid->proc~closure program~dalesurban DALESURBAN program~dalesurban->proc~subgrid

Contents

Source Code


Source Code

   subroutine closurebc
      use modsubgriddata, only:ekm, ekh
      use modglobal, only:ib, ie, jb, je, kb, ke, ih, jh, kh, numol, prandtlmoli, linoutflow, BCtopm
      use modmpi, only:excjs
      integer i, j

      ! Top and bottom
      ! ils13, 13.8.18: what should it be for slip or mixed BCs ?
      if ((BCtopm.eq.1) .or. (BCtopm.eq.3)) then !free-slip
         do j = jb - 1, je + 1
            do i = ib - 1, ie + 1
               ekm(i, j, ke + 1) = ekm(i, j, ke) ! zero-gradient top wall
               ekh(i, j, ke + 1) = ekh(i, j, ke) ! zero-gradient top wall
               ekm(i, j, kb - 1) = 2.*numol - ekm(i, j, kb) ! no-slip lower wall
               ekh(i, j, kb - 1) = (2.*numol*prandtlmoli) - ekh(i, j, kb) ! no-slip lower wall
            end do
         end do
      else if (BCtopm.eq.2)  then !no-slip
         do j = jb - 1, je + 1
            do i = ib - 1, ie + 1
               ekm(i, j, ke + 1) = 2.*numol - ekm(i, j, ke) ! no-slip top wall
               ekh(i, j, ke + 1) = (2.*numol*prandtlmoli) - ekh(i, j, ke) ! no-slip top wall
               ekm(i, j, kb - 1) = 2.*numol - ekm(i, j, kb) ! no-slip lower wall
               ekh(i, j, kb - 1) = (2.*numol*prandtlmoli) - ekh(i, j, kb) ! no-slip lower wall
            end do
         end do
      end if

      ! horizontal BC's
      if (linoutflow) then ! inflow/outflow
         ekm(ib - 1, :, :) = ekm(ib, :, :)
         ekm(ie + 1, :, :) = ekm(ie, :, :)
         ekh(ib - 1, :, :) = ekh(ib, :, :)
         ekh(ie + 1, :, :) = ekh(ie, :, :)
      else
         ekm(ib - 1, :, :) = ekm(ie, :, :) ! periodic
         ekm(ie + 1, :, :) = ekm(ib, :, :)
         ekh(ib - 1, :, :) = ekh(ie, :, :)
         ekh(ie + 1, :, :) = ekh(ib, :, :)
      end if

      call excjs(ekm, ib, ie, jb, je, kb - kh, ke + kh, ih, jh)
      call excjs(ekh, ib, ie, jb, je, kb - kh, ke + kh, ih, jh)

   end subroutine closurebc