Skip to contents

Calculates dissolved oxygen saturation in mg/L from water temperature, barometric pressure, and salinity. This is the DO.sat quantity commonly required by stream metabolism models.

Usage

calc_O2sat(temp_water, atmo_press, units = "atm", salinity = 0)

Arguments

temp_water

Numeric vector. Water temperature in degrees Celsius.

atmo_press

Numeric vector. Barometric pressure at the site.

units

Character string. Units of atmo_press. Accepted values are "atm", "hPa", "mbar", and "kPa". Defaults to "atm".

salinity

Numeric vector. Salinity in parts per thousand. Defaults to freshwater (0).

Value

Numeric vector of dissolved oxygen saturation in mg/L.

Details

The calculation uses the Benson and Krause umol/kg fit reported by Garcia and Gordon (1992), applies a vapor-pressure correction for non-standard barometric pressure, and converts from mass-based concentration to mg/L with a salinity-aware density correction.

Examples

calc_O2sat(temp_water = 15, atmo_press = 1, units = "atm")
#> [1] 10.08428

calc_O2sat(
  temp_water = c(5, 15, 25),
  atmo_press = c(101.2, 100.8, 100.5),
  units = "kPa"
)
#> [1] 12.754794 10.031147  8.193915