sw.dynamic.height {oce} | R Documentation |
Compute the dynamic height of a column of seawater.
dh <- sw.dynamic.height(section, pref=2000) h <- sw.dynamic.height(ctd, pref=2000)
section |
a section object |
ctd |
an object of class "ctd ". |
pref |
reference pressure [dbar] |
The first form calculates dynamic height for each station within a section, and returns a list containing distance along the section along with dynamic height.
The second form calculates dynamic height for a single station, and returns just a single value, the dynamic height.
Stations are analysed in steps. 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 reciprocal difference of these
densities is then integrated using integrate
with pressure limits
0
to pref
, and divided by the acceleration due to gravity, to calculate the
dynamic height.
If the water column is too short to have bottom pressure exceeding pref
, a missing
value is reported.
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.
library(oce) data(a03) # 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) a03.west.to.east <- section.subset(a03, 124:1) dh <- sw.dynamic.height(a03.west.to.east) 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(a03$data$station[[1]]$metadata$latitude) g <- gravity(a03$data$station[[1]]$metadata$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]") abline(h=0) # Right-hand column: Gulf Stream region, unsmoothed Gulf.Stream <- section.subset(a03, 124:102) dh.GS <- sw.dynamic.height(Gulf.Stream) plot(dh.GS$distance, dh.GS$height, type='b', xlab="", ylab="Dyn. Height [m]") grid() 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]") grid() abline(h=0)