Berman {CHNOSZ} | R Documentation |
Calculate thermodynamic properties of minerals using the equations of Berman (1988).
Berman(name, T = 298.15, P = 1, check.G = FALSE,
calc.transition = TRUE, calc.disorder = TRUE)
name |
character, name of mineral |
T |
numeric, temperature(s) at which to calculate properties (K) |
P |
numeric, pressure(s) at which to calculate properties (bar) |
check.G |
logical, check consistency of G, H, and S? |
calc.transition |
logical, include calculation of polymorphic transition properties? |
calc.disorder |
logical, include calculation of disordering properties? |
This function calculates the thermodynamic properties of minerals at high P and T using equations given by Berman (1988).
These minerals should be listed in thermo()$OBIGT
with the state ‘cr’ and chemical formula, and optionally an abbreviation and references, but all other properties set to NA.
The standard state thermodynamic properties and parameters for the calculations are stored in data files under extdata/Berman
, or can be read from a user-created file specified by thermo()$opt$Berman
.
The equation used for heat capacity is CP = k0 + k1*T-0.5 + k2*T-2 + k3*T-3 + k4*T-1 + k5*T + k6*T2.
This is an extended form Eq. 4 of Berman (1988) as used in the winTWQ program (Berman, 2007).
The equation used for volume is V(P, T) / V(1 bar, 298.15 K) = 1 + v1 * (T - 298.15) + v2 * (T - 298.15)2 + v3 * (P - 1) + v4 * (P - 1)2 (Berman, 1988, Eq. 5, with terms reordered to follow winTWQ format).
The equations used for lambda transitions follow Eqs. 8-14 of Berman (1988).
The equation used for the disorder contribution between Tmin and Tmax is CP[dis] = d0 + d1*T-0.5 + d2*T-2 + d3*T + d4*T2 (Berman, 1988, Eq. 15).
The parameters correspond to Tables 2 (GfPrTr
, HfPrTr
, SPrTr
, VPrTr
), 3a (k0
to k3
), 4 (v1
to v4
), 3b (transition parameters: Tlambda
to dTH
), and 5 (disorder parameters: Tmax
, Tmin
, d1
to d4
and Vad
) of Berman (1988).
Following the winTWQ data format, multipliers are applied to the volume parameters only (see below).
Note that VPrTr
is tabulated in J bar-1 mol-1, which is equal to 10 cm3 mol-1.
A value for GfPrTr
is not required and is only used for optional checks (see below).
Numeric values (possibly 0) should be assigned for all of HfPrTr
, SPrTr
, VPrTr
, k0
to k6
and v1
to v4
.
Missing (or NA) values are permitted for the transition and disorder parameters, for minerals where they are not used.
The data files have the following 30 columns:
name | mineral name (must match an entry with a formula but NA properties in thermo()$OBIGT ) |
GfPrTr | standard Gibbs energy at 298.15 K and 1 bar (J mol-1) (Benson-Helgeson convention) |
HfPrTr | standard enthalpy at 298.15 K and 1 bar (J mol-1) |
SPrTr | standard entropy at 298.15 K and 1 bar (J mol-1 K-1) |
VPrTr | standard volume at 298.15 K and 1 bar (J bar-1) [1 J bar-1 = 10 cm3] |
k0 ... k6 | k0 (J mol-1 K-1) to k6 |
v1 | v1 (K-1) * 105 |
v2 | v2 (K-2) * 105 |
v3 | v3 (bar-1) * 105 |
v4 | v4 (bar-2) * 108 |
Tlambda | Tλ (K) |
Tref | Tref (K) |
dTdP | dT / dP (K bar-1) |
l1 | l1 ((J/mol)0.5 K-1) |
l2 | l2 ((J/mol)0.5 K-2) |
DtH | ΔTtH (J mol-1) |
Tmax | temperature at which phase is fully disordered (TD in Berman, 1988) (K) |
Tmin | reference temperature for onset of disordering (t in Berman, 1988) (K) |
d0 ... d4 | d0 (J mol-1 K-1) to d4 |
Vad | constant that scales the disordering enthalpy to volume of disorder (d5 in Berman, 1988) |
The function outputs apparent Gibbs energies according to the Benson-Helgeson convention (ΔG = ΔH - TΔS) using the entropies of the elements in the chemical formula of the mineral to calculate ΔS (cf. Anderson, 2005).
If check.G
is TRUE, the tabulated value of GfTrPr
(Benson-Helgeson) is compared with that calculated from HfPrTr
- 298.15*DSPrTr
(DSPrTr
is the difference between the entropies of the elements in the formula and SPrTr
in the table).
A warning is produced if the absolute value of the difference between tabulated and calculated GfTrPr
is greater than 1000 J/mol.
If the function is called with missing name
, the parameters for all available minerals are returned.
A data frame with T
(K), P
(bar), G
, H
, S
, and Cp
(energetic units in Joules), and V
(cm3 mol-1).
Anderson, G. M. (2005) Thermodynamics of Natural Systems, 2nd ed., Cambridge University Press, 648 p. https://www.worldcat.org/oclc/474880901
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. doi:10.1093/petrology/29.2.445
Berman, R. G. and Aranovich, L. Ya. (1996) Optimized standard state and solution properties of minerals. I. Model calibration for olivine, orthopyroxene, cordierite, garnet, and ilmenite in the system FeO-MgO-CaO-Al2O3-TiO2-SiO2. Contrib. Mineral. Petrol. 126, 1-24. doi:10.1007/s004100050233
Berman, R. G. (2007) winTWQ (version 2.3): A software package for performing internally-consistent thermobarometric calculations. Open File 5462, Geological Survey of Canada, 41 p. doi:10.4095/223425
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. https://www.worldcat.org/oclc/13594862
# Other than the formula, the parameters aren't stored in
# thermo()$OBIGT, so this shows NAs
info(info("quartz", "cr"))
# Properties of alpha-quartz (aQz) at 298.15 K and 1 bar
Berman("quartz")
# 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
all(abs(DGrxn) < 100) # TRUE
# Make a P-T diagram for SiO2 minerals (Ber88 Fig. 4)
basis(c("SiO2", "O2"), c("cr", "gas"))
species(c("quartz", "quartz,beta", "coesite"), "cr")
a <- affinity(T = c(200, 1700, 200), P = c(0, 50000, 200))
diagram(a)
## Getting data from a user-supplied file
## Ol-Opx exchange equilibrium, after Berman and Aranovich, 1996
species <- c("fayalite", "enstatite", "ferrosilite", "forsterite")
coeffs <- c(-1, -2, 2, 1)
T <- seq(600, 1500, 50)
Gex_Ber88 <- subcrt(species, coeffs, T = T, P = 1)$out$G
# Add data from BA96
datadir <- system.file("extdata/Berman/testing", package = "CHNOSZ")
add.OBIGT(file.path(datadir, "BA96_OBIGT.csv"))
thermo("opt$Berman" = file.path(datadir, "BA96_Berman.csv"))
Gex_BA96 <- subcrt(species, coeffs, T = seq(600, 1500, 50), P = 1)$out$G
# Ber88 is lower than BA96 at low T
(Gex_BA96 - Gex_Ber88)[1] > 0 # TRUE
# The curves cross at about 725 deg C (BA96 Fig. 8)
# (actually, in our calculation they cross closer to 800 deg C)
T[which.min(abs(Gex_BA96 - Gex_Ber88))] # 800
# Reset the database (thermo()$OBIGT, and thermo()$opt$Berman)
reset()