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 section object.

- referencePressure
reference pressure (dbar). If this exceeds the highest pressure supplied to

`swDynamicHeight()`

, then that highest pressure is used, instead of the supplied value of`referencePressure`

.- subdivisions
number of subdivisions for call to

`integrate()`

. (The default value is considerably larger than the default for`integrate()`

, because otherwise some test profiles failed to integrate.- rel.tol
absolute tolerance for call to

`integrate()`

. Note that this call is made in scaled coordinates, i.e. pressure is divided by its maximum value, and dz/dp is also divided by its maximum.- eos
equation of state, either

`"unesco"`

or`"gsw"`

.

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

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
`stats::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 difference of the reciprocals of these densities, is then
integrated with `stats::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.)

If `eos="gsw"`

, `gsw::gsw_geo_strf_dyn_height()`

is used
to calculate a result in m^2/s^2, and this is divided by
9.7963\(m/s^2\).
If pressures are out of order, the data are sorted. If any pressure
is repeated, only the first level is used.
If there are under 4 remaining distinct
pressures, `NA`

is returned, with a warning.

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

Other functions that calculate seawater properties:
`T68fromT90()`

,
`T90fromT48()`

,
`T90fromT68()`

,
`computableWaterProperties()`

,
`locationForGsw()`

,
`swAbsoluteSalinity()`

,
`swAlphaOverBeta()`

,
`swAlpha()`

,
`swBeta()`

,
`swCSTp()`

,
`swConservativeTemperature()`

,
`swDepth()`

,
`swLapseRate()`

,
`swN2()`

,
`swPressure()`

,
`swRho()`

,
`swRrho()`

,
`swSCTp()`

,
`swSR()`

,
`swSTrho()`

,
`swSigma0()`

,
`swSigma1()`

,
`swSigma2()`

,
`swSigma3()`

,
`swSigma4()`

,
`swSigmaTheta()`

,
`swSigmaT()`

,
`swSigma()`

,
`swSoundAbsorption()`

,
`swSoundSpeed()`

,
`swSpecificHeat()`

,
`swSpice()`

,
`swSstar()`

,
`swTFreeze()`

,
`swTSrho()`

,
`swThermalConductivity()`

,
`swTheta()`

,
`swViscosity()`

,
`swZ()`