PUBLIC INTERFACE ~ PUBLIC ROUTINES ~ NAMELIST

Module ocean_submesoscale_mod

Contact:  S. M. Griffies
Reviewers: 
Change History: WebCVS Log


OVERVIEW

This module computes a streamfunction within the upper surface boundary layer, and applies this streamfunction to all tracers. It also optionally applies horizontal diffusion in the surface layer as determined by the strength of the streamfunction.

This module computes a streamfunction within the upper surface boundary layer, and applies this streamfunction to all tracers. It also optionally applies horizontal diffusion in the surface layer as determined by the strength of the streamfunction.


OTHER MODULES USED

        constants_mod
diag_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
time_manager_mod
ocean_domains_mod
ocean_operators_mod
ocean_parameters_mod
ocean_tracer_diag_mod
ocean_tracer_util_mod
ocean_types_mod
ocean_util_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_submesoscale_init:
submeso_restrat:
compute_bldepth:
tracer_derivs:
salinity_derivs:
compute_psi:
compute_psi_legacy:
compute_transport:
compute_submeso_skewsion:
compute_flux_x:
compute_flux_y:
compute_flux_z:
compute_submeso_upwind:
compute_submeso_sweby:
compute_submeso_diffusion:
maximum_bottom_w_general:
transport_on_nrho_submeso:
transport_on_nrho_submeso_adv:
watermass_diag_init:
watermass_diag:
watermass_diag_diffusion:


PUBLIC ROUTINES

  1. ocean_submesoscale_init

    DESCRIPTION
    Initialization for the ocean_submesoscale module.


  2. submeso_restrat

    DESCRIPTION
    This routine computes a thickness and density weighted time tendency for each tracer, arising from the effects of parameterized submesoscale eddies acting in the surface mixed layer.


  3. compute_bldepth

    DESCRIPTION
    Compute the boundary layer depth and kblt.


  4. tracer_derivs

    DESCRIPTION
    Compute the tracer derivatives, with the lateral derivatives computed along constant k-level.


  5. salinity_derivs

    DESCRIPTION
    Compute the density-salinity derivatives, with lateral derivative computed on constant k-level.


  6. compute_psi

    DESCRIPTION
    Compute the vector streamfunction from parameterized submesoscale restratification. Units of psi are m^2/sec psix is defined on north face of tracer cell for jq=0,1. psiy is defined on east face of tracer cell for ip=0,1. NOTE: the mpp updates for psix and psiy are treated as a scalar, whereas they are actually components to a pseudo-vector. Some further thought is required for the tripolar grid. We ignore this detail in the present implementation.


  7. compute_psi_legacy

    DESCRIPTION
    Compute the vector streamfunction Units of psi are m^2/sec If computing skewsion tendency, then need psi at depth_zt. If computing advection tendency, then need psi at depth_zwt. Jan2012: This scheme has problems with the limiters and smoothers. These problems become particularly egregious when trying to compute an advective flux rather than a skew flux. This routine is retained only for legacy purposes. Stephen.Griffies


  8. compute_transport

    DESCRIPTION
    Compute the mass transport from submeso. This routine is a diagnostic routine if skewsion, and part of the calculation of the eddy-induced velocity if advective approach used. Comments on the scheme: 1/ compute vertical component from convergence of horizontal, just as for the vertical velocity component for the Eulerian transport. 2/ wrho_bt_submeso(:,:,k=0) = 0.0 by definition 3/ expand the BDX_ET and BDY_NT operators for efficiency. 4/ mask to zero those regions where the horizontal divergence vanishes, as these are regions beneath the submeso boundary layer. Base the mask on horz divergence rather than kblt(i,j), since any smoothing performed to uhrho_et_submeso and vhrho_nt_submeso will modify the region of nonzero submesoscale advection so that it reaches potentially to below kblt.


  9. compute_submeso_skewsion

    DESCRIPTION
    Compute tendency from submeso skewsion.


  10. compute_flux_x

    DESCRIPTION
    Subroutine computes the zonal submesoscale tracer skew flux component. fx has physical dimensions (area*diffusivity*density*tracer gradient)


  11. compute_flux_y

    DESCRIPTION
    Subroutine computes the meridional submesoscale tracer skew flux component. fy has physical dimensions (area*diffusivity*density*tracer gradient)


  12. compute_flux_z

    DESCRIPTION
    Subroutine computes the vertical submeso tracer skew flux component. Surface and bottom boundary condition fz(k=0)=fz(k=kmt(i,j))=0 fz has physical dimensions (density*diffusivity*tracer gradient)


  13. compute_submeso_upwind

    DESCRIPTION
    First order upwind to compute the tendency from submeso advection. Although this method adds diffusion, some of the mixing is physically relevant. Absent this mixing, the submesoscale parameterization is incomplete. The submesoscale parameterization is, afterall, active only in the mixed layer, where there is lot of physical mixing. Use of first order upwind ensures that the tendency computed from submesoscale parameterization will not, in principle, introduce extrema. However, there remain some issues with large tendencies appearing near boundaries that may compromise this monotonicity property. Apply masks so that there is no flux leaving cell next to bottom.


  14. compute_submeso_sweby

    DESCRIPTION
    Sweby scheme to compute the tendency from submeso advection. Algorithm taken after advect_tracer_sweby_all in the module ocean_tracers/ocean_tracer_advect.F90. Jan 2012: Stephen.Griffies This scheme has known bugs; it is not meant for general use.


  15. compute_submeso_diffusion

    DESCRIPTION
    Compute tendency from submeso horizontal diffusion.


  16. maximum_bottom_w_general

    DESCRIPTION
    Compute maximum vertical velocity from submeso.


  17. transport_on_nrho_submeso

    DESCRIPTION
    Classify horizontal submeso mass transport according to neutral density classes. NOTE: This diagnostic works with transport integrated from bottom to a particular cell depth. To get transport_on_rho_submeso, a remapping is performed, rather than the binning done for transport_on_nrho_submeso_adv. This is the same algorithm as used for GM skew fluxes on rho surfaces. Caveat: Since the submeso scheme operates only in the mixed layer, there are difficulties mapping this transport to neutral density layers. The user should be mindful of the problems with this remapping. An alternative that may be more suitable is to use Ferret to remap the time mean submeso transport to the time mean neutral density surfaces. There are missing correlations, but for many purposes, the Ferret remapping may be preferable. Briefly, the Ferret command is the following: let ty_trans_nrho_submeso_new = ZAXREPLACE(TY_TRANS_SUBMESO,NEUTRAL_RHO,TY_TRANS_NRHO) where TY_TRANS_SUBMESO is the level-space transport NEUTRAL_RHO is the level space version of the neutral density TY_TRANS_NRHO is any density space field whose vertical coordinates are accessed for the remapping.


  18. transport_on_nrho_submeso_adv

    DESCRIPTION
    Classify horizontal transport according to neutral density classes. Based on transport_on_nrho in ocean_diag/ocean_adv_diag.F90.


  19. watermass_diag_init

    DESCRIPTION
    Initialization of watermass diagnostic output files.


  20. watermass_diag

    DESCRIPTION
    Diagnose effects from submesoscale on watermass transformation.


  21. watermass_diag_diffusion

    DESCRIPTION
    Diagnose effects from submesoscale horizontal diffusion on watermass transformation.



