Re: [idvusers] Ocean pressure => depth in IDV

Hi Rich-

Rich Signell wrote:
 > I just discovered that IDV cannot plot ocean profile data correctly
when the vertical coordinate is pressure.

Profiling instruments determine depth by measuring the hydrostatic
pressure, so pressure relative to the sea surface is commonly used as
the vertical coordinate for ocean profile data.    The units of ocean
pressure are nearly decibars, because they equate very nearly to
meters.    Here's an example table at 40 degrees north from "Data
Analysis Methods in Physical Oceanography" by Emery and Thomson:

Pressure     Depth   Difference
   (dbar)         (m)            (%)
     0                 0               0
  100               99               1
1000             990               1
2000           1975            1.3
3000           2956            1.5
6000           5872            2.1

For the atmosphere, the IDV users guide says "the IDV displays
pressure surfaces by converting the pressure to a height in some
reference system. There are two reference systems that come standard
with the IDV - the U.S. Standard Atmosphere and a logarithmic
conversion (also used in Vis5D). The U.S. Standard Atmosphere only
computes conversions for pressures up to about 80 km. The logarithmic
coordinate system uses the following equations:
      P = 1012.5 * e^( H / -7.2 )        (^ denotes exponentiation)
      H = -7.2 * Ln( P / 1012.5 )        (Ln denotes natural log)
so can be used for heights above 80 km."

There are hooks in the IDV for adding in your own vertical
transformations.  The two above are the only ones that have
been implemented.  Contact me offline if you are interested
in developing one and implementing it.

For the ocean, we either simply use decibars as depth, or as in the
atmophere, use a formula to convert pressure to depth.

I know of two standard  formulas (given here in Matlab syntax, but
hopefully understandable):

1. the official UNESCO formula to derive depth from pressure:
% Eqn 25, p26.  Unesco 1983.
%    Unesco 1983. Algorithms for computation of fundamental properties of
%    seawater, 1983. _Unesco Tech. Pap. in Mar. Sci._, No. 44, 53 pp.
%   coded in Matlab by Phil Morgan, CSIRO
%=========================================================================

function DEPTHM = sw_dpth(P,LAT)

% DEPTHM = depth in meters
% P = pressure in decibars
% LAT = latitude in decimal degrees north

DEG2RAD = pi/180;
c1 = +9.72659;
c2 = -2.2512E-5;
c3 = +2.279E-10;
c4 = -1.82E-15;
gam_dash = 2.184e-6;

LAT = abs(LAT);
X   = sin(LAT*DEG2RAD);  % convert to radians
X   = X.*X;
bot_line = 9.780318*(1.0+(5.2788E-3+2.36E-5*X).*X) + gam_dash*0.5*P;
top_line = (((c4*P+c3).*P+c2).*P+c1).*P;
DEPTHM   = top_line./bot_line;

2.  the simpler version from Saunders, which produces depths within
one meter of the more complex UNESCO formula:

%Saunders, 1981, "Practical conversion of pressure to depth"
% Journal of Physical Oceanography, April 1981, V11, p573-574.

function DEPTHM = sw_depth(P,LAT)
DEG2RAD=pi/180;
X = sin(LAT*DEG2RAD);
c1 = (5.92 + 5.25*X.*X)*1.e-3;
c2 = 2.21E-6;
DEPTHM = (1 - c1).*P - c2*P.*P;

If it were me, I'd use the latter.

Of course, how to determine whether we are in the ocean or not?

Perhaps in IDV we could just use the ocean formula when the units are
"decibars", "decibar", "dbar" or "dbars" until we have a CF convention
(or do we already have one) to determine if we are in the ocean or
not.

I'd rather not hardcode something like that.  Since the
IDV is uses in several geoscience disciplines, I could imagine
someone else having data with a vertical dimension in units
of dbar and wanting something different.

I'll contact you offline about this.

Don
*************************************************************
Don Murray                               UCAR Unidata Program
dmurray@xxxxxxxxxxxxxxxx                        P.O. Box 3000
(303) 497-8628                              Boulder, CO 80307
http://www.unidata.ucar.edu/staff/donm
*************************************************************