PUBLIC INTERFACE ~ PUBLIC DATA ~ PUBLIC ROUTINES ~ NAMELIST ~ DIAGNOSTIC FIELDS ~ ERROR MESSAGES ~ REFERENCES ~ NOTES

Module ocean_nphysicsB_mod

Contact:  Stephen M. Griffies Russell Fiedler
Reviewers: 
Change History: WebCVS Log


OVERVIEW

Thickness weighted and density weighted time tendency for tracer from Laplacian neutral diffusion + Laplacian GM skew-diffusion.

This module computes the cell thickness weighted and density weighted tracer tendency from small angle Laplacian neutral diffusion plus Laplacian GM skew-diffusion. The methods here differ from ocean_nphysicsA in the treatment of fluxes in the boundary regions. This module is experimental, and should be used with caution.


OTHER MODULES USED

            constants_mod
diag_manager_mod
fms_mod
fms_io_mod
mpp_domains_mod
mpp_mod
time_manager_mod
ocean_domains_mod
ocean_nphysics_util_mod
ocean_operators_mod
ocean_parameters_mod
ocean_sigma_transport_mod
ocean_types_mod
ocean_util_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_nphysicsB_init:
nphysicsB:
neutral_blayer:
fz_terms:
fx_flux:
fy_flux:
fz_flux:
neutral_chksums:
ocean_nphysicsB_restart:
ocean_nphysicsB_end:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_nphysicsB_init

    DESCRIPTION
    Initialize the neutral physics module by registering fields for diagnostic output and performing some numerical checks to see that namelist settings are appropriate.


  2. nphysicsB

    DESCRIPTION
    This function computes the thickness weighted and density weighted time tendency for tracer from neutral physics. Full discussion and details are provided by Griffies (2004,2005).

    Here is a brief summary of the temporal treatment.

    ---How the neutral diffusive flux components are computed:

    The vertical flux component is split into diagonal (3,3) and off-diagonal (3,1) and (3,2) terms. The off-diagonal (3,1) and (3,2) terms are included explicitly in time. The main contribution from the (3,3) term to the time tendency is included implicitly in time along with the usual contribution from diapycnal processes (vertical mixing schemes). This is the K33_implicit term. This approach is necessary with high vertical resolution, as noted by Cox (1987). However, splitting the vertical flux into an implicit and explicit piece compromises the integrity of the vertical flux component (see Griffies et al. 1998). So to minimize the disparity engendered by this split, the portion of K33 that can be stably included explicitly in time is computed along with the (3,1) and (3,2) terms.

    All other terms in the mixing tensor are included explicitly in time using a forward time step as required for temporal stability of numerical diffusive processes.



  3. neutral_blayer

    DESCRIPTION
    This subroutine computes the "neutral boundary layers" based on the formulation of Ferrari and McWilliams (2006). See full details and discussion in Elements of mom4p1 by Griffies (2006).

    Five vertical regions are identified by Ferrari and McWilliams: We simplify these regimes by melding the turbulent and transition regimes into an overall neutral boundary layer regime, within which the streamfunction is linearly tapers to zero moving towards the boundary. We also ignore the bottom regimes, as these are poorly resolved in most models, and the neutral physics fluxes are typically small at the bottom.

    (1) Surface turbulent region: Depth ("h" in Ferrari and McWilliams notation) dominated by 3d turbulent processes. This depth is taken from surf_blthick, as set by the KPP scheme or another mixed layer scheme. A minimum is set as surf_turb_thick_min and is specified as a nml parameter in ocean_nphysicsB_nml.

    In order to use a low frequency version of the boundary layer thickness, we damp its evolution with a damping time scale neutral_damping_time (days).

    In the code, "h_surf"= surf_turb_thick

    (2) Surface transition region: Thickness ("D" in Ferrari and McWilliams notation) between the turbulent surface boundary layer and the interior. This transition layer thickness is determined by the product of the neutral slope and first baroclinic Rossby radius. This specification is ad hoc, and more fundamental theories are welcome.

    In the code, "D_surf"= surf_trans_thick

    Within a "boundary layer" region set by the sum of surf_turb_thick plus surf_trans_thick, the eddy induced velocity is assumed to have zero vertical shear, which means the quasi-Stokes streamfunction is linear with depth. The neutral diffusive fluxes are reduced to horizontal downgradient diffusion, with "horizontal" defined according to surfaces of constant vertical coordinate.

    (3) Interior region: Where neutral diffusion and GM skew-diffusion are taken from their unmodified form.

    Only use the 31 and 32 triads for this computation since the 13 and 23 triads require extra slope calculations, and so will add lots of computational cost. It is felt that the 31 and 32 triads are sufficient for this calculation, in a similar manner that they are used for the calculation of the non-constant diffusivities.

    Scheme coded for mom4p1 by Stephen.Griffies@noaa.gov Version: March2006 Simplified version: June2008



  4. fz_terms

    DESCRIPTION
    Subroutine computes the tracer independent pieces of the vertical flux component. As a result of this routine, Array tensor_31 = x-diffusivity*slope (m^2/sec) for fz Array tensor_32 = y-diffusivity*slope (m^2/sec) for fz

    K33 is the (3,3) term in small angle Redi diffusion tensor. It is broken into an explicit in time piece and implicit in time piece. It is weighted by density for non-Boussinesq and rho0 for Boussinesq.

    K33 has units (kg/m^3)*m^2/sec.

    Also will compute the squared Eady growth rate, with the maximum slope contributing to this growth rate set by smax.


  5. fx_flux

    DESCRIPTION
    Subroutine computes the zonal neutral physics tracer flux component. Compute this component for all tracers at level k.

    fx has physical dimensions (area*diffusivity*density*tracer gradient)



  6. fy_flux

    DESCRIPTION
    Subroutine computes the meridional neutral physics tracer flux component. Compute this component for all tracers at level k.

    fy has physical dimensions (area*diffusivity*density*tracer gradient)



  7. fz_flux

    DESCRIPTION
    Subroutine computes the vertical neutral physics tracer flux component. Compute this component for all tracers at level k. Surface and bottom boundary condition fz(k=0)=fz(k=kmt(i,j))=0

    fz has physical dimensions (density*diffusivity*tracer gradient)



  8. neutral_chksums

    DESCRIPTION
    Write some checksums.


  9. ocean_nphysicsB_restart

    DESCRIPTION
    Write out restart files registered through register_restart_file


  10. ocean_nphysicsB_end

    DESCRIPTION
    Write to restart.



