Prescribed-zero boundary state for the tracer.
"No-normal-flow" only has physical meaning when the velocity field is a prognostic variable that can be reflected at the wall. For a passive tracer with externally-prescribed velocity the appropriate external state is identically zero everywhere on the boundary, which combined with the LLF (= upwind for linear advection) Riemann flux gives correct inflow (zero injection) and outflow (upwind sL) behaviour.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(BoundaryCondition), | intent(in) | :: | bc | |||
| class(Model), | intent(inout) | :: | mymodel |
subroutine hbc2d_NoNormalFlow_ECAdvection2D(bc,mymodel)
!! Prescribed-zero boundary state for the tracer.
!!
!! "No-normal-flow" only has physical meaning when the velocity field
!! is a prognostic variable that can be reflected at the wall. For a
!! passive tracer with externally-prescribed velocity the appropriate
!! external state is identically zero everywhere on the boundary,
!! which combined with the LLF (= upwind for linear advection) Riemann
!! flux gives correct inflow (zero injection) and outflow (upwind sL)
!! behaviour.
class(BoundaryCondition),intent(in) :: bc
class(Model),intent(inout) :: mymodel
! Local
integer :: n,i,iEl,j
select type(m => mymodel)
class is(ECAdvection2D_t)
do n = 1,bc%nBoundaries
iEl = bc%elements(n)
j = bc%sides(n)
do i = 1,m%solution%interp%N+1
m%solution%extBoundary(i,j,iEl,1:m%nvar) = 0.0_prec
enddo
enddo
endselect
endsubroutine hbc2d_NoNormalFlow_ECAdvection2D