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