This page was generated from
docs/benchmarking/equilibrium_constants.ipynb.
Interactive online version:
.
Benchmarking models for equilibrium constants
This notebook benchmarks the models for equilibrium constants in VolFe where possible.
The following equilibrium constants and models do not have material available in the original papers for benchmarking:
KHOg: ‘Ohmoto97’ Reaction (d) in Table 1 from Ohmoto & Kerrick (1977)
KHOSg: ‘Ohmoto97’ Reaction (h) in Table 1 from Ohmoto & Kerrick (1977)
KOSg: ‘Ohmoto97’ Reaction (f) in Table 1 from Ohmoto & Kerrick (1977)
KOCg: ‘Ohmoto97’ Reaction (c) in Table 1 from Ohmoto & Kerrick (1977)
KCOHg: ‘Ohmoto97’ Reaction (e) in Table 1 from Ohmoto & Kerrick (1977)
KCOs: ‘Holloway92’ Eq (3) KI in Holloway et al. (1992)
Python set-up
[2]:
import VolFe as vf
import math
Models for equilibrium constant of SO3
option = KOSg2, function = KOSg2
‘ONeill22’ Eq. (6b) from O’Neill & Mavrogenes (2022)
Appendix A. Supplementary material - Supplementary data 2. Tab = Table S6 S redox calculator (sulfate,KSOg2=ONeill22.xlsx).
Cell AI12: -17.61
Matches to 2 decimal places. Note spreadsheet uses +273 to convert to K, rather than 273.15 used in VolFe so T in spreadsheet = 1200.15 ‘C
[3]:
PT = {"P":1000.}
PT["T"]=1200.
my_models = [["KOSg2", "ONeill22"]]
my_models = vf.make_df_and_add_model_defaults(my_models)
math.log(1./vf.KOSg2(PT,models=my_models))
[3]:
-17.606473217676754
Models for equilibrium constant of OCS
option = KOCSg, function = KOCSg
‘Moussallam19’ Eq. (8) for 2CO2 + OCS ⇄ 3CO + SO2 in Moussallam et al. (2019)
From Section 2. Method - Detailed examples of gas oxygen fugacity and equilibrium temperature calculationd - The CO2-CO-OCS-SO2 method
“Given a XSO2 of 0.01, a CO/CO2 molar ratio of 0.043, a CO/OCS molar ratio of 192 and assuming equilibration at atmospheric pressure (∼0.6 bar at Erebus) yields an equilibrium temperature of 1292 K (1019 °C).”
Equation (8):
log P = (-15386.45/T) + 9.24403 - log[((xCO/xCO2)^2)(xCO/xOCS)xSO2]
K = (-15386.45/T) + 9.24403 = log P + log[((xCO/xCO2)^2)(xCO/xOCS)xSO2]
The next cell calculates T from their eq. (17), which they state is 1292 K
[22]:
P = 0.6 # bar
xSO2 = 0.01
xCO_xCO2 = 0.043
xCO_xOCS = 192.
-15386.45/(math.log10(P) - 9.24403 + math.log10((xCO_xCO2**2.)*xCO_xOCS*xSO2))
[22]:
1291.2818121927335
Below we calculate K for their example
[23]:
math.log10(P) + math.log10(xCO_xCO2**2.*xCO_xOCS*xSO2)
[23]:
-2.671610609753634
Which agrees to the first decimal place with VolFe.
[27]:
PT = {"P":0.6}
PT["T"]=1019.
my_models = [["KOCSg", "Moussallam19"]]
my_models = vf.make_df_and_add_model_defaults(my_models)
math.log10(vf.KOCSg(PT,models=my_models))
[27]:
-2.6636045625507876