
potmp_insitu_ocn
Calculate seawater potential temperature at an arbitrary reference pressure given insitu temperature, salinity and depth.
Available in version 6.1.0 and later.
Prototype
function potmp_insitu_ocn ( t : numeric, s : numeric, pres : numeric, pref [1] : numeric, dims : integer, opt [1] : logical ) return_val : numeric
Arguments
tA scalar or array containing insitu temperature (degC). This must be the same size and shape as s.
sA scalar or array containing salinity (g/kg). This must be the same size and shape as t.
presOcean pressure (decibars) corresponding to each t and s.
prefOcean reference pressure (decibars). Usually, this is 0.0
dimsThe dimension(s) of t to which pres correspond. Must be consecutive and monotonically increasing.
optOptions. When calculating potential temperature, this should be set to False. If opt=True and the attribute opt@reverse=True then the input temperatures are potential temperatures and the returned temperatures will be 'observed' temperature.
Return value
If any t, s, pres or pref are double, the returned array will be double; otherwise, type float.
Description
Calculate seawater potential temperature at an arbitrary reference pressure given insitu temperature and salinity.
NOTE: This is not the method used used in the POP model. Rather,
the method used in the following reference is used.
References
Computation of Potential Temperature of Seawater for an Arbitrary Reference Pressure N.P. Fofonoff Deep Sea Res. 1977, 24, 489-491
See Also
Examples
Example 1: Given insitu t and s calculate ocean potential temperature. The dims argument is 0 since a scalar is a one-dimensional array of size one.
t = 2.0 ; degC; insitu temperature s = 35.0 ; g/kg pres = 1000 ; decibars pref = 0.0 ; user specified reference pressure (dbars) pot = potmp_insitu_ocn(t,s,pres,pref, 0 ,False) ; pot=1.939
Example 2: Read observed ocean depths, temperatures and salinities and calculate ocean potential temperatures. These are one-dimensional so the dims argument is 0.
dat = asciiread("bath_ocean.txt", (/klev,3/), "float") d = dat(:,0) ; depth; meters; (klev) t = dat(:,1) ; temp ; degC ; (klev) s = dat(:,2) ; salinity; g/kg; (klev) pref = 0.0 ; user specified reference pressure (dbars) pres@units = "decibar" ; must be decibar units pd = depth_to_pres( d, False )*10 ; bars*10 => decibars pot = potmp_insitu_ocn(t,s,pd,pref, 0 ,False) ; pot(ntim,klev,nlat,nlon)
Example 3: Read gridded insitu ocean temperatures and salinities and calculate ocean potential temperatures. The pres corresponds to the klev dimension of t and s, hence, dims should be set to 1.
f = addfile("OCEAN.nc", "r") t = f->T ; degC; (ntim,klev,nlat,nlon) s = f->S ; g/kg; ( 0 , 1 , 2 , 3 ) zcm = f->depth ; cm ; (klev) ; calculate pressure depth; convert input (cm) to meters pd = depth_to_pres( zcm*0.01, False ) ; decibars pref = 0.0 ; user specified reference pressure (dbars) pres@units = "decibar" ; must be decibar units pot = potmp_insitu_ocn(t,s,pd,pref, 1 ,False) ; pot(ntim,klev,nlat,nlon)