register_porous Subroutine

private subroutine register_porous(cfg, schema)

&ocean_porous (Adcroft 2013 porous barriers: subgrid sill/strait narrowing of the C-grid transport face widths).

Arguments

Type IntentOptional Attributes Name
type(config_t), intent(in), target :: cfg
type(nml_schema_t), intent(inout) :: schema

Calls

proc~~register_porous~~CallsGraph proc~register_porous register_porous proc~group_add nml_group_t%group_add proc~register_porous->proc~group_add proc~nml_enum nml_enum proc~register_porous->proc~nml_enum proc~nml_logical nml_logical proc~register_porous->proc~nml_logical proc~nml_real nml_real proc~register_porous->proc~nml_real proc~schema_add_group nml_schema_t%schema_add_group proc~register_porous->proc~schema_add_group error error proc~group_add->error proc~lower lower proc~group_add->proc~lower proc~schema_add_group->error proc~schema_add_group->proc~lower proc~move_group move_group proc~schema_add_group->proc~move_group

Called by

proc~~register_porous~~CalledByGraph proc~register_porous register_porous proc~build_rdb_schema build_rdb_schema proc~build_rdb_schema->proc~register_porous proc~read_config_from_string_impl read_config_from_string_impl proc~read_config_from_string_impl->proc~build_rdb_schema proc~read_config_impl read_config_impl proc~read_config_impl->proc~build_rdb_schema proc~read_config read_config proc~read_config->proc~read_config_impl proc~read_config_from_string read_config_from_string proc~read_config_from_string->proc~read_config_from_string_impl proc~build_pending_handle build_pending_handle proc~build_pending_handle->proc~read_config_from_string proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~build_pending_handle proc~rdb_ocean_create_pending rdb_ocean_create_pending proc~rdb_ocean_create_pending->proc~build_pending_handle

Variables

Type Visibility Attributes Name Initial
type(nml_group_t), private :: g
logical, private, pointer :: pl
real(kind=wp), private, pointer :: pr
character(len=:), private, pointer :: ps

Source Code

   subroutine register_porous(cfg, schema)
      !! `&ocean_porous` (Adcroft 2013 porous barriers: subgrid
      !! sill/strait narrowing of the C-grid transport face widths).
      type(config_t), target, intent(in) :: cfg
      type(nml_schema_t), intent(inout) :: schema
      type(nml_group_t) :: g
      logical, pointer :: pl
      real(wp), pointer :: pr
      character(len=:), pointer :: ps

      g%name = "ocean_porous"
      g%doc = "Porous barriers: subgrid sill/strait blocking of the C-grid face widths."

      pl => cfg%ocean%porous%enable
      call g%add(nml_logical("enable", pl, &
                             "Master switch (ocean multilayer path only; "// &
                             "fails loud with bt_halo > 0 or wetdry enable)"))
      ps => cfg%ocean%porous%source
      call g%add(nml_enum("source", ps, &
                          "Along-face bathymetry-statistics source "// &
                          "('resolved' is a wet-gated proxy; 'file' is deferred)", &
                          allowed=[character(len=15) :: "resolved", "file"]))
      ps => cfg%ocean%porous%eta_interp
      call g%add(nml_enum("eta_interp", ps, &
                          "Interface height at the velocity point "// &
                          "(PORBAR_ETA_INTERP); 'max' is the LEAST blocking, "// &
                          "'min' the most", &
                          allowed=[character(len=15) :: "max", "min", &
                                   "arithmetic", "harmonic"]))
      pr => cfg%ocean%porous%masking_depth
      call g%add(nml_real("masking_depth", pr, &
                          "Faces shallower than this stay fully open "// &
                          "(PORBAR_MASKING_DEPTH, positive below the surface)", &
                          units="m"))

      call schema%add_group(g)
   end subroutine register_porous