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

Module ocean_tempsalt_mod

Contact:  R.A.S. Fiedler David Jackett Stephen M. Griffies
Reviewers: 
Change History: WebCVS Log


OVERVIEW

Convert between potential temperature and conservative temperature.

The conversion between potential temperature and conservative temperature is valid over the following range:

0psu <= salinity <= 40 psu

-3C <= theta <= 40C (theta=conservative temperature or potential temperature)

0dbar <= pressure <= 8000dbar

Input variables are the following:

salinity in psu

potential temperature (theta) in deg C OR conservative temperature (theta) in deg C



OTHER MODULES USED

       constants_mod
fms_mod
mpp_mod
ocean_domains_mod
ocean_parameters_mod
ocean_tpm_util_mod
ocean_types_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_tempsalt_init:
ocean_tempsalt_ideal_reinit:
contemp_from_pottemp_field:
contemp_from_pottemp_level:
contemp_from_pottemp_point:
pottemp_from_contemp_field:
pottemp_from_contemp_level:
pottemp_from_contemp_point:
dentropy_dtheta_field:
dentropy_dtheta_level:
dentropy_dtheta_point:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. ocean_tempsalt_init

    DESCRIPTION
    Initialize the temperature/salinity module.


  2. ocean_tempsalt_ideal_reinit

    DESCRIPTION
    Reinitialize the temperature/salinity fields with internally generated idealized profile.

    This routine can be called at any time within a model integration. The main application is to allow for there to be a nontrivial Thickness established, and then to reinitialize the temperature and salinity to be functions of the depth_st array. When s=zstar, this approach will produce a flat initialization in zstar space, but nontrivial initialization in depth space.

    User can customize a profile.

    Example given here assumes profile is a function of depth_st, with the assumption that s=geopotential OR s=zstar.



  3. contemp_from_pottemp_field

    DESCRIPTION
    Compute conservative temperature for all grid points. Input is potential temperature (C) and salinity(psu).

    contemp = potential_enthalpy(s,theta)/cp_ocean



  4. contemp_from_pottemp_level

    DESCRIPTION
    Compute conservative temperature for one k-level. Input is potential temperature (C) and salinity(psu).

    contemp = potential_enthalpy(s,theta)/cp_ocean



  5. contemp_from_pottemp_point

    DESCRIPTION
    Compute conservative temperature for one grid point. Input is potential temperature (C) and salinity(psu).

    contemp = potential_enthalpy(s,theta)/cp_ocean



  6. pottemp_from_contemp_field

    DESCRIPTION
    Compute potential temperature from conservative temperature for all grid points. Perform one extra iteration to get precision to near computer precision.

    Input is salinity (psu) and conservative temperature (C).

    Use wrk1, wrk2, and wrk3 so to not take 3-d arrays from stack.



  7. pottemp_from_contemp_level

    DESCRIPTION
    Compute potential temperature from conservative temperature over a k-level. Perform one extra iteration to get precision to near computer precision.

    Input is salinity (psu) and conservative temperature (C).



  8. pottemp_from_contemp_point

    DESCRIPTION
    Compute potential temperature from conservative temperature at a point. Perform one extra iteration to get precision to near computer precision.

    Input is salinity (psu) and conservative temperature (C).



  9. dentropy_dtheta_field

    DESCRIPTION
    d(entropy)/d(pottemp) at each grid point from twice differentiating the Gibbs potential in Feistel (2003), Prog. Ocean. 58, 43-114. (pressure=0 since use potential temperature)

    salinity : salinity (psu) theta : potential temperature (deg C, ITS-90) dentropy_dtheta : d(entropy)/d(pottemp) J/(kg degC^2)

    check value: dentropy_dtheta(35,20) = 13.63256369213874



  10. dentropy_dtheta_level

    DESCRIPTION
    d(entropy)/d(pottemp) at k-level from twice differentiating the Gibbs potential in Feistel (2003), Prog. Ocean. 58, 43-114. (pressure=0 since use potential temperature)

    salinity : salinity (psu) theta : potential temperature (deg C, ITS-90) dentropy_dtheta : d(entropy)/d(pottemp) J/(kg degC^2)

    check value: dentropy_dtheta(35,20) = 13.63256369213874



  11. dentropy_dtheta_point

    DESCRIPTION
    d(entropy)/d(pottemp) at an (i,j,k) point from twice differentiating the Gibbs potential in Feistel (2003), Prog. Ocean. 58, 43-114. (pressure=0 since use potential temperature)

    salinity : salinity (psu) theta : potential temperature (deg C, ITS-90) dentropy_dtheta : d(entropy)/d(pottemp) J/(kg degC^2)

    check value: dentropy_dtheta(35,20) = 13.63256369213874




NAMELIST

&ocean_tempsalt_nml

temperature_variable
For choosing the temperature variable used in the model. Choices are 'conservative_temp' and 'potential_temp'. Since conservative temperature is more accurate, it is the default.
[character]
pottemp_equal_contemp
For certain idealized cases where the difference between potential temperature and conservative temperature is irrelevant. Default=.false.
[logical]
pottemp_2nd_iteration
For taking extra iteration in computation of potential temperature from conservative temperature and salinity. Default is true.
[logical]
reinit_ts_with_ideal
For setting up an ideal temperature and salinity profile that is generated in the model. This profile can be generated after the model has already been running, hence the name "reinit" for "reinitialize."
[logical]
reinit_ts_with_ideal_efold
For setting efolding of reinitialized temp and salinity profile. Default reinit_ts_with_ideal_efold=1000.
[real, units: metre]
reinit_ts_with_ideal_tvalue
For setting the reinitialized temperature value using the ideal profile. Default reinit_ts_with_ideal_tvalue = 10.0
[real, units: C]
reinit_ts_with_ideal_svalue
For setting the reinitialized temperature value using the ideal profile. Default reinit_ts_with_ideal_svalue = 30.0
[real, units: psu]
t_min
Minimum potential temperature below which we gracefully bring down the model.
[real, units: deg C]
t_max
Maximum potential temperature above which we gracefully bring down the model.
[real, units: deg C]
s_min
Minimum salinity below which we gracefully bring down the model.
[real, units: psu]
s_max
Maximum salinity below which we gracefully bring down the model.
[real, units: psu]
t_min_limit
Minimum potential temperature below which will employ upwind advection instead of quicker, and horizontal diffusion instead of neutral physics.
[real, units: deg C]
t_max_limit
Maximum potential temperature above which will employ upwind advection instead of quicker, and horizontal diffusion instead of neutral physics.
[real, units: deg C]
s_min_limit
Minimum salinity below which will employ upwind advection instead of quicker, and horizontal diffusion instead of neutral physics.
[real, units: psu]
s_max_limit
Maximum salinity below which will employ upwind advection instead of quicker, and horizontal diffusion instead of neutral physics.
[real, units: psu]
debug_this_module
For debugging the module.
[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. Jackett, McDougall, Feistel, Wright, and Griffies (2005) Algorithms for density, potential temperature, conservative temperature, and freezing temperature of seawater. Journal of Atmospheric and Oceanic Technology, 2005 submitted.


COMPILER SPECIFICS

None.


PRECOMPILER OPTIONS

None.


LOADER OPTIONS

None.


TEST PROGRAM

None.


KNOWN BUGS

None.


NOTES

None.


FUTURE PLANS

None.


top