Outer shim (outer-shim + flat-impl pattern). No-op when the ice
slot is not live (is_init gate) or when ice%ncat == 1 (the
legacy-mode bit-identity contract — see module docstring). No
dt/eos needed: this is a pure area/mass reshuffle, no
thermodynamics.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(hgrid_t), | intent(in) | :: | grid | |||
| type(multilayer_state_t), | intent(in) | :: | ms |
READ-ONLY: only |
||
| type(ocean_sea_ice_t), | intent(inout) | :: | ice |
pure subroutine ice_adjust_categories(grid, ms, ice) !! Outer shim (outer-shim + flat-impl pattern). No-op when the ice !! slot is not live (`is_init` gate) or when `ice%ncat == 1` (the !! legacy-mode bit-identity contract — see module docstring). No !! `dt`/`eos` needed: this is a pure area/mass reshuffle, no !! thermodynamics. type(hgrid_t), intent(in) :: grid type(multilayer_state_t), intent(in) :: ms !! READ-ONLY: only `wet_mask` is read (the gate). type(ocean_sea_ice_t), intent(inout) :: ice if (.not. ice%is_init) return if (ice%ncat == 1) return call ice_adjust_categories_impl(ms%wet_mask, ice%part_size, ice%m_ice, ice%m_snow, & ice%enth_ice, ice%enth_snow, ice%sal_ice, ice%mh_lim, & grid%nghost, ice%ncat, ice%nk_ice, & grid%nx_total, grid%ny_total) end subroutine ice_adjust_categories