ocean_bc_outer_face_tag Function

public pure function ocean_bc_outer_face_tag(bc_type) result(tag)

The tag an edge’s OUTER FACE behaves as for the no-normal-flow closures (mass-flux zeroing in the continuity, the uhbt/vhbt wall reconciliation, the lateral tracer-diffusion walls).

OBC_SPONGE is a WALL at its outer face — the relaxation band is interior — so it maps to OBC_WALL; every other tag is returned unchanged. The barotropic substep already closes a sponge face (its select case default), so a closure that compared the RAW tag with OBC_WALL left the slow continuity open while the barotropic mode was shut: the layer flux through the face was never zeroed and the ghost row beyond it acted as an unbudgeted mass reservoir (the Southern Ocean 1-degree cut drew ~0.9 Sv through it and blew up at day 573 once the ghost column had drained below its top layers).

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: bc_type

Raw per-edge tag (ocean_bc_face_tag_t%bc_type).

Return Value integer


Called by

proc~~ocean_bc_outer_face_tag~~CalledByGraph proc~ocean_bc_outer_face_tag ocean_bc_outer_face_tag proc~configure_ocean_land_mask configure_ocean_land_mask proc~configure_ocean_land_mask->proc~ocean_bc_outer_face_tag proc~continuity_gm_apply continuity_gm_apply proc~continuity_gm_apply->proc~ocean_bc_outer_face_tag proc~continuity_meridional_flux continuity_meridional_flux proc~continuity_meridional_flux->proc~ocean_bc_outer_face_tag proc~continuity_tracer_step_split continuity_tracer_step_split proc~continuity_tracer_step_split->proc~ocean_bc_outer_face_tag proc~continuity_tracer_step_split->proc~continuity_meridional_flux proc~continuity_zonal_flux continuity_zonal_flux proc~continuity_tracer_step_split->proc~continuity_zonal_flux proc~continuity_zonal_flux->proc~ocean_bc_outer_face_tag proc~redi_apply_flux redi_apply_flux proc~redi_apply_flux->proc~ocean_bc_outer_face_tag proc~run_stage_split run_stage_split proc~run_stage_split->proc~ocean_bc_outer_face_tag proc~run_continuity_chain run_continuity_chain proc~run_stage_split->proc~run_continuity_chain proc~tracer_hdiff tracer_hdiff proc~tracer_hdiff->proc~ocean_bc_outer_face_tag proc~continuity_step_split continuity_step_split proc~continuity_step_split->proc~continuity_meridional_flux proc~continuity_step_split->proc~continuity_zonal_flux proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_land_mask proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split proc~run_gm_step run_gm_step proc~ocean_dyn_step_split->proc~run_gm_step proc~run_continuity_chain->proc~continuity_tracer_step_split proc~run_continuity_chain->proc~redi_apply_flux proc~run_continuity_chain->proc~tracer_hdiff proc~run_gm_step->proc~continuity_gm_apply proc~run_stage run_stage proc~run_stage->proc~continuity_tracer_step_split proc~run_stage->proc~tracer_hdiff proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~engine_step engine_step proc~driver_run_ocean->proc~engine_step proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup proc~engine_step->proc~ocean_dyn_step_split proc~ocean_dyn_step ocean_dyn_step proc~engine_step->proc~ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~rdb_ocean_create_finalize rdb_ocean_create_finalize proc~rdb_ocean_create_finalize->proc~complete_ocean_create proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~complete_ocean_create proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step

Source Code

   pure integer function ocean_bc_outer_face_tag(bc_type) result(tag)
      !! The tag an edge's OUTER FACE behaves as for the no-normal-flow
      !! closures (mass-flux zeroing in the continuity, the `uhbt`/`vhbt`
      !! wall reconciliation, the lateral tracer-diffusion walls).
      !!
      !! `OBC_SPONGE` is a WALL at its outer face — the relaxation band is
      !! interior — so it maps to `OBC_WALL`; every other tag is returned
      !! unchanged.  The barotropic substep already closes a sponge face
      !! (its `select case` default), so a closure that compared the RAW tag
      !! with `OBC_WALL` left the slow continuity open while the barotropic
      !! mode was shut: the layer flux through the face was never zeroed and
      !! the ghost row beyond it acted as an unbudgeted mass reservoir (the
      !! Southern Ocean 1-degree cut drew ~0.9 Sv through it and blew up at
      !! day 573 once the ghost column had drained below its top layers).
      integer, intent(in) :: bc_type
         !! Raw per-edge tag (`ocean_bc_face_tag_t%bc_type`).
      tag = bc_type
      if (bc_type == OBC_SPONGE) tag = OBC_WALL
   end function ocean_bc_outer_face_tag