Compute density ratio for a ctd object. An error (perhaps with some hints) is issued for any other type of object.

  sense = c("diffusive", "finger"),
  smoothingLength = 10,
  eos = getOption("oceEOS", default = "gsw"),
  debug = getOption("oceDebug")



an oce object that holds salinity, temperature, and pressure. If eos is "gsw", then it must also hold longitude and latitude.


an indication of the sense of double diffusion under study and therefore of the definition of Rrho; see “Details”


ignored if df supplied, but otherwise the latter is calculated as the number of data points, divided by the number within a depth interval of smoothingLength metres.


if given, this is provided to smooth.spline().


equation of state, either "unesco" or "gsw".


an integer specifying whether debugging information is to be printed during the processing. This is a general parameter that is used by many oce functions. Generally, setting debug=0 turns off the printing, while higher values suggest that more information be printed. If one function calls another, it usually reduces the value of debug first, so that a user can often obtain deeper debugging by specifying higher debug values.


Density ratio defined in either the "diffusive" or "finger" sense.


If eos="unesco", the work is done by calculating salinity and potential-temperature derivatives from smoothing splines whose properties are governed by smoothingLength or df. If sense="diffusive" the definition is \((beta*dS/dz)/(alpha*d(theta)/dz)\) and the reciprocal for "finger".

If eos="gsw", the work is done by extracting absolute salinity and conservative temperature, smoothing with a smoothing spline as in the "unesco" case, and then calling gsw::gsw_Turner_Rsubrho() on these smoothed fields. Since the gsw function works on mid-point pressures, approx() is used to interpolate back to the original pressures.

If the default arguments are acceptable, ctd[["Rrho"]] may be used instead of swRrho(ctd).


Dan Kelley and Chantelle Layton


u <- swRrho(ctd, eos = "unesco")
g <- swRrho(ctd, eos = "gsw")
p <- ctd[["p"]]
plot(u, p, ylim = rev(range(p)), type = "l", xlab = expression(R[rho]))
lines(g, p, lty = 2, col = "red")
legend("topright", lty = 1:2, legend = c("unesco", "gsw"), col = c("black", "red"))