Module ocean_tempsalt_mod
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
PUBLIC DATA
None.
PUBLIC ROUTINES
-
ocean_tempsalt_init
-
DESCRIPTION
- Initialize the temperature/salinity module.
-
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.
-
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
-
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
-
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
-
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.
-
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).
-
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).
-
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
-
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
-
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
- Feistel (2003)
A new extended Gibbs thermodynamic potential of seawater
Progress in Oceanography. vol 58, pages 43-114.
- 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.