PUBLIC INTERFACE ~ PUBLIC DATA ~ PUBLIC ROUTINES ~ NAMELIST ~ DIAGNOSTIC FIELDS ~ ERROR MESSAGES ~ REFERENCES ~ NOTES

Module ocean_density_mod

Contact:  S.M. Griffies
Reviewers: 
Change History: WebCVS Log


OVERVIEW

Compute density and related quantities.

This module computes the in-situ density and its partial derivatives with respect to potential temperature and with respect to salinity.

Based on McDougall, Wright, Jackett, and Feistel (2002). This equation of state is valid over the range:

0psu <= salinity <= 40 psu

-3C <= theta <= 40C

0dbar <= pressure <= 8000dbar

Input variables are the following:

salinity in psu

potential temperature (theta) in deg C

pressure in dbars (1bar = 10dbar = 10^5 Newton/m^2 = 10^5 Pascals). Note that in the ocean, pressure increases roughly by 1dbar for each meter depth. Also note that pressure is the "gauge" pressure, which is the absolute pressure minus the pressure of a standard atmosphere, which is 10.1325 dbars.

check values (kindly provided by David Jackett)
rho(s=20psu,theta=20C,p=1000dbar) = 1017.72674313979 (kg/m^3)
alpha(s=20psu,theta=20C,p=1000dbar) = 2.524181985549684e-4 (1/C)
beta(s=20psu,theta=20C,p=1000dbar) = 7.382804621244401e-4 (1/psu)
This equation of state should be suitable for all purposes of realistic ocean climate modeling.

B. Linear equation for use in idealized Boussinesq studies

This equation renders density a linear function of potential temperature. All nonlinearities are ignored, as are salinity and pressure effects. Since there are no compressibility effects in this equations of state, it is only appropriate for Boussinesq studies.

The valid range for T and S is arbitrary for linearized density. However the range is restricted to the range for the standard EOS to keep density gradients within reasonable limits. So valid ranges are restricted to s=0 to 50 psu, t=-10 to 50 deg C



OTHER MODULES USED

      constants_mod
diag_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
platform_mod
time_manager_mod
ocean_domains_mod
ocean_operators_mod
ocean_pressure_mod
ocean_types_mod
ocean_util_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_density_init:
update_ocean_density:
update_ocean_density_taup1:
density_field:
density_level:
density_line:
potential_density:
density_sfc:
density_point:
density_derivs_field:
density_derivs_point:
density_delta_z:
density_delta_sfc:
ocean_density_end:
ocean_density_chksum:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_density_init

    DESCRIPTION
    Initialize the density module


  2. update_ocean_density

    DESCRIPTION
    Compute ocean density and related fields.


  3. update_ocean_density_taup1

    DESCRIPTION
    Compute ocean density at taup1


  4. density_field

    DESCRIPTION
    Compute density for all grid points. Note that pressure here is gauge pressure = absolute pressure - press_standard and salinity is in model units (psu).


  5. density_level

    DESCRIPTION
    Compute density at a particular k-level. Note that pressure here is the gauge pressure = absolute pressure - press_standard


  6. density_line

    DESCRIPTION
    Compute density at a particular k-level and j index. This scheme is used in the vectorized version of the full convection scheme. Note that pressure here is the gauge pressure = absolute pressure - press_standard


  7. potential_density

    DESCRIPTION
    Compute potential density referenced to some given gauge pressure. Note that potential density referenced to the surface (i.e., sigma_0) has a zero gauge pressure, so pressure=0.0 should be the argument to the function.


  8. density_sfc

    DESCRIPTION
    Compute density as a function of surface salinity, surface theta, and insitu gauge pressure. For use in KPP mixed layer scheme


  9. density_point

    DESCRIPTION
    Compute density at a single model grid point. Note that pressure here is the gauge pressure = absolute pressure - press_standard


  10. density_derivs_field

    DESCRIPTION
    Compute partial derivative of density with respect to potential temperature and with respect to salinity. Hold pressure constant. Pressure here is gauge pressure = absolute press - press_standard


  11. density_derivs_point

    DESCRIPTION
    Compute partial derivative of density with respect to potential temperature and with respect to salinity. Do so here for a point. Pressure here is gauge pressure = absolute pressure - press_standard


  12. density_delta_z

    DESCRIPTION
    rho(k)-rho(k+1) for all i,j with both temperatures referenced to the deeper pressure depth. Of use for KPP scheme.


  13. density_delta_sfc

    DESCRIPTION
    rho(1)-rho(k+1) for all i,j. Of use for KPP scheme.


  14. ocean_density_end

    DESCRIPTION
    Write density field to a restart.


  15. ocean_density_chksum

    DESCRIPTION
    Compute checksums for density.



