Module ocean_blob_dynamic_free_mod
OVERVIEW
This module runs the dynamic free blob implementation of the embedded
Lagrangian blob framework. The module forms new dynamic free blobs,
integrates the properties of existing blobs, and handles the transfer
of bottom blobs to free blobs.
Free blobs are formed using the subroutine blob_dynamic_free_implicit,
which is called from the blob driver module. Free blobs must be formed
implicitly in time so that the surface forcing has already been applied.
The properties of free blobs 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 receives blobs that are transferring from the bottom
blob dynamic regime to the free blob regime (i.e. they have separated
from the bottom boundary).
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
ocean_workspace_mod
PUBLIC INTERFACE
PUBLIC ROUTINES
-
blob_dynamic_free_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, allocates memory to special halo=2 masks and sets up
the blob buffers for sending blobs from one PE to another.
-
blob_dynamic_free_implicit
-
DESCRIPTION
-
Initialises dynamic blobs in vertical statically unstable regions.
Due to the instability condition, blobs should be formed after the
surface forcing has been applied (which is a major source of
instability in the water column). The surface forcing is applied
implicitly in time in MOM, therefore, we must form blobs implicitly
in time.
If N^2<bv_freq_threshold, then, two blobs are formed. One rising
and one sinking. The rising blobs is destroyed immediately (after
it has been moved up one cell) and its properties returned to the E
system. The sinking blob is added to a linked list, and its
properties integrated at a later time step.
-
blob_dynamic_free_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 interact with 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_bottom_to_free
-
DESCRIPTION
-
Takes bottom blobs that have separated from the bottom boundary and
turns it into a free blob.
-
blob_dynamic_free_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
REFERENCES
-
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.
-
Griffies, S.M., Harrison, M.J., Pacanowski, R.C., Rosati, A. (2004)
A Technical Guide to MOM4. GFDL Ocean Group Technical Report No. 5.
NOAA/Geophysical Fluid Dynamics Laboratory.
-
Marshall, J., Schott, F. (1999) Open-ocean convection: Observations, theory,
and models. Reviews of Geophysics 37(1), 1-64.