Module ocean_xlandmix_mod
OVERVIEW
Tracer and eta source from cross-land mixing
Compute thickness weighted tendency [tracer*meter/sec]
of tracer 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 volume 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 volumes between remote bodies of water
via xlandmix of eta.
OTHER MODULES USED
constants_mod
diag_manager_mod
field_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
ocean_domains_mod
ocean_types_mod
PUBLIC INTERFACE
PUBLIC DATA
None.
PUBLIC ROUTINES
-
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.
-
xlandmix
-
DESCRIPTION
- Compute the sources for tracer concentration and free surface height.
The two sources are related via requirements of tracer and volume
conservation. Logic is a bit tricky in order to allow each (i,j,k) point
to participate in an arbitrary number of xlandmix pairs.
Compute thickness weighted tracer source with units tracer*meter/sec.
For generalized vertical coordinates, need to update dthx each time
step since it may now generally have time dependent thicknesses.
This work remains to be done.
-
xlandmix_eta
-
DESCRIPTION
- Compute the source for surface height with units meter/sec.
Note that xlandmix has already been called, so xland_eta has been
filled.
-
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] |
-
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] |
-
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] |
-
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] |
-
on_processor
-
DESCRIPTION
- Determine if the point is on processor
NAMELIST
&ocean_xlandmix_nml
-
use_xlandmix
Needs to be true in order to use this scheme.
[logical]
-
verbose_init
For verbose initialization information.
[logical]
DATA SETS
None.
ERROR MESSAGES
None.
REFERENCES
- S.M. Griffies, M.J. Harrison, R. C. Pacanowski, and A. Rosati
A Guide to MOM4 (2002)
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 volume 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, nore 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 xlandinsert 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 (kd@gfdl.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 (smg@gfdl.noaa.gov).
FUTURE PLANS
None.