Module ocean_blob_dynamic_bottom_mod
OVERVIEW
This module runs the dynamic bottom blob implementation of the embedded
Lagrangian buoyancy blob framework. The module forms new dynamic
bottom blobs, integrates the properties of existing blobs, and handles
the transfer of free blobs to bottom blobs.
Bottom blobs are formed using the subroutine dynamic_bottom_form_new,
which is called from the main blob driver module. Bottom blobs are
formed explicitly in time, directly after the integration of existing
blobs.
The properties of a bottom blob are also integrated in this module,
that is, position, velocity, mass and tracer content. Position and
velocity are integrated using an adaptive step Runge-Kutta scheme.
There are several schemes available of varying order.
The module also recieves blobs that are transferring from the free
blob dynamic regime to the bottom blob dynamic regime (i.e. free
blobs that have interacted with topography).
OTHER MODULES USED
constants_mod
diag_manager_mod
fms_mod
mpp_mod
mpp_domains_mod
ocean_blob_util_mod
ocean_density_mod
ocean_parameters_mod
ocean_types_mod
ocean_util_mod
PUBLIC INTERFACE
PUBLIC ROUTINES
-
blob_dynamic_bottom_init
-
DESCRIPTION
-
Initialises the dynamic free blobs by checking the namelist and also
inherited namelists (from ocean_blob_nml). Also sets up some useful
constants (including spatially varying constants) - particularly for
the formation of bottom blobs. It also allocates memory to special
halo=2 masks and sets up the blob buffers for sending blobs from one
PE to another.
-
blob_dynamic_bottom_update
-
DESCRIPTION
-
This routine calls the routine to update blob positions. When
bitwise_reproduction=.false., it also figures out when to continue
the integration of blobs that have changed PE's.
-
dynamic_update
-
DESCRIPTION
-
This routine contains the RK scheme used to integrate the position
and velocity of blobs. It also does many checks for (and
subsequently handles) things like grounding of blobs, blobs going to
different PEs, blobs that separate from topography, blobs that
detrain to less than small_mass and blobs going outside the compute
domain.
It also does the interpolation of E system variables to a blob.
-
transfer_free_to_bottom
-
DESCRIPTION
-
Takes free blobs that have interacted with topography and turns them
into bottom blobs.
-
dynamic_bottom_form_new
-
DESCRIPTION
-
Initialises blobs that are formed when an on-shelf/off-shelf
instability occurs. The method used for determining an instability
and the initial conditions are based on that of Campin and Goosse
(1999).
When the density difference between the shallow ocean cell and the
deep ocean cell (referenced to the deep ocean cell) exceeds the
namelist variable rho_threshold, a blob is formed. The deep ocean
cell is chosen based on which deep ocean cell (in the k plane)
the blob topography intersects.
After formation, the new blobs are added to the bottom blob linked
list, and, their properties are integrated, starting at time taup1.
-
blob_dynamic_bottom_end
-
DESCRIPTION
-
Clears memory to give a nice clean ending to the run.
-
packbuffer
-
DESCRIPTION
-
Packs a buffer with all the information needed to send a blob from
one PE to another.
-
unpackbuffer
-
DESCRIPTION
-
Unpacks a received buffer.
-
increase_buffer
-
DESCRIPTION
-
Increases the buffer size for sending blobs from one PE to another.
-
send_buffer
-
DESCRIPTION
-
Sends a buffer to an adjoining PE
-
receive_buffer
-
DESCRIPTION
-
Receives a buffer from an adjoining PE
-
clear_buffer
-
DESCRIPTION
-
Clears the contents of a buffer
NAMELIST
&ocean_blob_dynamic_bottom_nml
-
use_this_module
Must be true to use this module.
Default is use_this_module=.false.
[logical]
-
blob_overflow_mu
Frictional dissipation rate used for calculating initial
properties of bottom blobs. Corresponds to mu in Campin and
Goosse (1999). Units are 1/s.
Default is blob_overflow_mu=1.0e-4
[real]
-
blob_overflow_delta
Fraction of a grid cell participating in an overflow event.
Corresponds to delta in Campin and Goosse (1999). Dimensionless.
Default is blob_overflow_mu=1.0e-4
[real]
-
drag
Coefficient of drag used for bottom stress drag.
Corresponds to Cd in Price and Baringer (1994). Dimensionless.
Default is drag=3.0e-3
[real]
-
det_param
The detrainment parameter (kg m^2/s).
Corresponds to Gamma in the notes.
Default is det_param=5.0e-8
[real]
-
max_detrainment
The Maximum allowable detrainment velocity (m/s).
Default is max_detrainment=1.0e-3
[real]
-
rel_error
Relative error for the RK scheme (dimensionless).
A smaller number is more accurate, but,
is more computationally expensive. Corresponds to
zeta* in the notes.
Must be 0<rel_error<=1.0
Default is rel_error=0.01
[real]
-
safety_factor
Safety factor for the RK scheme (dimensionless).
A smaller number should reduce the number
of rejected steps, but, decreases the locally
extrapolated step. Corresponds to varrho in
the notes.
Must be 0<safety_factor<=1.0
Default is safety_factor=0.8
[real]
-
minstep
Minimum step size (in seconds) for a blob.
Default is minstep=9.0
[real]
-
elastic
The elasticity of a blob's collision with
the topography. Corresponds to epsilon in
the notes. Should have values 0<=elastic<=1.0
Values greater than 1 would be super-elastic,
and values less than 0 would send the blob
in the opposite direction than it should be
going in.
Default is elastic=1.0
[real]
-
min_do_levels
Minimum number of deep ocean levels for
overflows to be considered. That is, how many
k levels lower should the deep ocean water column
be than the shelf/shallow ocean column. Value
must be greater than 0.
Default is min_do_levels=1
[integer]
-
rho_threshold
The density difference required before a blob
is formed. rho_threshold must be greater than
zero.
Default is rho_threshold=0.01
[real]
-
large_speed
A value for error checking. If the speed of a
blob exceeds large_speed in any of x,y,z then
a warning flag is raised.
Default is large_speed=10.0
[real]
-
no_rotation
Sets the coriolis parameter to zero regardless
of latitude
Default is no_rotation=.false.
[real]
-
critical_richardson
The critical Richardson number for the entrainment
velocity. Default is based on Price and Baringer
(1994).
Default is critical_richardson=0.8
[real]
REFERENCES
-
Price, J.F., Baringer, M.O'N. (1994) Outflows and deep water production
by marginal seas. Progress in Oceanography 33(3), 161-200.
-
Campin, J-.M., Goosse, H. (1999) Parameterization of a density-driven
downsloping flow for a coarse-resolution ocean model in z-coordinate.
Tellus 51A(3), 412-430.
-
Bogacki, P., Shampine, L.F. (1989) A 3(2) pair of Runge-Kutta formulas.
Applied Mathematical Letters 2(4), 321-325.
-
Cash, J.R., Karp, A.H. (1990) A variable order Runge-Kutta method for
initial value problems with rapidly varying right-hand sides.
ACM Transactions on Mathematical Software 16(3), 201-222.