| 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)