NAMELIST

&ocean_submesoscale_nml

use_this_module=
Must be .true. to use this module.
[logical]
debug_this_module
For debugging purposes.
[logical]
diag_step
Number of time steps between computing max bottom value for wrho_bt_submeso. Default diag_step=1200.
[integer]
submeso_skew_flux
For computing the tendency as convergence of skew flux. This is the recommended method. Default submeso_skew_flux=.true.
[logical]
submeso_advect_flux
For computing the tendency as convergence of advective flux. This approach uses either a flux limited sweby advection or first order upwind, both of which ensure that the resulting tendency will not create extrema in the tracer field. Default submeso_advect_flux=.false.
[logical]
submeso_advect_upwind
For computing the tendency as convergence of a first order advective flux. Default submeso_advect_upwind=.true.
[logical]
submeso_advect_sweby
For computing the tendency as convergence of a sweby advective flux. This routine is incomplete and has a bug. Default submeso_advect_sweby=.false.
[logical]
submeso_advect_limit
For limiting the value of the horizontal transports to be less than a velocity scale set by limit_psi_velocity_scale. This option is not needed if limit_psi=.true. Default submeso_advect_limit=.false.
[logical]
submeso_advect_zero_bdy
For removing the advective transport next to boundaries. This is useful since computation of the advective transport velocity components can be problematic next to boundaries. Default submeso_advect_zero_bdy=.false.
[logical]
smooth_advect_transport
For doing a horizontal 1-2-1 smoothing on the diagnosed uhrho_et_submeso and vhrho_nt_submeso fields. Default smooth_advect_transport=.true.
[logical]
smooth_advect_transport_num
Number of iterations for the smooothing of horizontal transport. Default smooth_advect_transport_num=2.
[integer]
submeso_diag_advect_transport
For diagnosing the advective mass transport even when using the skew approach. Default submeso_diag_advect_transport=.false.
[logical]
submeso_diffusion
For computing a horizontal diffusive flux in the boundary layer as determined by the strength of the vector streamfunction. Default submeso_diffusion=.false.
[logical]
submeso_diffusion_biharmonic
The default submeso diffusion is Laplacian. However, one may wish to use a biharmonic mixing operator instead. Default submeso_diffusion_biharmonic=.false.
[logical]
submeso_diffusion_scale
A dimensionless scaling to be used for scaling up or down the effects from horizontal diffusion in the boundary layer. Default submeso_diffusion_scale=1.0.
[real, units: dimensionless]
use_hblt_constant
For running with a constant boundary layer depth. This for the case when not using a realistic mixed layer scheme. Default use_hblt_constant=.false.
[logical]
constant_hblt
The boundary layer depth for the case when use_hblt_constant=.true. Default constant_hblt=100.0.
[real, units: metre]
use_hblt_equal_mld
For using the diagnosed mld as the hblt for submeso. This is useful for those test models that do not have a mixed layer scheme enabled, such as KPP, where the mixed layer scheme provides a boundary layer depth. In this case, it is sensible to employ the diagnosed mixed layer depth for the submeso scheme. Additionally, in general it is more physical to use the mld than the KPP hblt as the depth over which the submesoscale eddies act. Hence, default use_hblt_equal_mld=.true.
[logical]
min_kblt
The minimum number of vertical cells in the surface boundary layer that are required in order to compute the submesoscale streamfunction. Default min_kblt=4. Need at least three to fit a parabola with zero streamfunction at the top and bottom of the boundary layer.
[integer, units: dimensionless]
minimum_hblt
For setting a floor to the hblt used for submesoscale scheme. Default minimum_hblt=0.0.
[real, units: metre]
smooth_hblt
For smoothing on the submeso bldepth field. This is useful since the bldepth obtained from KPP or diagnosed mld can have some grid noise. Default smooth_hblt=.false. since this agrees with legacy. Note that this scheme fails to reproduce across processor layout, so it remains broken.
[logical]
smooth_hblt_num
Number of iterations for the smooothing of bldepth. Default smooth_hblt_num=1.
[integer]
use_psi_legacy
For computing psi using older legacy methods. These methods are not ideal, and can be problematic depending on nml settings for the limiters and smoothers. This option is retained only for legacy purposes. Default use_psi_legacy=.false.
[logical]
smooth_psi
For doing a horizontal 1-2-1 smoothing on the psix_horz and psiy_horz fields. Default smooth_psi=.true.
[logical]
smooth_psi_num
Number of iterations for the smooothing of psi. Default smooth_psi_num=2.
[integer]
limit_psi
For limiting the magnitude of psi in order to reduce possibility of model crashes. Rescales the full psi to maintain vertical structure but to keep overall magnitude within bounds. Default limit_psi=.false.
[logical]
limit_psi_velocity_scale
Velocity scale used to limit the value of psi when limit_psi=.true. Default limit_psi_velocity_scale=5.0
[real, units: metre/sec]
submeso_limit_flux
For limiting the fluxes arising from submeso scheme, according to tmask_limit. When reach a point where tmask_limit=1.0, then set the submeso flux for this cell to zero. Default submeso_limit_flux=.true.
[logical]
coefficient_ce
The dimensionless coefficient from the Fox-Kemper etal scheme. They recommend setting coefficient_ce between 0.06 and 0.08. Default coefficient_ce=0.07.
[real, units: dimensionless]
time_constant
Timescale to mix momentum across the mixed layer. Default time_constant=86400.0 = 1day.
[real, units: seconds]
front_length_const
Take constant horizontal length scale of submesoscale front. Default front_length_const=5e3.
[real, units: metre]
front_length_deform_radius
To compute the front length using the mixed layer deformation radius. Default front_length_deform_radius=.true. Note, will have a floor on the variable front length set by the nml setting for front_length_const.
[logical]


REFERENCES

  1. Fox-Kemper, Ferrari, and Hallberg 2008: Parameterization of mixed layer eddies. Part I: theory and diagnosis Journal of Physical Oceanography, vol. 38, pages 1145-1165.
  2. Fox-Kemper, Danabasoglu, Ferrari, and Hallberg 2008: Parameterizing submesoscale physics in global models. Clivar Exchanges, vol 13, no.1, Jan2008. pages 3-5.
  3. Fox-Kemper, Danabasoglu, Ferrari, Griffies, Hallberg, Holland, Peacock, Samuels, 2011: Parameterization of Mixed Layer Eddies. III: Global Implementation and Impact on Ocean Climate Simulations, Ocean Modelling, vol. 39, pages 61-78.
  4. Griffies, 2012: Elements of MOM


top