berman {CHNOSZ}R Documentation

Thermodynamic Properties of Minerals


Calculate thermodynamic properties of minerals using the equations of Berman (1988).


  berman(name, T = 298.15, P = 1, thisinfo = NULL, check.G = FALSE,
         calc.transition = TRUE, calc.disorder = TRUE, units = "cal")



character, name of mineral


numeric, temperature(s) at which to calculate properties (K)


numeric, pressure(s) at which to calculate properties (bar)


dataframe, row for mineral from thermo$obigt


logical, check consistency of G, H, and S?


logical, include calculation of polymorphic transition properties?


logical, include calculation of disordering properties?


character, energy units, cal or J


This function calculates the thermodynamic properties of minerals at high P and T using equations given by Berman (1988). The name refers to a mineral that must be listed in thermo$obigt with the state cr_Berman. This file also holds the chemical formula, which is required for calculating the entropies of the elements in the mineral. These entropies are used to convert the apparent Gibbs energies from the Berman-Brown convention to the the Benson-Helgeson convention (cf. Anderson, 2005).

Becuase they use a different set of parameters than Helgeson et al., 1978 (see cgl), the standard state thermodynamic properties and parameters for the calculations are stored in files under extdata/Berman.

If check.G is TRUE, the tabulated value of DGfTrPr is compared with one calculated from DHfPrTr - T*DSPrTr (DS is the difference between the summed entropies of the elements and the tabulated entropy for the mineral). A warning is produced if the absolute value of the difference between tabulated and calculated DGfTrPr is greater than 1000 J/mol.

Providing thisinfo means that the mineral name is not searched in thermo$obigt, potentially saving some running time.


Anderson, G. M. (2005) Thermodynamics of Natural Systems, 2nd ed., Cambridge University Press, 648 p.

Berman, R. G. (1988) Internally-consistent thermodynamic data for minerals in the system Na2O-K2O-CaO-MgO-FeO-Fe2O3-Al2O3-SiO2-TiO2-H2O-CO2. J. Petrol. 29, 445-522.

Helgeson, H. C., Delany, J. M., Nesbitt, H. W. and Bird, D. K. (1978) Summary and critique of the thermodynamic properties of rock-forming minerals. Am. J. Sci. 278-A, 1–229.

Sverjensky, D. A., Hemley, J. J. and D'Angelo, W. M. (1991) Thermodynamic assessment of hydrothermal alkali feldspar-mica-aluminosilicate equilibria. Geochim. Cosmochim. Acta 55, 989-1004.


# other than the formula, the parameters aren't stored in
# thermo$obigt, so this shows NAs
info(info("quartz", "cr_Berman"))
# properties of alpha-quartz (aQz) at 298.15 K and 1 bar
# Gibbs energies of aQz and coesite at higher T and P
T <- seq(200, 1300, 100)
P <- seq(22870, 31900, length.out=length(T))
G_aQz <- berman("quartz", T=T, P=P)$G
G_Cs <- berman("coesite", T=T, P=P)$G
# that is close to the univariant curve (Ber88 Fig. 4),
# so the difference in G is close to 0
DGrxn <- G_Cs - G_aQz
stopifnot(all(abs(DGrxn) < 100))

# calculate the properties of a "reaction" between
# the Helgeson and Berman versions of quartz
T <- 1000
P <- c(10000, 20000)
subcrt(rep("quartz", 2), c("cr", "cr_Berman"), c(-1, 1), T=T, P=P)

# make a P-T diagram for SiO2 minerals (Ber88 Fig. 4)
basis(c("SiO2", "O2"), c("cr_Berman", "gas"))
species(c("quartz", "quartz,beta", "coesite"), "cr_Berman")
a <- affinity(T=c(200, 1700, 200), P=c(0, 50000, 200))

## a longer example, comparing diagrams made using the
## Berman and Helgeson datasets, after Sverjensky et al., 1991
res <- 200
# using the Helgeson data
# set up basis species
basis(c("K+", "Al+3", "quartz", "H2O", "O2", "H+"))
# use pH = 0 so that aK+ = aK+/aH+
basis("pH", 0)
# load the species
species(c("K-feldspar", "muscovite", "kaolinite",
          "pyrophyllite", "andalusite"), "cr")
# calculate affinities in aK+ - temperature space
a <- affinity(`K+`=c(0, 5, res), T=c(200, 650, res), P=1000)
# note that we go just past the quartz transition,
# but it has no effect on the diagram
diagram(a, xlab=ratlab("K+"))
# now using the Berman data
basis("SiO2", "cr_Berman")
# it might be good to check that we have Berman's quartz
# and not coesite or some other SiO2 phase
# remove the Helgeson minerals
# load the Berman minerals
species(c("K-feldspar", "muscovite", "kaolinite",
          "pyrophyllite", "andalusite"), "cr_Berman")
a <- affinity(`K+`=c(0, 5, res), T=c(200, 650, res), P=1000)
diagram(a, add=TRUE, names="", col="blue", lwd=2)
legend("topleft", lty=c(1, 1, NA), lwd=c(1, 2, 0), col=c("black", "blue", ""),
       legend=c("Helgeson et al., 1978 (unadjusted)",
       "Berman, 1988", "    (adjusted by Sverjensky et al., 1991)"), bty="n")
title(main="Comparison of Helgeson and Berman datasets at 1000 bar")

[Package CHNOSZ version 1.1.3 Index]