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

Module ocean_xlandmix_mod

Contact:  S.M. Griffies
Reviewers:  M.J. Harrison K. Dixon
Change History: WebCVS Log


OVERVIEW

Tracer and mass source from cross-land mixing.

Compute thickness weighted and density weighted tendency [tracer*(kg/m^3)*meter/sec] of tracer and mass associated with cross-land mixing of points.

In particular, this module provides interaction between bodies of water separated by land in coarse models (e.g., Med-Atlantic). Interaction consists of mixing tracer and mass between water columns found on each side of the land barrier.

To conserve total tracer when using xlandmix with k=1, also need to connect mass between remote bodies of water via xlandmix of eta.

When connecting cells with k>1, we do not mix mass. This is ensured by making the time tendency only a function of the difference in tracer concentration.



OTHER MODULES USED

       constants_mod
diag_manager_mod
field_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
ocean_domains_mod
ocean_parameters_mod
ocean_types_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_xlandmix_init:
xlandmix:
xlandmix_mass:
xland_check:
at_least_one_in_comp_domain:
both_in_local_domain:
on_comp_domain:
on_processor:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_xlandmix_init

    DESCRIPTION
    Initial set up for crossland mixing of tracers

    (i,j,k) locations of crossland mixing points are set via field table entries.

    Time invariant crossland mixing rates (in units of m**3/sec) are set via field table entries.

    Checks are performed to ensure that the crossland mixing grid locations are valid according to model configuration.

    A summary of the locations of crossland mixing points is written out.

    User specified inputs in "USER INPUT" section:

    ixland and jxland = user specified nxland pairs of i,j grid locations

    kxland = user specified uppermost (ktop=kxland(n,1)) and deepest (kbot=kxland(n,2)) levels over which crossland mixing will be done for each pair of crossland mixing points.

    vxland = user specified time invariant rates of crossland mixing (m3/sec) Equivalent to "the flow to the east = the flow to the west" Dynamic vxland is not available in MOM4.

    NOTE: for ixland, jxland, and kxland pairs, values of the (n,1) element should be < the corresponding (n,2) value.


  2. xlandmix

    DESCRIPTION
    Compute thickness and density weighted time tendency from xlandmix. Units of the tendency are tracer*(kg/m^3)*meter/sec.

    Logic is a bit tricky in order to allow each (i,j,k) point to participate in an arbitrary number of xlandmix pairs.



  3. xlandmix_mass

    DESCRIPTION
    Compute the mass source kg/(m^2*sec). Note that xlandmix has already been called, so xland_mass has been filled.


  4. xland_check

    DESCRIPTION
    Check if prescribed too much mixing

    In this routine the crossland mixing rate vxland(nxl) for the pair of points associated with index number nxl is converted into the fraction of the model grid boxes to be mixed per second, and checked. These checks ensure that the rate of crossland mixing requested is valid in that it can be realized given the timestep length and column volumes involved.


    INPUT
    nxl    Integer labeling the particular xlandmix pair
       [integer]

    INPUT/OUTPUT
    error    Error flag indicates whether initialization was performed successfully.
       [logical]

  5. at_least_one_in_comp_domain

    DESCRIPTION
    Function to see if at least one of the two points in a crossland pair is within the computational domain for the processor.


    INPUT
    nxl    Integer labeling the particular xlandmix pair
       [integer]

  6. both_in_local_domain

    DESCRIPTION
    Determine if both points in a crossland pair are within the local domain for the processor.


    INPUT
    nxl    Integer labeling the particular xlandmix pair
       [integer]

  7. on_comp_domain

    DESCRIPTION
    Determine if the point is in comp-domain for the processor


    INPUT
    nxl    Integer labeling the particular xlandmix pair
       [integer]
    lx    lx=1,2 labels the point within an xlandmix pair
       [integer]

  8. on_processor

    DESCRIPTION
    Determine if the point is on processor



NAMELIST

&ocean_xlandmix_nml

use_this_module
Needs to be true in order to use this scheme. Default is false.
[logical]
xlandmix_kmt
To allow xlandmixing to occur at k=kmt cell. Default is xlandmix_kmt=.false.
[logical]
verbose_init
For verbose initialization information.
[logical]


DATA SETS

None.


ERROR MESSAGES

None.


REFERENCES

  1. S.M. Griffies, M.J. Harrison, R. C. Pacanowski, and A. Rosati A Technical Guide to MOM4 (2004) NOAA/Geophysical Fluid Dynamics Laboratory
  2. S.M. Griffies, Elements of mom4p1 (2006) NOAA/Geophysical Fluid Dynamics Laboratory


COMPILER SPECIFICS

None.


PRECOMPILER OPTIONS

None.


LOADER OPTIONS

None.


TEST PROGRAM

None.


KNOWN BUGS

None.


NOTES

Algorithm ensures both total tracer and total mass is conserved.

2D domain decomposition is implemented according to following notions. If the two points in an xlandmix pair live within halo of each other (i.e., within same local_domain), then no added mpp communication required. However, more generally the two points live further away. In this case, xland_domain is defined so that its halos incorporate the maximum separation of xlandmix points. New tracer, eta, and grid arrays are defined over this extended xland_domain. This added domain size will come at some computational cost, so it is advantageous to limit the separation between points within an xlandmix pair.

The current implementation of xlandmix has not been generalized to allow for communication between points separated by the tripolar fold. The problem is in the logic used to compute xland_domain. There is nothing fundamental limiting a generalization of the logic used to generate xland_domain.

Many of the user specified values given in USER INPUT are model dependent since unresolved straits can become resolved in finer mesh models.

Algorithm originally developed by Keith Dixon (Keith.Dixon@noaa.gov) for rigid lid and full cells and one processor (i.e., MOM1). Algorithm extended to free surface and partial cells and 2D domain decomposition by S.M.Griffies (Stephen.Griffies@noaa.gov). Further extensions to generalized vertical coordinates by Stephen.Griffies@noaa.gov


FUTURE PLANS

None.


top