EVP physical + numerical parameters (SIS2 SIS_C_dyn_CS subset).
Passed intent(in) into the core; every scalar is hoisted to a
local before the substep loop (no derived-type deref inside a
do concurrent). Defaults + meanings mirror the &ocean_ice_nml
block in rdb_config.F90 (the config is the authoritative knob
set; keep the two in sync).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | public | :: | a_face_stress | = | .false. |
PR 62: weight the atmospheric stress AND the ice-ocean drag in
the momentum balance by the face ice concentration |
|
| real(kind=wp), | public | :: | c0 | = | 20.0_wp |
SIS2 |
|
| real(kind=wp), | public | :: | cdw | = | 3.24e-3_wp |
SIS2 |
|
| real(kind=wp), | public | :: | cfl_trunc | = | 0.0_wp |
PR 36: SIS2 |
|
| logical, | public | :: | cfl_trunc_dyn_its | = | .false. |
PR 36: SIS2 |
|
| real(kind=wp), | public | :: | del_sh_min_scale | = | 2.0_wp |
SIS2 |
|
| real(kind=wp), | public | :: | ec | = | 2.0_wp |
SIS2 |
|
| integer, | public | :: | evp_sub_steps | = | 432 |
SIS2 |
|
| real(kind=wp), | public | :: | p0 | = | 2.75e4_wp |
SIS2 |
|
| logical, | public | :: | project_ci | = | .false. |
PR 36: SIS2 |
|
| real(kind=wp), | public | :: | rho_ocean | = | 1030.0_wp |
SIS2 |
|
| real(kind=wp), | public | :: | tdamp | = | -0.2_wp |
SIS2 |
type :: ice_evp_params_t !! EVP physical + numerical parameters (SIS2 `SIS_C_dyn_CS` subset). !! Passed `intent(in)` into the core; every scalar is hoisted to a !! local before the substep loop (no derived-type deref inside a !! `do concurrent`). Defaults + meanings mirror the `&ocean_ice_nml` !! block in `rdb_config.F90` (the config is the authoritative knob !! set; keep the two in sync). real(wp) :: p0 = 2.75e4_wp !! SIS2 `ICE_STRENGTH_PSTAR` — ice-strength pressure constant [Pa]. real(wp) :: c0 = 20.0_wp !! SIS2 `ICE_STRENGTH_CSTAR` — ice-strength exponent constant [nondim]. real(wp) :: ec = 2.0_wp !! SIS2 `ICE_YIELD_ELLIPTICITY` — yield-curve axis ratio [nondim]. !! 0 => cavitating-fluid rheology (`str_t`/`str_s` stay exactly 0). real(wp) :: cdw = 3.24e-3_wp !! SIS2 `ICE_CDRAG_WATER` — ice-ocean drag coefficient [nondim]. real(wp) :: rho_ocean = 1030.0_wp !! SIS2 `RHO_OCEAN` — ice-drag reference density [kg/m^3]. !! Deliberately independent of the ocean's `rho0` (usually 1035). real(wp) :: del_sh_min_scale = 2.0_wp !! SIS2 `ICE_DEL_SH_MIN_SCALE` — viscosity-floor scale [nondim]. real(wp) :: tdamp = -0.2_wp !! SIS2 `ICE_TDAMP_ELASTIC` — elastic damping timescale selector. !! `> 0` => seconds; `== 0` => `max(0.2*dt_slow, 3*dt)`; `< 0` => !! the special case `max(|tdamp|*dt_slow, 3*dt)` (i.e. `|tdamp|` is !! a fraction of the slow step). Sign-free — no positivity guard. integer :: evp_sub_steps = 432 !! SIS2 `NSTEPS_DYN` — EVP subcycles per slow (outer) step. logical :: a_face_stress = .false. !! PR 62: weight the atmospheric stress AND the ice-ocean drag in !! the momentum balance by the face ice concentration `a_u` !! (`&ocean_ice_nml a_face_stress`). Default off ⇒ byte-identical. real(wp) :: cfl_trunc = 0.0_wp !! PR 36: SIS2 `CFL_TRUNCATE` (SIS2 default 0.5). Transport-CFL !! ceiling on the final ice velocity; `0` disables the clip. !! Type-level default is the bit-identity mechanism for every !! test call site that does not set it. logical :: cfl_trunc_dyn_its = .false. !! PR 36: SIS2 `CFL_TRUNC_DYN_ITS` (SIS2 default `.false.`, matches). !! Also clip at the bottom of every EVP subcycle. logical :: project_ci = .false. !! PR 36: SIS2 `PROJECT_ICE_CONCENTRATION` (SIS2 default `.true.`). !! Project `ci` forward along the current divergence each subcycle !! and recompute `pres_mice` from it. end type ice_evp_params_t