Learn R Programming

seacarb (version 2.3.1)

buffesm: Buffer capacities of the seawater carbonate system as defined by Egleston et al. (2010)

Description

Returns the six buffer factors of the seawater carbonate system as defined by Egleston, Sabine and Morel (2010), denoted here as ESM. Also returns the classic Revelle factor (relative change in pCO2 over that for DIC). In ESM, there are errors in the equations in Table 1 for $S$, $\Omega_{DIC}$, and $\Omega_{Alk}$. These errors have been corrected here. The results of this routine have been validated: they produce results that are identical to those shown in ESM's Fig. 2. This routine was inspired and adapted from seacarb's ``buffer'' function. Its input arguments are indentical to those in the ``buffer'' and ``carb'' functions of seacarb.

Usage

buffesm(flag, var1, var2, S=35, T=25, P=0, Pt=0, Sit=0, k1k2="x", 
	kf="x", ks="d", pHscale="T")

Arguments

flag
select the couple of variables available. The flags which can be used are: flag = 1 pH and CO2 given flag = 2 CO2 and HCO3 given flag = 3 CO2 and CO3 given flag = 4 CO2 and ALK given flag = 5 CO2 and DIC given f
var1
enter value of the first variable in mol/kg, except for pH and for pCO2 in $\mu$atm
var2
enter value of the second variable in mol/kg, except for pH
S
Salinity
T
Temperature in degrees Celsius
P
Hydrostatic pressure in bar (surface = 0)
Pt
Concentration of total phosphate in mol/kg
Sit
Concentration of total silicate in mol/kg
k1k2
"l" for using K1 and K2 from Lueker et al. (2000), "m06" from Millero et al. (2006), "m10" from Millero (2010) and "r" from Roy et al. (1993). "x" is the default flag; the default value is then "l", except if T is outside the range 2 to 35oC and/or S is o
kf
"pf" for using Kf from Perez and Fraga (1987) and "dg" for using Kf from Dickson and Riley (1979 in Dickson and Goyet, 1994). "x" is the default flag; the default value is then "pf", except if T is outside the range 9 to 33oC and/or S is outside the range
ks
"d" for using Ks from Dickon (1990), "k" for using Ks from Khoo et al. (1977), default is "d"
pHscale
choice of pH scale: "T" for the total scale, "F" for the free scale and "SWS" for using the seawater scale, default is "T" (total scale)

Value

  • The function returns a data frame containing the following columns:
  • gammaDIC$\gamma_{DIC}$, ocean's capacity to buffer changes in [CO2] due to accumulation of CO2 from the atmosphere $(\partial ln[CO_2]/\partial DIC)^{-1}$ (units = mol/kg; multiply by 1000 to get mmol/kg, i.e., the units presented in Egleston et al., 2010)
  • betaDIC$\beta_{DIC}$, ocean's capacity to buffer changes in [H+] due to accumulation of CO2 from the atmosphere $(\partial ln[H^+]/\partial DIC)^{-1}$ (units = mol/kg)
  • omegaDIC$\Omega_{DIC}$, ocean's capacity to buffer changes in $[CO_3^{2-}]$ due to accumulation of CO2 from the atmosphere $(\partial ln[CO_3^{2-}]/\partial DIC)^{-1}$; same as $(\partial ln \Omega_A / \partial DIC)^{-1}$ and $(\partial ln \Omega_C / \partial DIC)^{-1}$ (units= mol/kg)
  • gammaALK$\gamma_{Alk}$, ocean's capacity to buffer changes in [CO2] due to changes in alkalinity $(\partial ln[CO_2]/\partial ALK)^-1$ (units = mol/kg)
  • betaALK$\beta_{Alk}$, ocean's capacity to buffer changes in [H+] due to changes in alkalinity $(\partial ln[H^+]/\partial ALK)^{-1}$ (units = mol/kg)
  • omegaALK$\Omega_{Alk}$, ocean's capacity to buffer changes in $[CO_3^{2-}]$ due to changes in alkalinity $(\partial ln[CO_3^{2-}]/\partial ALK)^{-1}$; same as $(\partial ln \Omega_A / \partial ALK)^{-1}$ and $(\partial ln \Omega_C / \partial ALK)^{-1}$ (units = mol/kg)
  • RRevelle factor, relative change in $[CO_2]$ or $pCO_2$ over the relative change in DIC $(\partial ln[CO_2]/\partial ln DIC)^{-1}$ (unitless)

encoding

latin1

Details

The Lueker et al. (2000) constants for K1 and K2, the Perez and Fraga (1987) constant for Kf and the Dickson (1990) constant for Ks are recommended by Dickson et al. (2007). It is, however, critical to consider that each formulation is only valid for specific ranges of temperature and salinity: For K1 and K2:
  • Roy et al. (1993): S ranging between 0 and 45 and T ranging between 0 and 45oC.
  • Lueker et al. (2000): S ranging between 19 and 43 and T ranging between 2 and 35oC.
  • Millero et al. (2006): S ranging between 0.1 and 50 and T ranging between 1 and 50oC.
  • Millero (2010): S ranging between 1 and 50 and T ranging between 0 and 50oC. Millero (2010) provides a K1 and K2 formulation for the seawater, total and free pH scales. Therefore, when this method is used and if P=0, K1 and K2 are computed with the formulation corresponding to the pH scale given in the flag? "pHscale".
For Kh:
  • Perez and Fraga (1987): S ranging between 10 and 40 and T ranging between 9 and 33oC.
  • Dickson and Riley (1979 in Dickson and Goyet, 1994): S ranging between 0 and 45 and T ranging between 0 and 45oC.
For Ks:
  • Dickson (1990): S ranging between 5 and 45 and T ranging between 0 and 45oC.
  • Khoo et al. (1977): S ranging between 20 and 45 and T ranging between 5 and 40oC.
The arguments can be given as a unique number or as vectors. If the lengths of the vectors are different, the longer vector is retained and only the first value of the other vectors is used. It is recommended to use either vectors with the same dimension or one vector for one argument and numbers for the other arguments. Pressure corrections and pH scale:
  • For K1, K2, pK1, pK2, pK3, Kw, Kb, Khs and Ksi, the pressure correction was applied on the seawater scale. Hence, if needed, values were first transformed from the total scale to the seawater scale, the pressure correction applied as described by Millero (1995), and the value was transformed back to the required scale (T, F or SWS).
  • For Kf, the pressure correction was applied on the free scale. The formulation of Dickson and Riley (1979 in Dickson and Goyet, 1994) provides Kf on the free scale but that of Perez and Fraga (1987) provides it on the total scale. Hence, in that case, Kf was first transformed from the total scale to the free scale. With both formulations, the pressure correction was applied as described by Millero (1995), and the value was transformed back to the required scale (T, F or SWS).
  • For Ks, the pressure correction was applied on the free scale. The pressure correction was applied as described by Millero (1995), and the value was transformed back to the required scale (T, F or SWS).
  • For Kn, The pressure correction was applied on the seawater scale. The pressure correction was applied as described by Millero (1995), and the value was transformed back to the required scale (T, F or SWS).

References

