Module ocean_tempsalt_mod
OVERVIEW
Setup the temperature and salinity tracer fields.
Convert between potential temperature and conservative temperature.
This routine sets up the temperature and salinity tracer fields.
It also performs a converstion between potential temperature and
conservative temperature, with the conversion valid over most
large-scale oceanographically relevant ranges.
0psu <= salinity <= 40 psu
-3C <= theta <= 40C (theta=conservative temperature or potential temperature)
0dbar <= pressure <= 8000dbar
Input variables are the following:
salinity
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 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.
One example given here assumes profile is a function of depth_st,
with the assumption that s=geopotential OR s=zstar.
To use this approach with pressure coordinate, need to alter the
reinit_ts_with_ideal_efold value, since depth_st is in MKS, not dbar.
-
contemp_from_pottemp_field
-
DESCRIPTION
-
Compute conservative temperature for all grid points.
Input is potential temperature (C) and salinity(psu or g/kg).
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 or g/kg).
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 or g/kg).
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
-
tempsalt_check_range
-
DESCRIPTION
-
Check to see that temperature and salinity are within preset
range. If outside of the range, then bring the model down.
This check is particularly useful to ensure that the equation
of state is evaluated with physically sensible values of temp
and salinity.
NAMELIST
&ocean_tempsalt_nml
-
teos10
For choosing whether to use the TEOS-10 equation of state.
This usage requires conservative temperature as the temperature variable,
and two salinity variables: Preformed Salinity and Absolute Salinity
anomaly. Default teos10=.false.
[logical]
-
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/conservative temperature below which we gracefully bring down the model.
[real, units: deg C]
-
t_max
Maximum potential/conservative 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: ppt]
-
s_max
Maximum salinity below which we gracefully bring down the model.
[real, units: ppt]
-
t_min_limit
Minimum potential/conservative 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/conservative 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]
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.