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