NAMELIST

&ocean_density_nml

s_test
Salinity for testing the EOS.
[real, units: psu]
press_standard
Standard atmospheric pressure (dbar). The realistic EOS used in mom4 requires gauge pressuer as an argument rather than absolute pressure. Gauge pressure is absolute pressure minus a standard atmospheric pressure of 10.1325dbar. For models that do have a realistic atmospheric loading, then it is appropriate to remove 10.1325dbar prior to computing the EOS. For those cases with zero atmospheric pressure, then it is not necessary to remove the standard atmosphere. As most model are presently run with zero atmospheric pressure, the default for the press_standard is 0.0.
[real, units: dbar]
t_test
Potential temperature for testing the EOS.
[real, units: C]
p_test
Gauge pressure for testing the EOS.
[real, units: dbar]
linear_eos
Set to true if wish to use the linear equation of state.
[logical]
alpha_linear_eos
Constant "thermal expansion coefficient" for EOS rho = rho0 - alpha_linear_eos*theta + beta_linear_eos*salinity
[real]
beta_linear_eos
Constant "saline contraction coefficient" for EOS rho = rho0 - alpha_linear_eos*theta + beta_linear_eos*salinity
[real]
potrho_press
Gauge pressure for computing diagnostic potential density
[real, units: dbar]
potrho_min
Minimum potential density used to partition vertical according to potential density.
[real, units: kg/m^3]
potrho_max
Maximum potential density used to partition vertical according to potential density.
[real, units: kg/m^3]
theta_min
Minimum potential temperature used to partition vertical according to theta.
[real, units: C]
theta_max
Maximum potential temperature used to partition vertical according to theta.
[real, units: C]
layer_nk
Number of classes used to partition vertical according to potential density or potential temperature. Used for diagnostics.
[integer]
debug_density
For debugging nonlinear equation of state
[logical]


DATA SETS

None.


ERROR MESSAGES

None.


REFERENCES

  1. Feistel (2003) A new extended Gibbs thermodynamic potential of seawater Progress in Oceanography. vol 58, pages 43-114.
  2. McDougall, Jackett, Wright, and Feistel (2002) Accurate and computationally efficient algorithms for potential temperatue and density of seawater Journal of Atmospheric and Oceanic Technology, submitted 2002
  3. Jackett, McDougall, Feistel, Wright, and Griffies (2004) Updated algorithms for density, potential temperature, conservative temperature, and freezing temperature of seawater. Journal of Atmospheric and Oceanic Technology, 2004 submitted
  4. S.M. Griffies, M.J. Harrison, R.C. Pacanowski, and A. Rosati A Technical Guide to MOM4 (2003)
  5. S.M. Griffies, R.C. Pacanowski, R.M. Schmidt, and V. Balaji Tracer Conservation with an Explicit Free Surface Method for Z-coordinate Ocean Models Monthly Weather Review (2001) vol 129 pages 1081--1098


COMPILER SPECIFICS

None.


PRECOMPILER OPTIONS

None.


LOADER OPTIONS

None.


TEST PROGRAM

None.


KNOWN BUGS

None.


NOTES

Density is computed as a function of potential temperature (C), salinity (psu), and in-situ pressure (dbar). The pressure contribution includes that from the free surface height and the atmospheric pressure. Because the baroclinic component of the hydrostatic pressure is not known until the density is known, the baroclinic pressure contribution to density is lagged by a single time step. rho(tau) = rho[theta(tau),s(tau), p_atm(tau) + p_fs(tau) + p_baroclinic(tau-1)]


FUTURE PLANS

None.


top