Learn R Programming

oce (version 0.2-1)

swDynamicHeight: Dynamic height of seawater profile

Description

Compute the dynamic height of a column of seawater.

Usage

swDynamicHeight(x, referencePressure=2000)

Arguments

x
a section object, or a ctd object.
referencePressure
reference pressure [dbar]

Value

  • 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].

Details

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.

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 0$^\circ$C, and pressure as in the ctd. The reciprocal difference of these densities is then integrated using integrate with pressure limits 0 to referencePressure, 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 referencePressure, a missing value is reported.

References

Gill, A.E., 1982. Atmosphere-ocean Dynamics, Academic Press, New York, 662 pp.

Examples

Run this code
library(oce)
opar <- par(no.readonly = TRUE)
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)
a03WestToEast <- subset(a03, indices=124:1)
dh <- swDynamicHeight(a03WestToEast)
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
GS <- subset(a03, indices=124:102)
dh.GS <- swDynamicHeight(GS)
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)
par(opar)

Run the code above in your browser using DataLab