water: Properties of Water

View source: R/water.R

waterR Documentation

Properties of Water

Description

Calculate thermodynamic and electrostatic properties of water.

Usage

  water(property = NULL, T = 298.15, P = "Psat", P1 = TRUE)
  water.SUPCRT92(property=NULL, T = 298.15, P = 1, P1 = TRUE)
  water.IAPWS95(property=NULL, T = 298.15, P = 1)
  water.DEW(property=NULL, T = 373.15, P = 1000)

Arguments

property

character, computational setting or property(s) to calculate

T

numeric, temperature (K)

P

numeric, pressure (bar), or ‘⁠Psat⁠’ for vapor-liquid saturation

P1

logical, output pressure of 1 bar below 100 \degC instead of calculated values of ‘⁠Psat⁠’?

Details

These functions compute the thermodynamic (Gibbs energy and it derivatives) and electrostatic (dielectric constant and its derivatives) properties of liquid or supercritical \H2O as a function of temperature and pressure using equations of state taken from the literature. The high-level function water performs different computations, depending on the setting of thermo()$opt$water:

⁠SUPCRT92⁠’ (default) or ‘⁠SUPCRT⁠

Thermodynamic and electrostatic properties are calculated using a FORTRAN subroutine taken from the SUPCRT92 software package (Johnson et al., 1992). See more information below.

⁠IAPWS95⁠’ or ‘⁠IAPWS⁠

Thermodynamic properties are calculated using an implementation in R code of the IAPWS-95 formulation (Wagner and Pruss, 2002), and electrostatic properties are calculated using the equations of Archer and Wang, 1990. See IAPWS95 and more information below.

⁠DEW⁠

Thermodynamic and electrostatic properties are calculated using the Deep Earth Water (DEW) model (Sverjensky et al., 2014). The defaults for T and P reflect the minimum values for applicability of the model; calculations at lower T and/or P points fall back to using ‘⁠SUPCRT92⁠’. See DEW.

Calling the function with no arguments returns the current computational setting. Use e.g. water("DEW") to make the setting; the previous setting (at the time of the function call) is returned invisibly. Subsequent calculations with water, or other functions such as subcrt and affinity, will use that setting.

The allowed propertys for water are one or more of those given below, depending on the computational setting; availability is shown by an asterisk. Note that some of the properties that can actually be calculated using the different formulations are not implemented here. Except for rho, the units are those used by Johnson and Norton, 1991.

Property Description Units IAPWS95 SUPCRT92 DEW
A Helmholtz energy J mol^{-1} * * NA
G Gibbs energy J mol^{-1} * * *
S Entropy J K^{-1} mol^{-1} * * NA
U Internal energy J mol^{-1} * * NA
H Enthalpy J mol^{-1} * * NA
Cv Isochoric heat capacity J K^{-1} mol^{-1} * * NA
Cp Isobaric heat capacity J K^{-1} mol^{-1} * * NA
Speed Speed of sound cm s^{-1} NA * NA
alpha Coefficient of isobaric expansivity K^{-1} NA * NA
beta Coefficient of isothermal compressibility bar^{-1} NA * NA
epsilon Dielectric constant dimensionless NA * *
visc Dynamic viscosity g cm^{-1} s^{-1} NA * NA
tcond Thermal conductivity J cm^{-1} s^{-1} K^{-1} NA * NA
tdiff Thermal diffusivity cm^2 s^{-1} NA * NA
Prndtl Prandtl number dimensionless NA * NA
visck Kinematic viscosity cm^2 s^{-1} NA * NA
albe Isochoric expansivity bar K^{-1} NA * NA
-compressibility
ZBorn Z Born function dimensionless NA * NA
YBorn Y Born function K^{-1} * * NA
QBorn Q Born function bar^{-1} * * *
daldT Isobaric temperature derivative K^{-2} NA * NA
of expansibility
XBorn X Born function K^{-2} * * NA
NBorn N Born function bar^{-2} * NA NA
UBorn U Born function bar^{-1} K^{-1} * NA NA
V Volume cm^3 mol^{-1} * * *
rho Density kg m^3 * * *
Psat Saturation vapor pressure bar * * NA
E Isobaric expansivity cm^3 K^{-1} NA * NA
kT Isothermal compressibility cm^3 bar^{-1} NA * NA
de.dT Temperature derivative K^{-1} * NA NA
of dielectric constant
de.dP Pressure derivative bar^{-1} * NA NA
of dielectric constant
P Pressure bar * NA NA
A_DH A Debye-Huckel parameter kg^{0.5} mol^{-0.5} * * *
B_DH B Debye-Huckel parameter kg^{0.5} mol^{-0.5} cm^{-1} * * *

Call water.SUPCRT92, water.IAPWS95, or water.DEW with no arguments to list the available properties.

water.SUPCRT92 interfaces to the FORTRAN subroutine taken from the SUPCRT92 package (H2O92D.F) for calculating properties of water. These calculations are based on data and equations of Levelt-Sengers et al., 1983, Haar et al., 1984, and Johnson and Norton, 1991, among others (see Johnson et al., 1992). A value of P set to ‘⁠Psat⁠’ refers to one bar below 100 \degC, otherwise to the vapor-liquid saturation pressure at temperatures below the critical point (‘⁠Psat⁠’ is not available at temperatures above the critical point). water.SUPCRT92 provides a limited interface to the FORTRAN subroutine; some functions provided there are not made available here (e.g., using variable density instead of pressure, or calculating the properties of steam).

