The gravity of the free-surface term the slow layer PGF CARRIES,
i.e. −∂⟨PGF⟩/∂(∇η) for a uniform-density column (m/s²):
M(nz) ≡ 0, p_edge(nz+1) = 0, surface-relative z), so they
carry NO −g·∇η at all — 0. Their layer PGF is purely
baroclinic.pa(nz+1) = ρ_ref·g·η_geo
(MOM6 PressureForce_FV) and the MOM6 GFS_scale correction
removes (1 − gfs_scale)·g·ρ_surf/ρ₀·∇η — so, with the
surface density at ρ_ref, gfs_scale·g·ρ_ref/ρ₀.−g_FS·∇η by construction — g_FS.This is what the barotropic substep’s own −g_bt·∇η duplicates,
and therefore the only part of ⟨PGF⟩ the fast forcing may shed
(set_fast_forcing_eta_pf).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(ocean_pressure_force_t), | intent(in) | :: | pgf |
pure function pgf_free_surface_gravity(pgf) result(g_pf) !! The gravity of the free-surface term the slow layer PGF CARRIES, !! i.e. `−∂⟨PGF⟩/∂(∇η)` for a uniform-density column (m/s²): !! !! * MONT, FV_LITE, FV_WRIGHT are built from the FREE SURFACE down !! (`M(nz) ≡ 0`, `p_edge(nz+1) = 0`, surface-relative `z`), so they !! carry NO `−g·∇η` at all — 0. Their layer PGF is purely !! baroclinic. !! * FV_MOM6 closes its anomaly stack with `pa(nz+1) = ρ_ref·g·η_geo` !! (MOM6 `PressureForce_FV`) and the MOM6 `GFS_scale` correction !! removes `(1 − gfs_scale)·g·ρ_surf/ρ₀·∇η` — so, with the !! surface density at `ρ_ref`, `gfs_scale·g·ρ_ref/ρ₀`. !! * GPRIME's top layer is `−g_FS·∇η` by construction — `g_FS`. !! !! This is what the barotropic substep's own `−g_bt·∇η` duplicates, !! and therefore the only part of `⟨PGF⟩` the fast forcing may shed !! (`set_fast_forcing_eta_pf`). type(ocean_pressure_force_t), intent(in) :: pgf real(wp) :: g_pf select case (pgf%variant) case (OPGF_VARIANT_FV_MOM6) g_pf = pgf%gfs_scale*GRAVITY*pgf%rho_ref/pgf%rho0 case (OPGF_VARIANT_GPRIME) g_pf = pgf%gprime_gfs case default g_pf = 0.0_wp end select end function pgf_free_surface_gravity