dev/ncar_240909
gustavo-marques
tagged this
09 Sep 05:21
This PR revises the formulation of the legacy K-profile parameterization (KPP) ocean boundary layer scheme. It incorporates: 1. a non-local momentum flux—the Flux-profile parameterization (`FPMIX`); when the local shear is not aligned with the wind, this scheme adds a non-local momentum flux in the direction of the wind; and 2. mixing with and without waves following the Monin-Obukhov Similarity Theory expanded to include Stokes drift (`STOKES_MOST`). This option provides the transition from waveless to ocean surface waves in any stage of growth or decay. **Summary:** * Uncomment omega w2x entries; * Simplify the nonlocal increments in `vertFPMix`; * In the call to `CVmix_kpp_compute_unresolved_shear`, passes the 2D surface buoyancy flux (`surfBuoyFlux2`) instead of the 1D version (`surfBuoyFlux`), which is preferable. **This is answer changing**; * Remove `uold` and `vold` diagnostics. These were used in an alternative time-stepping scheme that is now obsolete; * Pass boundary layer depths to the RK2 and add consistency check to make sure `FPMix` is always used with `SPLIT`; * Add the capability to mix down the Eulerian gradient instead of the Lagrangian; * Make a minimum set of `FPMix` diagnostics available. This PR relies on https://github.com/CVMix/CVMix-src/pull/94/. New diagnostics: ``` "StokesXI" ! modules: {ocean_model,ocean_model_d2} ! long_name: Stokes Similarity Parameter ! units: nondim ! cell_methods: xh:mean yh:mean area:mean "Lam2" ! modules: {ocean_model,ocean_model_d2} ! long_name: Ustk0_ustar ! units: nondim ! cell_methods: xh:mean yh:mean area:mean "uE_h" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: x-zonal Eulerian ! units: m s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {uE_h,uE_h_xyave} "vE_h" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: y-merid Eulerian ! units: m s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {vE_h,vE_h_xyave} "uInc_h" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: x-zonal Eulerian ! units: m s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {uInc_h,uInc_h_xyave} "vInc_h" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: x-zonal Eulerian ! units: m s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {vInc_h,vInc_h_xyave} "uStk" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: x-FP du increment ! units: m s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {uStk,uStk_xyave} "vStk" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: y-FP dv increment ! units: m s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {vStk,vStk_xyave} "Omega_tau2s" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: Stress direction from shear ! units: radians ! cell_methods: xh:mean yh:mean zi:point area:mean ! variants: {Omega_tau2s,Omega_tau2s_xyave} "Omega_tau2w" ! modules: {ocean_model,ocean_model_z,ocean_model_rho2,ocean_model_d2,ocean_model_z_d2,ocean_model_rho2_d2} ! long_name: Stress direction from wind ! units: radians ! cell_methods: xh:mean yh:mean zi:point area:mean ! variants: {Omega_tau2w,Omega_tau2w_xyave} "uStk0" ! modules: {ocean_model,ocean_model_d2} ! long_name: Zonal Surface Stokes ! units: m s-1 ! cell_methods: xh:mean yh:mean area:mean "vStk0" ! modules: {ocean_model,ocean_model_d2} ! long_name: Merid Surface Stokes ! units: m s-1 ! cell_methods: xh:mean yh:mean area:mean ```