Dickson A. G., 1990 Standard potential of the reaction: AgCI(s) + 1/2H2(g) = Ag(s) + HCI(aq), and the standard acidity constant of the ion HSO4 in synthetic sea water from 273.15 to 318.15 K. Journal of Chemical Thermodynamics 22, 113-127. Dickson A. G., Sabine C. L. and Christian J. R., 2007 Guide to best practices for ocean CO2 measurements. PICES Special Publication 3, 1-191. Egleston, E. S., Sabine, C. L. and Morel, F. M. M., 2010 Revelle revisited: Buffer factors that quantify the response of ocean chemistry to changes in DIC and alkalinity, Global Biogeochem. Cycles 24, GB1002, doi:10.1029/2008GB003407. Khoo H. K., Ramette R. W., Culberson C. H. and Bates R. G., 1977 Determination of hydrogen ion concentration in seawater from 5 to 40oC: standard potentials at salinities from 20 to 45. Analytical Chemistry 49, 29-34. Frankignoulle M., 1994 A complete set of buffer factors for acid/base CO2 system in seawater. Journal of Marine Systems 5, 111-118. Lueker T. J., Dickson A. G. and Keeling C. D., 2000 Ocean pCO2 calculated from dissolved inorganic carbon, alkalinity, and equations for K1 and K2: validation based on laboratory measurements of CO2 in gas and seawater at equilibrium. Marine Chemistry 70 105-119. Millero F. J., 2010 Carbonate constant for estuarine waters. Marine and Freshwater Research 61: 139-142. Millero F. J., Graham T. B., Huang F., Bustos-Serrano H. and Pierrot D., 2006 Dissociation constants of carbonic acid in seawateras a function of salinity and temperature. Marine Chemistry 100, 80-84. Perez F. F. and Fraga F., 1987 Association constant of fluoride and hydrogen ions in seawater. Marine Chemistry 21, 161-168. Roy R. N., Roy L. N., Vogel K. M., Porter-Moore C., Pearson T., Good C. E., Millero F. J. and Campbell D. M., 1993. The dissociation constants of carbonic acid in seawater at salinities 5 to 45 and temperatures 0 to 45oC. Marine Chemistry 44, 249-267.

Examples

Run this code
## Computation with a couple of variables
buffesm(flag=8, var1=8.2, var2=0.00234, S=35, T=25, P=0, Pt=0, 
	Sit=0, pHscale="T", kf="pf", k1k2="l")

## Using vectors as arguments
flag <- c(8, 2, 8)
var1 <- c(8.2, 7.477544e-06, 8.2)
var2 <- c(0.002343955, 0.001649802, 2400e-6)
S <- c(35, 35, 30)
T <- c(25, 25, 30)
P <- c(0, 0, 0)
Pt <- c(0, 0, 0)
Sit <- c(0, 0, 0)
kf <- c("pf", "pf", "pf")
k1k2 <- c("l", "l", "l")
pHscale <- c("T", "T", "T")
buffesm(flag=flag, var1=var1, var2=var2, S=S, T=T, P=P, Pt=Pt, 
	Sit=Sit, kf=kf, k1k2=k1k2, pHscale=pHscale)

## Test for all flags 
flag <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 22, 23, 24, 25)

var1 <- c(8.200000, 7.477544e-06, 7.477544e-06, 7.477544e-06, 7.477544e-06, 8.2, 
	8.2, 8.2, 8.2, 0.001685024, 0.001685024, 0.001685024,  0.0002888382, 
	0.0002888382, 0.002391252, 264.2008, 264.2008, 264.2008, 264.2008, 264.2008)
var2 <- c(7.477544e-06, 0.001685024, 0.0002888382, 0.002391252, 0.001981340, 
	0.001685024, 0.0002888382, 0.002391252, 0.001981340, 0.0002888382, 0.002391252,
	0.001981340,  0.002391252, 0.001981340, 0.001981340, 8.2, 0.001685024, 
	0.0002888382, 0.002391252, 0.001981340)
buffesm(flag=flag, var1=var1, var2=var2)

## Compute 2 additional factors of interest (ratios of relative changes)
be <- buffesm(flag=flag, var1=var1, var2=var2, S=S, T=T, P=P, Pt=Pt, 
	Sit=Sit, kf=kf, k1k2=k1k2, pHscale=pHscale)
#     Ratio of gammaDIC/betaDIC = d ln [H+] / d ln pCO2
      Hfac <- (be$gammaDIC/be$betaDIC)                         #H+ factor
#     Ratio of gammaDIC/omegaDIC = d ln [CO32-] / d ln pCO2
      Satfac <- (be$gammaDIC/be$omegaDIC)                      #Saturation factor

Run the code above in your browser using DataLab