Fill the MEKE slot’s cell-centre |Coriolis| from the same
metrics_fill_coriolis path VarMix / EPBL use (handles beta-plane
AND spherical), so beta = |grad f| for the Rhines length is live
when alpha_rhines > 0. The MEKE scalar knobs are copied earlier
by ocean_state_copy_config; this only fills f_centre. Host loop
before enter_data. No-op when MEKE is disabled.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(config_t), | intent(in) | :: | cfg | |||
| type(ocean_state_t), | intent(inout) | :: | ocean_state | |||
| type(hgrid_t), | intent(in) | :: | grid |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=wp), | private, | allocatable | :: | f_centre(:,:) |
subroutine configure_ocean_meke(cfg, ocean_state, grid) !! Fill the MEKE slot's cell-centre |Coriolis| from the same !! `metrics_fill_coriolis` path VarMix / EPBL use (handles beta-plane !! AND spherical), so `beta = |grad f|` for the Rhines length is live !! when `alpha_rhines > 0`. The MEKE scalar knobs are copied earlier !! by `ocean_state_copy_config`; this only fills `f_centre`. Host loop !! before `enter_data`. No-op when MEKE is disabled. type(config_t), intent(in) :: cfg type(ocean_state_t), intent(inout) :: ocean_state type(hgrid_t), intent(in) :: grid real(wp), allocatable :: f_centre(:, :) if (.not. ocean_state%meke%enable) return allocate (f_centre(grid%nx_total, grid%ny_total)) call fill_coriolis_centre(cfg, ocean_state%metrics, grid, f_centre) call ocean_state%meke%set_f_centre(grid, f_centre) deallocate (f_centre) end subroutine configure_ocean_meke