NAMELIST

&ocean_nphysicsB_nml

use_this_module
Must be true to use this module. Default is false.
[logical]
debug_this_module
For printing starting and ending checksums for restarts
[logical]
use_gm_skew
Must be true to use GM skewsion. Set to false if wish to incorporate the "GM-effect" through form drag, as in ocean_form_drag module. Default use_gm_skew=.true.
[logical]
diffusion_all_explicit
To compute all contributions from neutral diffusion explicitly in time, including the K33 diagonal piece. This approach is available only when have small time steps and/or running with just a single tracer. It is for testing purposes.
[logical]
neutral_physics_limit
When tracer falls outside a specified range, revert to horizontal diffusive fluxes at this cell. This is an ad hoc and incomplete attempt to maintain monotonicity with the neutral physics scheme. Default neutral_physics_limit=.true.
[logical]
tmask_neutral_on
If .true. then this logical reduces the neutral fluxes to horizontal/vertical diffusion next to boundaries. This approach has been found to reduce spurious extrema resulting from truncation of triads used to compute a neutral flux component. Default tmask_neutral_on=.false.
[logical]
surf_turb_thick_min_k
Minimum number of k-levels in surface turbulent boundary layer used in the transition of the neutral physics fluxes to the surface. Default surf_turb_thick_min_k = 2.
[integer]
surf_turb_thick_min
Minimum thickness of surface turbulent boundary layer used in the transition of the neutral physics fluxes to the surface. Default surf_turb_thick_min=20m.
[real]
neutral_damping_time
The damping time used for determining the effective surface boundary layer thickness from other portions of the model. Default neutral_damping_time=10days.
[real, units: days]
nblayer_smooth
For smoothing the neutral blayer fields. This is useful when aiming to produce a smooth quasi-stokes streamfunction within the boundary layers. Default is nblayer_smooth=.true.
[logical]
vel_micom_smooth
Velocity scale that is used for computing the MICOM Laplacian mixing coefficient used in the Laplacian smoothing of neutral blayer fields.
[real, units: m/sec]
transport_units
The units for writing out the transport. Either in Sv (10^9 kg/s) or mks (kg/s). Note the mks unit is requested for CMIP5 purposes. Default transport_units = 'Sv'.
[character]


DATA SETS

None.


ERROR MESSAGES

None.


REFERENCES

  1. S.M. Griffies, A. Gnanadesikan, R.C. Pacanowski, V. Larichev, J.K. Dukowicz, and R.D. Smith Isoneutral diffusion in a z-coordinate ocean model Journal of Physical Oceanography (1998) vol 28 pages 805-830
  2. S.M. Griffies The Gent-McWilliams Skew-flux Journal of Physical Oceanography (1998) vol 28 pages 831-841
  3. R. Ferrari and J.C. McWilliams and Canuto and Dubovikov Parameterization of eddy fluxes near oceanic boundaries Journal of Climate (2008).
  4. Large etal (1997), Journal of Physical Oceanography, pages 2418-2447
  5. S.M. Griffies Fundamentals of Ocean Climate Models (2004) Princeton University Press
  6. S.M. Griffies, Elements of mom4p1 (2008)


COMPILER SPECIFICS

None.


PRECOMPILER OPTIONS

None.


LOADER OPTIONS

None.


TEST PROGRAM

None.


KNOWN BUGS

None.


NOTES

Revisions made for mom4p1 in Sept 2005, Jan/Feb 2006, and June 2008 by Stephen.Griffies@noaa.gov. The June 2008 revision greatly simplified the boundary layer formulation from Ferrari and McWilliams, whereby the quadratic transition layer is eliminated, thus removing the need to match vertical derivatives of the streamfunction. The matching conditions implied by the transition zone added a tremendous amount of code that was not seen to be critical for the purpose of producing a reasonably smooth streamfunction.

Numerical implementation of the flux components follows the triad approach documented in the references and implemented in MOM2 and MOM3. The MOM4 algorithm accounts for partial bottom cells and generalized orthogonal horizontal coordinates.

Note: the option neutral_physics_simple is not supported in this module. Use nphysicA for that option.


FUTURE PLANS

None.


top