Skip to content

*Updates in FPMix and Stokes Most#283

Merged
alperaltuntas merged 23 commits into
NCAR:dev/ncarfrom
gustavo-marques:fpmix_updates_june24
Sep 9, 2024
Merged

*Updates in FPMix and Stokes Most#283
alperaltuntas merged 23 commits into
NCAR:dev/ncarfrom
gustavo-marques:fpmix_updates_june24

Conversation

@gustavo-marques
Copy link
Copy Markdown
Collaborator

@gustavo-marques gustavo-marques commented Jun 21, 2024

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 CVMix/CVMix-src#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

* Simplify the nonlocal increments in vertFPMix;
* 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.
@gustavo-marques gustavo-marques marked this pull request as draft July 24, 2024 20:28
@gustavo-marques gustavo-marques changed the title Updates in FPMix Updates in FPMix and Stokes Most Jul 24, 2024
@gustavo-marques gustavo-marques changed the title Updates in FPMix and Stokes Most *Updates in FPMix and Stokes Most Jul 31, 2024

!> Compute Stokes Drift components at zbot < ztop <= 0 and at k=0.5*(ztop+zbot) and
!! average components from ztop to zbot <= 0
subroutine Compute_StokesDrift(i ,j, ztop, zbot, uS_i, vS_i, uS_k, vS_k, uSbar, vSbar, waves)
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add units

Comment thread src/parameterizations/vertical/MOM_vert_friction.F90 Outdated
Changed the empirical coefficient for non-local momentum mixing (Cemp_NL)
from a hardcoded value to a user-defined parameter.
@gustavo-marques gustavo-marques marked this pull request as ready for review August 24, 2024 17:43
klindsay28 and others added 13 commits August 28, 2024 16:06
This is done for DIC, ALK, and related tracers.
This mimics uptake and release of these tracers by sea ice.
* Modify NUOPC cap to accept separate glc runoff fluxes
* (1/2) Add separate fluxes for glc runoff. (2/2) Add heat content fields for lrunoff_glc and frunoff_glc.
* fix merge bugs and add more glc runoff diags
* enable glc runoff flux only if use_glc_runoff is present
* add ALLOW_GLC_RUNOFF_DIAGNOSTICS param to control whether to allow separate glacier runoff fluxes.
correct some indentation issues
MARBL: convert salt_flux to tracer flux and add to STF
Updated MAX_LAYER_THICKNESS to use longString for
handling extended path+filename.
dt_pred, G, GV, US, CS%vertvisc_CSp, CS%OBC)
call vertvisc(up, vp, h, forces, visc, dt_pred, CS%OBC, CS%ADp, CS%CDp, G, &
GV, US, CS%vertvisc_CSp, CS%taux_bot, CS%tauy_bot, waves=waves)
if (ASSOCIATED(CS%KPP_CSp)) call KPP_get_BLD(CS%KPP_CSp, hbl, G, US, m_to_BLD_units=GV%m_to_H)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lowercase keywords

"If true, add non-local momentum flux increments and diffuse down the Eulerian gradient.", &
default=.false.)
if (CS%fpmix) then
call get_param(param_file, "MOM", "CEMP_NL", CS%Cemp_NL, &
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MOM?

@alperaltuntas alperaltuntas merged commit 15deea4 into NCAR:dev/ncar Sep 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants