ice_init_apply Subroutine

public pure subroutine ice_init_apply(grid, ms, metrics, ice, par)

Outer shim (outer-shim + flat-impl pattern, mirrors ice_adjust_categories). No-op when the ice slot is not live (is_init gate) or when par%conc_config == ICE_IC_CONC_ZERO (the default-off bit-identity contract — nothing is written, not even sal_ice/enth_ice). ice is intent(inout) (not out): h_lim/mh_lim were filled at init and must survive.

Arguments

Type IntentOptional Attributes Name
type(hgrid_t), intent(in) :: grid
type(multilayer_state_t), intent(in) :: ms

READ-ONLY: only wet_mask is read.

type(ocean_metrics_t), intent(in) :: metrics

READ-ONLY: only geolatT is read ("latitudes" mode).

type(ocean_sea_ice_t), intent(inout) :: ice
type(ice_ic_params_t), intent(in) :: par

Calls

proc~~ice_init_apply~~CallsGraph proc~ice_init_apply ice_init_apply proc~ice_init_apply_impl ice_init_apply_impl proc~ice_init_apply->proc~ice_init_apply_impl proc~ice_enth_from_ts ice_enth_from_ts proc~ice_init_apply_impl->proc~ice_enth_from_ts proc~ice_ic_target_category ice_ic_target_category proc~ice_init_apply_impl->proc~ice_ic_target_category

Called by

proc~~ice_init_apply~~CalledByGraph proc~ice_init_apply ice_init_apply proc~engine_setup engine_setup proc~engine_setup->proc~ice_init_apply 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~driver_validate driver_validate proc~driver_validate->proc~engine_setup 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

Source Code

   pure subroutine ice_init_apply(grid, ms, metrics, ice, par)
      !! Outer shim (outer-shim + flat-impl pattern, mirrors
      !! `ice_adjust_categories`). No-op when the ice slot is not live
      !! (`is_init` gate) or when `par%conc_config == ICE_IC_CONC_ZERO`
      !! (the default-off bit-identity contract — nothing is written, not
      !! even `sal_ice`/`enth_ice`). `ice` is `intent(inout)` (not
      !! `out`): `h_lim`/`mh_lim` were filled at `init` and must survive.
      type(hgrid_t), intent(in) :: grid
      type(multilayer_state_t), intent(in) :: ms
         !! READ-ONLY: only `wet_mask` is read.
      type(ocean_metrics_t), intent(in) :: metrics
         !! READ-ONLY: only `geolatT` is read (`"latitudes"` mode).
      type(ocean_sea_ice_t), intent(inout) :: ice
      type(ice_ic_params_t), intent(in) :: par

      if (.not. ice%is_init) return
      if (par%conc_config == ICE_IC_CONC_ZERO) return

      call ice_init_apply_impl(ms%wet_mask, metrics%geolatT, &
                               ice%part_size, ice%m_ice, ice%m_snow, &
                               ice%enth_ice, ice%enth_snow, ice%sal_ice, &
                               ice%mh_lim, &
                               par%conc_config, par%conc, par%h_ice, par%h_snow, &
                               par%t_ice, par%s_ice, par%arctic_edge, par%antarctic_edge, &
                               ice%ncat, ice%nk_ice, grid%nx_total, grid%ny_total)
   end subroutine ice_init_apply