PUBLIC INTERFACE ~ PUBLIC ROUTINES ~ NAMELIST

Module ocean_blob_dynamic_bottom_mod

Contact:  Michael L. Bates Stephen M. Griffies
Reviewers: 
Change History: WebCVS Log


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

blob_dynamic_bottom_init:
blob_dynamic_bottom_update:
dynamic_update:
transfer_free_to_bottom:
dynamic_bottom_form_new:
blob_dynamic_bottom_end:
packbuffer:
unpackbuffer:
increase_buffer:
send_buffer:
receive_buffer:
clear_buffer:


PUBLIC ROUTINES

  1. 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.


  2. 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.


  3. 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.


  4. transfer_free_to_bottom

    DESCRIPTION
    Takes free blobs that have interacted with topography and turns them into bottom blobs.


  5. 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.


  6. blob_dynamic_bottom_end

    DESCRIPTION
    Clears memory to give a nice clean ending to the run.


  7. packbuffer

    DESCRIPTION
    Packs a buffer with all the information needed to send a blob from one PE to another.


  8. unpackbuffer

    DESCRIPTION
    Unpacks a received buffer.


  9. increase_buffer

    DESCRIPTION
    Increases the buffer size for sending blobs from one PE to another.


  10. send_buffer

    DESCRIPTION
    Sends a buffer to an adjoining PE


  11. receive_buffer

    DESCRIPTION
    Receives a buffer from an adjoining PE


  12. 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

  1. Price, J.F., Baringer, M.O'N. (1994) Outflows and deep water production by marginal seas. Progress in Oceanography 33(3), 161-200.
  2. 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.
  3. Bogacki, P., Shampine, L.F. (1989) A 3(2) pair of Runge-Kutta formulas. Applied Mathematical Letters 2(4), 321-325.
  4. 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.


top