Module ocean_riverspread_mod
OVERVIEW
Spread runoff or calving horizontally over a region determined
by a table. Also provide option to spread river runoff or calving
through a diffusive operation.
At some coastal ocean gridpoints, the runoff or calving flux contribution to
(p-e+r) may be very large because of local insertion to ocean. Therefore,
we may choose to spread the large river runoff over neighboring pairs
of gridpoints. Annual mean river runoff greater than 0.05 m/day is
considered to be very large.
This module allows one to spread the river using two options.
A/ by specifying river spreading table points
B/ by performing a series of diffusion operations.
OTHER MODULES USED
field_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
ocean_domains_mod
ocean_operators_mod
ocean_types_mod
PUBLIC INTERFACE
PUBLIC ROUTINES
-
ocean_riverspread_init
-
DESCRIPTION
-
Initial set up for spreading of tracers
A/ Table drive approach
(i,j) locations of points to be spread are set in data
statements.
Checks are performed to ensure that the spreading
grid locations are valid according to model configuration.
A summary of the locations of spreading points is written out.
User specified inputs in "USER INPUT" section:
ispread and jspread = user specified i,j grid locations of data for spreading.
is, ie, js, je = user specified i,j grid locations of
the corners of the spreading regions.
is and ie are the east and west coord of each region,
js and je are the south and north coord of each region.
B/ Laplacian approach requires minimal setup
-
spread_river_horz
-
DESCRIPTION
-
Provide conservative spreading of river runoff field.
-
riverspread_laplacian
-
DESCRIPTION
-
Provide conservative spreading of river runoff field using a
Laplacian operator.
-
at_least_one_in_spread_domain
-
DESCRIPTION
-
Function to see if at least one of the points in the spreading region
is within the computational domain for the processor.
-
INPUT
-
| nsp |
Integer labeling the particular spreading region
[integer] |
-
on_comp_domain
-
DESCRIPTION
-
Determine if the point is in comp-domain for the processor
-
on_data_domain
-
DESCRIPTION
-
Determine if the point is in data-domain for the processor
NAMELIST
&ocean_riverspread_nml
-
use_this_module
Must be true to enable this module. Default=.false.
[logical]
-
debug_this_module
For debugging. Default=.false.
[logical]
-
riverspread_diffusion
For spreading river water via a Laplacian diffusion operation.
Default=.false.
[logical]
-
riverspread_diffusion_passes
Number of diffusion passes applied to the runoff/calving array.
Default riverspread_diffusion_passes = 0.
[integer]
-
vel_micom_smooth
Velocity scale that is used for computing the MICOM Laplacian mixing
coefficient used in the Laplacian smoothing of river water.
Default vel_micom_smooth=0.2.
[real, units: m/sec]
NOTES
Spreading in a 2D lat-long field is implemented in the following manner:
A/ Table driven spreadging
If the spreading region lives within the halo region
(i.e., within same local_domain),
then no added mpp communication required. However, more generally
the spreading region can extend beyond the existing halo region.
In this case, spread_domain
is defined so that its halos incorporate the maximum separation
of spreading points. New tracer and grid arrays
are defined over this extended spread_domain. This added domain
size will come at some computational cost, so it is advantageous
to choose the spreading region carefully.
B/ Laplacian diffusion spreading
Apply Laplacian operator to the river runoff/calving array to spread
the river water abroad from the river mouth.
The current implementation of table driven spreading has not
been tested for a spreading region that is separated by either
a zonal cyclic condition or across the tripolar fold.