Thin dispatcher: call meke_step only when the MEKE slot is present
AND enabled, forwarding the (also-optional) VarMix + wavespeed slots
so the feedback seam + length scales engage when those are on.
meke_step itself no-ops on enable=.false.; this guard avoids the
call (and the present-propagation noise) when the slot is absent.
hv%ke_diss (the lateral-viscosity KE dissipation rate) is forwarded
for the frictional source; it is 0 unless hv%compute_ke_diss is set
(and meke%frcoeff<0 ignores it) ⇒ inert by default.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(hgrid_t), | intent(in) | :: | grid | |||
| type(ocean_metrics_t), | intent(in) | :: | metrics | |||
| type(ocean_gm_t), | intent(in) | :: | gm | |||
| type(ocean_varmix_t), | intent(inout), | optional | :: | varmix | ||
| type(ocean_wave_speed_t), | intent(in), | optional | :: | wavespeed | ||
| type(ocean_horizontal_viscosity_t), | intent(in) | :: | hv | |||
| type(multilayer_state_t), | intent(in) | :: | ms | |||
| real(kind=wp), | intent(in) | :: | dt | |||
| type(ocean_meke_t), | intent(inout), | optional | :: | meke |
subroutine run_meke_step(grid, metrics, gm, varmix, wavespeed, hv, ms, dt, meke) !! Thin dispatcher: call `meke_step` only when the MEKE slot is present !! AND enabled, forwarding the (also-optional) VarMix + wavespeed slots !! so the feedback seam + length scales engage when those are on. !! `meke_step` itself no-ops on `enable=.false.`; this guard avoids the !! call (and the present-propagation noise) when the slot is absent. !! `hv%ke_diss` (the lateral-viscosity KE dissipation rate) is forwarded !! for the frictional source; it is 0 unless `hv%compute_ke_diss` is set !! (and `meke%frcoeff<0` ignores it) ⇒ inert by default. type(hgrid_t), intent(in) :: grid type(ocean_metrics_t), intent(in) :: metrics type(ocean_gm_t), intent(in) :: gm type(ocean_varmix_t), intent(inout), optional :: varmix type(ocean_wave_speed_t), intent(in), optional :: wavespeed type(ocean_horizontal_viscosity_t), intent(in) :: hv type(multilayer_state_t), intent(in) :: ms real(wp), intent(in) :: dt type(ocean_meke_t), intent(inout), optional :: meke if (.not. present(meke)) return if (.not. meke%enable) return call meke_step(grid, metrics, meke, gm, varmix, wavespeed, ms, dt, & ke_diss_ext=hv%ke_diss) end subroutine run_meke_step