The enthalpy of a glass
The heat a paste releases is the fall of its enthalpy, and the enthalpy of a paste that still holds unreacted slag or fly ash includes that of their glass. A clinker phase has a formula and a database record; a glass has neither. This page builds the enthalpy of a glass from measurements on silicate glasses, and says at each step what is measured and what is assumed. The function is glass_enthalpy; its use in a recipe is in Recipes: materials, extents and what has not reacted.
1. What is measured
Two properties of silicate glasses have been measured on enough compositions to be used here.
The heat capacity. Below the glass transition, the heat capacity of a silicate glass is the sum of contributions of its oxides, each independent of the composition (Richet, 1987):
The enthalpy of vitrification,
using ChemistryLab, DynamicQuantities, Printf
for g in ChemistryLab._vitrification_enthalpies()
@printf("%-19s %-11s ΔHv = %5.1f kJ/mol%s (%s)\n", g.name, g.formula, g.dH_v / 1000,
isnan(g.uncertainty) ? " " : @sprintf(" ± %3.1f", g.uncertainty / 1000), g.key)
endgehlenite Ca2Al2SiO7 ΔHv = 49.8 kJ/mol ± 1.8 (RichetBottinga1986)
akermanite Ca2MgSi2O7 ΔHv = 32.5 kJ/mol ± 1.5 (RichetBottinga1986)
pseudowollastonite CaSiO3 ΔHv = 29.9 kJ/mol ± 2.8 (RichetBottinga1986)
anorthite CaAl2Si2O8 ΔHv = 71.8 kJ/mol (RichetBottinga1984)
diopside CaMgSi2O6 ΔHv = 92.4 kJ/mol (RichetBottinga1984)
silica SiO2 ΔHv = 9.1 kJ/mol (Navrotsky1980)The crystal of CaSiO₃ is pseudowollastonite, the one the calorimetry used.
2. The construction
Write the analysis as
The enthalpy of formation of the glass is then
the oxides, the formation of each crystal from its oxides, and its vitrification. The bracket is taken within one database, aq17, which holds the six crystals and the four oxides: the enthalpy of forming a crystal from its oxides is consistent only when both come from the same assessment. The databases do not agree on the crystals themselves:
aq = ChemistryLab._aq17_crystals()
slop = Dict(symbol(s) => s for s in build_species(datapath("slop98-inorganic-thermofun.json"); verbose = false))
H(sp) = ustrip(us"kJ/mol", sp[:ΔₐH⁰](T = 298.15u"K", P = 1.0e5u"Pa"; unit = true))
for (a, s) in (("Gehlenite", "Gh"), ("Akermanite", "Ak"), ("Anorthite", "An"), ("Diopside", "Di"), ("Corundum", "Crn"))
@printf("%-11s aq17 %9.2f slop98 %9.2f kJ/mol difference %6.2f\n", a, H(aq[a]), H(slop[s]), H(aq[a]) - H(slop[s]))
endGehlenite aq17 -3986.88 slop98 -3979.93 kJ/mol difference -6.95
Akermanite aq17 -3866.36 slop98 -3876.46 kJ/mol difference 10.10
Anorthite aq17 -4233.48 slop98 -4215.60 kJ/mol difference -17.88
Diopside aq17 -3202.76 slop98 -3202.34 kJ/mol difference -0.42
Corundum aq17 -1675.25 slop98 -1661.65 kJ/mol difference -13.59so the choice of database moves a glass by up to twenty kilojoules per mole of crystal, several times the uncertainty of its enthalpy of vitrification. The enthalpies of formation of the oxides themselves,
3. What ideal mixing leaves open
When several combinations leave the same amount of oxide over, ideal mixing should give them the same enthalpy, and the measured glasses do not. The composition Ca₃MgAl₂Si₄O₁₅ is anorthite plus akermanite, and also gehlenite plus diopside plus silica, and also half gehlenite, half anorthite, diopside and half pseudowollastonite; every combination with nothing left over lies between these three. Their enthalpies of vitrification are 104, 151 and 168 kJ per formula. The function returns the midpoint of the extremes and their half-difference as span:
M(f) = ustrip(us"g/mol", Species(f)[:M])
mol = Dict("CaO" => 3, "MgO" => 1, "Al2O3" => 1, "SiO2" => 4)
Mf = sum(n * M(ox) for (ox, n) in mol)
g = glass_enthalpy(Dict(ox => n * M(ox) / Mf for (ox, n) in mol))
@printf("vitrification %.1f ± %.1f kJ per Ca3MgAl2Si4O15\n",
ustrip(us"J/g", g.vitrification) * Mf / 1000, ustrip(us"J/g", g.span) * Mf / 1000)vitrification 136.2 ± 31.9 kJ per Ca3MgAl2Si4O15A span of 32 kJ per formula is large against the enthalpies of mixing measured between silicate glasses, which Richet and Bottinga (1986) find below about 5 kJ/mol near 1000 K. It is larger too than what Richet and Bottinga (1986) attribute to the fictive temperature of a glass, the temperature at which the supercooled liquid would have the configuration the glass kept (Richet, 2001; Sec. 6.4d, p. 153): an error of 100 K on it moves the enthalpy of a diopside or anorthite glass by about 10 kJ/mol. Two glasses of one composition whose fictive temperatures are
the heat capacity of a glass depending little on its history (Richet, 2001; Sec. 6.4d, Eq. (6.42), p. 153); a liquid cooled faster freezes at a higher temperature (Richet, 2001; Sec. 6.4b, p. 150), and,
4. What a slag gets
A blast-furnace slag holds more lime than the measured glasses can take: its alumina goes to gehlenite, its magnesia to akermanite, its remaining silica to pseudowollastonite, and some lime is left over, which no combination can avoid, so the combination is unique and the span zero. For the slag of Snellings et al. (2022):
rows = literature_table("Snellings2022", "chemical_composition"; material = "GGBFS")
slag = Dict(String(o) => ustrip(p) / 100 for (o, p) in zip(rows.oxide, rows.percent) if o != "Total")
s = glass_enthalpy(slag; ignore = ("P2O5",))
for k in (:formation_298, :from_oxides, :vitrification, :uncertainty)
@printf("%-14s %9.1f J/g\n", k, ustrip(us"J/g", getfield(s, k)))
end
@printf("lime left over: %.2f %% of the slag\n", 100 * s.unassigned["CaO"] * M("CaO"))formation_298 -13376.0 J/g
from_oxides -391.2 J/g
vitrification 156.8 J/g
uncertainty 5.8 J/g
lime left over: 2.58 % of the slagThe enthalpy of vitrification, about 160 J/g, is the part of the heat a slag can release that a crystalline assemblage of the same composition would not; its uncertainty, from the printed uncertainties of the three glasses, is a few joules per gram. The phosphorus of the analysis has no crystal in the reference databases and is left out by name (ignore), which the result reports.
5. What it does not give
The construction gives an enthalpy, which is what a heat needs. It does not give an entropy or a Gibbs energy. A glass is not in internal equilibrium: its residual entropy is the configurational entropy frozen at its fictive temperature, and it depends on the thermal history of the sample (Richet, 2001; Secs. 6.3a and 6.4d, pp. 144 and 153) (Absolute entropy and entropy of formation). Obtaining it takes the heat capacity of the glass down to a few kelvins, which Richet and Bottinga (1986), p. 16 and Table 5 report for silica, the feldspars and diopside, not for gehlenite, akermanite or pseudowollastonite; and no rule combines residual entropies the way section 2 combines enthalpies. The glass therefore cannot be a phase whose stability an equilibrium decides, and it enters a calculation as the residue of a constituent that reacts at a prescribed extent. For the same reason the enthalpy of vitrification is an upper bound to what the glass adds to the driving force of its dissolution,