The stated temperature limits of validity of calculations in water.SUPCRT92 are from the greater of 0 \degC or the melting temperature at pressure, to 2250 \degC (Johnson et al., 1992). Valid pressures are from the greater of zero bar or the melting pressure at temperature to 30000 bar. The present functions do not check these limits and will attempt calculations for any range of input parameters, but may return NA for properties that fail to be calculated at given temperatures and pressures and/or produce warnings or even errors when problems are encountered.

Starting with version 0.9-9.4, a check for minimum pressure (in valTP function in H2O92D.f) has been bypassed so that properties of H2O can be calculated using water.SUPCRT92 at temperatures below the 0.01 \degC triple point. A primary check is still enforced (Tbtm), giving a minimum valid temperature of 253.15 K.

water.IAPWS95 is a wrapper around IAPWS95, rho.IAPWS95 and water.AW90. water.IAPWS95 provides for calculations at specific temperature and pressure; density, needed for IAPWS95, is inverted from pressure using rho.IAPWS95. The function also contains routines for calculating the Born functions as numerical derivatives of the static dielectric constant (from water.AW90). For compatibility with geochemical modeling conventions, the values of Gibbs energy, enthalpy and entropy output by IAPWS95 are converted by water.IAPWS95 to the triple point reference state adopted in SUPCRT92 (Johnson and Norton, 1991; Helgeson and Kirkham, 1974). water.IAPWS95 also accepts setting P to ‘⁠Psat⁠’, with the saturation pressure calculated from WP02.auxiliary; by default the returned properties are for the liquid, but this can be changed to the vapor in thermo()$opt$IAPWS.sat.

A_DH and B_DH are solvent parameters in the “B-dot” (extended Debye-Huckel) equation (Helgeson, 1969; Manning, 2013).

Value

A data frame, the number of rows of which corresponds to the number of input temperature-pressure pairs.

References

Archer, D. G. and Wang, P. M. (1990) The dielectric constant of water and Debye-Hückel limiting law slopes. J. Phys. Chem. Ref. Data 19, 371–411. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1063/1.555853")}

Haar, L., Gallagher, J. S. and Kell, G. S. (1984) NBS/NRC Steam Tables. Hemisphere, Washington, D. C., 320 p. https://www.worldcat.org/oclc/301304139

Helgeson, H. C. and Kirkham, D. H. (1974) Theoretical prediction of the thermodynamic behavior of aqueous electrolytes at high pressures and temperatures. I. Summary of the thermodynamic/electrostatic properties of the solvent. Am. J. Sci. 274, 1089–1098. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2475/ajs.274.10.1089")}

Helgeson, H. C. (1969) Thermodynamics of hydrothermal systems at elevated temperatures and pressures. Am. J. Sci. 267, 729–804. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2475/ajs.267.7.729")}

Johnson, J. W. and Norton, D. (1991) Critical phenomena in hydrothermal systems: state, thermodynamic, electrostatic, and transport properties of H_2O in the critical region. Am. J. Sci. 291, 541–648. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2475/ajs.291.6.541")}

Johnson, J. W., Oelkers, E. H. and Helgeson, H. C. (1992) SUPCRT92: A software package for calculating the standard molal thermodynamic properties of minerals, gases, aqueous species, and reactions from 1 to 5000 bar and 0 to 1000\degC. Comp. Geosci. 18, 899–947. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/0098-3004(92)90029-Q")}

Levelt-Sengers, J. M. H., Kamgarparsi, B., Balfour, F. W. and Sengers, J. V. (1983) Thermodynamic properties of steam in the critical region. J. Phys. Chem. Ref. Data 12, 1–28. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1063/1.555676")}

Manning, C. E. (2013) Thermodynamic modeling of fluid-rock interaction at mid-crustal to upper-mantle conditions. Rev. Mineral. Geochem. 76, 135–164. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.2138/rmg.2013.76.5")}

Sverjensky, D. A., Harrison, B. and Azzolini, D. (2014) Water in the deep Earth: The dielectric constant and the solubilities of quartz and corundum to 60 kb and 1,200 \degC. Geochim. Cosmochim. Acta 129, 125–145. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.gca.2013.12.019")}

Wagner, W. and Pruss, A. (2002) The IAPWS formulation 1995 for the thermodynamic properties of ordinary water substance for general and scientific use. J. Phys. Chem. Ref. Data 31, 387–535. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1063/1.1461829")}

Examples


## Calculations along saturation curve
T <- seq(273.15, 623.15, 25)
# Liquid density, from SUPCRT92
water("rho", T = T, P = "Psat")
# Values of the saturation pressure, Gibbs energy	
water(c("Psat", "G"), T = T, P = "Psat") 
# Derivatives of the dielectric constant (Born functions)
water(c("QBorn", "YBorn", "XBorn"), T = T, P = "Psat")
# Now at constant pressure
water(c("QBorn", "YBorn", "XBorn"), T = T, P = 2000)

## Comparing the formulations
T <- convert(c(25, 100, 200, 300), "K")
# IAPWS-95
oldwat <- water("IAPWS95")
water(water.IAPWS95(), T = T)
# Deep Earth Water (DEW)
water("DEW")
water(water.DEW(), T = T, P = 1000)
# SUPCRT92 (the default)
water(oldwat)
water(water.SUPCRT92(), T = T)

## Calculating Q Born function
# After Table 22 of Johnson and Norton, 1991
T <- rep(c(375, 400, 425, 450, 475), each = 5)
P <- rep(c(250, 300, 350, 400, 450), 5)
w <- water("QBorn", T = convert(T, "K"), P = P)
# The rest is to make a neat table
w <- as.data.frame(matrix(w[[1]], nrow = 5))
colnames(w) <- T[1:5*5]
rownames(w) <- P[1:5]
print(w)

CHNOSZ documentation built on Feb. 12, 2024, 3 p.m.