swDynamicHeight {oce} | R Documentation |
Compute the dynamic height of a column of seawater.
swDynamicHeight(x, referencePressure=2000, subdivisions=500, rel.tol=.Machine$double.eps^0.25, eos=getOption("oceEOS", default="gsw"))
x |
a |
referencePressure |
reference pressure [dbar] |
subdivisions |
number of subdivisions for call to
|
rel.tol |
absolute tolerance for call to |
eos |
equation of state, either |
If the first argument is a section
, then dynamic height is
calculated for each station within a section, and returns a list containing
distance along the section along with dynamic height.
If the first argument is a ctd
, then this returns just a single
value, the dynamic height.
If eos="unesco"
, processing is as follows. First, a piecewise-linear
model of the density variation with pressure is developed using
approxfun
. (The option rule=2
is used to
extrapolate the uppermost density up to the surface, preventing a possible a
bias for bottle data, in which the first depth may be a few metres below the
surface.) A second function is constructed as the density of water with
salinity 35PSU, temperature of 0degC, and pressure as in the
ctd
. The difference of the reciprocals of these densities, is then
integrated with integrate
with pressure limits 0
to referencePressure
. (For improved numerical results, the variables
are scaled before the integration, making both independent and dependent
variables be of order one.)
NOTE: As of early 2015, the eos="gsw"
case is handled exactly the same
as the "unesco"
case, because the GSW C code (version 3.0.3) lacks the
requisite functions.
In the first form, a list containing distance
, the
distance [km] from the first station in the section and height
,
the dynamic height [m].
In the second form, a single value, containing the dynamic height [m].
Dan Kelley
Gill, A.E., 1982. Atmosphere-ocean Dynamics, Academic Press, New York, 662 pp.
## Not run: library(oce) data(section) # Dynamic height and geostrophy par(mfcol=c(2,2)) par(mar=c(4.5,4.5,2,1)) # Left-hand column: whole section # (The smoothing lowers Gulf Stream speed greatly) westToEast <- subset(section, 1<=stationId&stationId<=123) dh <- swDynamicHeight(westToEast) plot(dh$distance, dh$height, type='p', xlab="", ylab="dyn. height [m]") ok <- !is.na(dh$height) smu <- supsmu(dh$distance, dh$height) lines(smu, col="blue") f <- coriolis(section[["station", 1]][["latitude"]]) g <- gravity(section[["station", 1]][["latitude"]]) v <- diff(smu$y)/diff(smu$x) * g / f / 1e3 # 1e3 converts to m plot(smu$x[-1], v, type='l', col="blue", xlab="distance [km]", ylab="velocity [m/s]") # right-hand column: gulf stream region, unsmoothed gs <- subset(section, 102<=stationId&stationId<=124) dh.gs <- swDynamicHeight(gs) plot(dh.gs$distance, dh.gs$height, type='b', xlab="", ylab="dyn. height [m]") v <- diff(dh.gs$height)/diff(dh.gs$distance) * g / f / 1e3 plot(dh.gs$distance[-1], v, type='l', col="blue", xlab="distance [km]", ylab="velocity [m/s]") ## End(Not run)