Formation quantities and the database
The chemical potential and reactions writes every equilibrium in terms of standard potentials
Questions this page answers
Energies are known only up to a constant: what can a database tabulate, and why is it enough?
How are enthalpies, entropies and Gibbs energies of formation measured?
What separates an absolute entropy, an entropy of formation and the conventional entropy of an ion?
How does a standard potential change with temperature and pressure, and what is the apparent Gibbs energy a database stores?
1. Energies known up to a constant, and the reactions of formation
The internal energy, the enthalpy and the Gibbs energy are known up to an additive constant only, since a measurement gives their changes and never their values. A database cannot tabulate the change of every reaction of interest, which are too many, and tabulates instead, for each substance, the change of the one reaction that forms it from its elements, each taken in its stable form at the conditions of reference,
Balanced reactions
Let species
The vector Zz (Stoichiometric Matrix). The slaking of lime, CaO + H₂O → Ca(OH)₂, has
Formation from the elements
The reaction of formation of
where
in which the last two sums vanish for a balanced reaction, so that
The proof requires nothing of
Absolute entropy and entropy of formation
The entropy is in a different position from the energies. Calorimetry gives only its changes, but a zero common to all substances can be chosen: the third law takes the entropy of a pure substance in a perfect crystalline form, in internal equilibrium, to tend to zero as the temperature tends to 0 K (Anderson and Crerar, 1993) (§6.5). The choice leaves out what no chemical reaction changes, down to the constituents of the nuclei, and is a convention rather than a measurement (Richet, 2001; Sec. 4.4b, p. 75). The entropy at any other temperature then follows from the second law,
This is the absolute, or third-law, entropy, tabulated as
The residual entropy escapes the calorimetry from 0 K, which starts from the glass as it already is, disorder included. It is obtained by closing a cycle with the crystal of the same composition. Both are heated to the melting temperature
the last heat capacity being that of the glass and, above its glass transition, of the supercooled liquid (Richet, 2001; Sec. 4.4c, p. 76). The cycle crosses the glass transition, which is not reversible, and integrating
The entropy of formation is of another nature: it is the change of entropy in the reaction of formation,
where
whereas the entropy of a reaction is computed from the absolute entropies,
The aqueous ions carry a third kind of entropy. The convention that sets the formation properties of H⁺ to zero sets its tabulated entropy to zero as well, and the entropy tabulated for an ion of charge
How these numbers are measured
No instrument reads a Gibbs energy. Every tabulated value combines a few kinds of measurement (Anderson and Crerar, 1993).
Enthalpies of formation come from calorimetry. When a substance burns cleanly from its elements, the heat of combustion gives its enthalpy of formation directly; a bomb calorimeter works at constant volume, so it measures
, which the change of converts to (The two laws, and what the Gibbs energy measures §2). Most substances cannot be formed that way, and their enthalpy is obtained by Hess's law from reactions that can be measured, typically the dissolution of the compound and of its oxides in the same acid: the heats combine as the reactions do. Absolute entropies come from the heat capacity, measured from a few kelvins upward and integrated as above.
Gibbs energies of formation follow from the two, as
, or from an equilibrium measured directly. A solubility givesand hence ; the reversible voltageof an electrochemical cell gives ,being the number of electrons the reaction transfers. Either fixes one unknown energy of formation once those of the other participants are known.
The hydrates of a cement can be neither burned nor formed from their elements, and most of the Gibbs energies CEMDATA18 gives them are derived from measured solubilities (Lothenbach et al., 2019). A solubility measured at several temperatures yields the enthalpy of reaction as well, through the van 't Hoff relation of §2.
The values of CEMDATA18 at
using ChemistryLab, Printf
db = Dict(symbol(s) => s for s in build_species(datapath("cemdata18-thermofun.json"); verbose = false))
S_e = Dict(e["symbol"] => only(e["entropy"]["values"])
for e in ChemistryLab.JSON.parsefile(datapath("cemdata18-thermofun.json"))["elements"])
Tr = 298.15
G(s, T) = db[s][:ΔₐG⁰](T = T, unit = false)
H(s, T) = db[s][:ΔₐH⁰](T = T, unit = false)
S(s, T) = db[s][:S⁰](T = T, unit = false)
for s in ("O2", "H2", "H+", "Ca+2")
@printf("%-4s ΔfG = %9.0f, ΔfH = %9.0f J/mol, S = %6.2f J/(mol K)\n", s, G(s, Tr), H(s, Tr), S(s, Tr))
end
@printf("oxygen per atom: %.3f J/(mol K), half that of O2\n", S_e["O"])
ΔfS = S("Lim", Tr) - sum(k * S_e[string(e)] for (e, k) in atoms(db["Lim"]))
@printf("lime: S = %.2f, ΔfS = %.2f J/(mol K); ΔfG - (ΔfH - Tr ΔfS) = %.0f J/mol\n",
S("Lim", Tr), ΔfS, G("Lim", Tr) - (H("Lim", Tr) - Tr * ΔfS))O2 ΔfG = 0, ΔfH = 0 J/mol, S = 205.14 J/(mol K)
H2 ΔfG = 0, ΔfH = 0 J/mol, S = 130.68 J/(mol K)
H+ ΔfG = 0, ΔfH = 0 J/mol, S = 0.00 J/(mol K)
Ca+2 ΔfG = -552790, ΔfH = -543074 J/mol, S = -56.50 J/(mol K)
oxygen per atom: 102.569 J/(mol K), half that of O2
lime: S = 39.75, ΔfS = -104.41 J/(mol K); ΔfG - (ΔfH - Tr ΔfS) = -68 J/molWith the entropy of reaction defined above, the three quantities of a reaction are bound by
slaking = ("Portlandite" => 1, "Lim" => -1, "H2O@" => -1)
Δr(f, T) = sum(ν * f(s, T) for (s, ν) in slaking)
@printf("slaking: ΔrH = %.1f kJ/mol, ΔrG = %.1f kJ/mol, ΔrS = %.2f J/(mol K); ΔrG - (ΔrH - Tr ΔrS) = %.0f J/mol\n",
Δr(H, Tr) / 1000, Δr(G, Tr) / 1000, Δr(S, Tr), Δr(G, Tr) - (Δr(H, Tr) - Tr * Δr(S, Tr)))slaking: ΔrH = -63.7 kJ/mol, ΔrG = -55.8 kJ/mol, ΔrS = -26.27 J/(mol K); ΔrG - (ΔrH - Tr ΔrS) = 69 J/molFormation from primary species
The elements are not the only possible reference. Let
which is the balanced reaction SM.A in the package, whose rows are labeled by the primaries. Substituting this decomposition in the balance of the elements and of the charge shows that a reaction conserves them if and only if it conserves the primaries,
the converse resting on the independence of the columns of the primaries. The reaction forming
The argument used for the elements applies with the primaries in their place, the unknown
A table of formation constants
basis = [db["Ca+2"], db["H2O@"], db["H+"]]
SM = StoichMatrix([db["Lim"], db["Portlandite"], basis...], basis)
names = symbol.(SM.species)
ν = [get(Dict(slaking), s, 0) for s in names] # slaking, in the order of the columns
# Gibbs energy of formation of each species from the primaries (rows of SM.A)
Gp = [G(symbol(b), Tr) for b in SM.primaries]
ΔrG_B = G.(names, Tr) .- transpose(SM.A) * Gp
logK(s) = -ΔrG_B[findfirst(==(s), names)] / (R_GAS * Tr * log(10))
@printf("log K of formation from the primaries: lime %.2f, portlandite %.2f\n", logK("Lim"), logK("Portlandite"))
@printf("primaries conserved by slaking: %s; ΔrG = %.3f kJ/mol from the primaries, %.3f from the elements\n",
SM.A * ν, sum(ν .* ΔrG_B) / 1000, Δr(G, Tr) / 1000)
SMThe oxides of a silicate, a carbonate or a sulfate form such a basis, and the enthalpy of formation from the oxides is in use for these compounds (§7.4.4). Its values are much smaller in magnitude, and so are their uncertainties, which no longer include those of forming the oxides from the elements, but they cannot be combined with values of formation from the elements in one calculation. It is the natural scale for a glass, and CEM I 52.5 N and slag in an isothermal calorimeter, read off the states places the slag of a blended cement on it.
Energies counted from the primaries: the gauge of a database of reactions
A database of reactions, of which PHREEQC's are the common example, does not give the formation of its species from the elements but only from its master species: the log K of each reaction, Ca+2 = Ca+2). By the relation above, it determines
and nothing else: the
which is a choice of zero, a gauge, and not a measurement. It does not change an equilibrium. The energies so defined differ from any others consistent with the database by
a combination of the rows of the conservation matrix, the same for every species, solute or mineral, since each decomposes on the same master species. On a composition
a constant of the feasible set, and the composition that minimizes it is the same. The master species of a database span the elements and the charge (one per element, H⁺ for hydrogen and H₂O for oxygen, with the electron for the charge), so that every species of the database decomposes on them and the argument applies to all.
It applies within one database only. Species taken from two databases, or from a database of reactions and a database of formation properties, carry energies whose differences from the formation energies are two different combinations :gauge (the database file and its digest for a database of reactions, the formation from the elements for ThermoFun), and ChemicalSystem refuses a system that mixes two.
The other standard quantities follow from the temperature dependence of
With phreeqc.dat, the master species Ca²⁺ and CO₃²⁻ are at zero, and the Gibbs energy of calcite is that of its dissolution constant,
_, pdb, _ = read_phreeqc_database(datapath("phreeqc.dat"))
ps = Dict(symbol(s) => s for s in build_species(pdb, ["Ca+2", "CO3-2", "CaCO3", "Calcite"]))
for s in ("Ca+2", "CO3-2", "CaCO3@", "Calcite")
@printf("%-8s %9.3f kJ/mol\n", s, ps[s][:ΔₐG⁰](T = Tr) / 1000)
end
@printf("log10 K of the dissolution of calcite: %.2f\n", ps["Calcite"][:ΔₐG⁰](T = Tr) / (R_GAS * Tr * log(10)))Ca+2 -0.000 kJ/mol
CO3-2 -0.000 kJ/mol
CaCO3@ -18.410 kJ/mol
Calcite -48.404 kJ/mol
log10 K of the dissolution of calcite: -8.482. Temperature, pressure, and the apparent quantities of a database
The standard potential at any temperature and pressure
The standard state of a species being taken at the temperature and the pressure of the system, its potential obeys the relation of The two laws, and what the Gibbs energy measures §5 for a substance of fixed composition, with the standard molar entropy and volume,
whereas a gas, whose standard state stays at
and exchanging the order of its two integrations,
With the pressure step added, this gives (Anderson and Crerar, 1993) (§7.4, §7.6)
the heat capacity being taken at
The entropy that multiplies
Apparent and formation Gibbs energies
Away from
so that the apparent Gibbs energy of H⁺ is zero at every temperature and pressure. This convention is that of the databases the package reads, which stores it as ΔₐG⁰, and as ΔₐH⁰ the apparent enthalpy defined in the same way. Both choices assign to the elements and to the charge energies common to all species, and the argument of §1 cancels them from any balanced reaction,
The two definitions coincide at
and the apparent enthalpy is
The chemical potential and the apparent Gibbs energy
Combining
The last two terms are unknown, and the package leaves them out: the potential it minimizes is
The enthalpy is treated likewise. In a closed system without net charge, the apparent enthalpy differs from the absolute one by
One relation does not survive for a species on its own. Since the elements are frozen at
T, δ = 333.15, 0.01
# ∂(g/T)/∂T + h/T², which Gibbs-Helmholtz sets to zero, by a centered difference
gibbs_helmholtz(g, h) = (g(T + δ) / (T + δ) - g(T - δ) / (T - δ)) / 2δ + h(T) / T^2
# what the tabulated values miss of G = H - TS at Tr, divided by T²
misfit(g, h, s) = (h(Tr) - g(Tr) - Tr * s(Tr)) / T^2
@printf("slaking: %8.5f J/(mol K²), all of it the misfit %8.5f of the tabulated values\n",
gibbs_helmholtz(t -> Δr(G, t), t -> Δr(H, t)), misfit(t -> Δr(G, t), t -> Δr(H, t), t -> Δr(S, t)))
@printf("lime: %8.5f J/(mol K²) = %8.5f from the elements + %8.5f of misfit\n",
gibbs_helmholtz(t -> G("Lim", t), t -> H("Lim", t)),
-Tr * sum(k * S_e[string(e)] for (e, k) in atoms(db["Lim"])) / T^2,
misfit(t -> G("Lim", t), t -> H("Lim", t), t -> ΔfS))slaking: -0.00062 J/(mol K²), all of it the misfit -0.00062 of the tabulated values
lime: -0.38664 J/(mol K²) = -0.38725 from the elements + 0.00061 of misfitThe heat of reaction
The standard enthalpy of reaction is the heat the system receives at constant pressure when the reaction proceeds by one mole, in the standard states; the heat it releases is
by which an exothermic reaction is displaced towards its reactants on heating. The enthalpy of reaction varies with temperature in turn through the heat capacities,
The package computes heat without writing a reaction either. The enthalpy of a state being heat_release and the calorimeters compute it. The heat of the calorimeters under partial equilibrium, the heat capacity of a semi-adiabatic cell at equilibrium and the sensitivities of the minimization all rest on the two remarks made above on the omitted terms (Kinetics under partial equilibrium).
Where to go next
Thermochemistry takes up these quantities in the notation of the code, with the chemical potential divided by
- CEM I 52.5 N and slag in an isothermal calorimeter, read off the states, which places the glass of a slag on the scale of formation from the oxides.