@@ -22,57 +22,67 @@ namespace geochemistry
2222namespace forge
2323{
2424
25- // Stoichiometric matrix [13 reactions × 23 species]
26- // Columns 0–12: secondary species (must be -1 on diagonal)
27- // Columns 13–22: primary species
28- constexpr CArrayWrapper< double , 19 , 26 > soichMatrix =
29- {// CaCO₃ CaHCO₃⁺ CaSO₄ CaCl⁺ CaCl₂ MgHCO₃⁺ MgCO₃ MgCl⁺ CO₂(aq) HSO₄⁻ KHSO₄ HSiO₃⁻ NaHSilO₃ NaCl KCl KSO₄⁻ | H⁺ Ca²⁺ Mg²⁺ Na⁺ K⁺ Al³⁺ HCO₃⁻ SO₄²⁻ Cl⁻ SiO₂(aq)
30- { -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
31- { 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
32- { 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, // CaSO₄ ⇌ Ca²⁺ + SO₄²⁻
33- { 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, // CaCl⁺ ⇌ Ca²⁺ + Cl⁻
34- { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 }, // CaCl₂ ⇌ Ca²⁺ + 2Cl⁻
35- { 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // MgHCO₃⁺ ⇌ Mg²⁺ + HCO₃⁻
36- { 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // MgCO₃(aq) + H⁺⇌ Mg²⁺ + HCO₃⁻
37- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, // MgCl⁺ ⇌ Mg²⁺ + Cl⁻
38- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // CO₂(aq) + H₂O ⇌ H⁺ + HCO₃⁻
39- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 }, // HSO₄⁻ ⇌ H⁺ + SO₄²⁻
40- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 }, // KHSO₄ ⇌ H⁺ + K⁺ + SO₄²⁻
41- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 }, // HSiO₃⁻ ⇌ H⁺ + SiO₂(aq)
42- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 }, // NaHSilO₃ ⇌ H⁺ + Na⁺ + SiO₂(aq)
43- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 }, // NaCl ⇌ Na⁺ + Cl⁻
44- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 }, // KCl ⇌ K⁺ + Cl⁻
45- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 }, // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
46- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -2 , 1 , 1 , 0 , 0 , 0 , 2 , 0 , 0 , 0 }, // Dolomite: CaMg(CO₃)₂(s) + 2H⁺ ⇌ Ca²⁺ + Mg²⁺ + 2HCO₃⁻
47- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -4 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 3 }, // Microcline: KAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + K⁺ + 3SiO₂(aq)
48- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -4 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 3 } // Albite: NaAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + Na⁺ + 3SiO₂(aq)
25+ // Stoichiometric matrix [24 reactions × 29 species]
26+ // Columns 1–19: secondary species (must be -1 on diagonal)
27+ // Columns 20–29: primary species
28+ constexpr CArrayWrapper< double , 24 , 29 > stoichMatrix =
29+ {// CaCO₃ CaHCO₃⁺ CaSO₄ CaCl⁺ CaCl₂ MgHCO₃⁺ MgCO₃ MgCl⁺ CO₂(aq) HSO₄⁻ KHSO₄ HSiO₃⁻ NaHSilO₃ NaCl KCl KSO₄⁻ AlOH²⁺ Al(OH)₂ OH⁻ | H⁺ Ca²⁺ Mg²⁺ Na⁺ K⁺ Al³⁺ HCO₃⁻ SO₄²⁻ Cl⁻ SiO₂(aq)
30+ { -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
31+ { 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
32+ { 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, // CaSO₄(aq) ⇌ Ca²⁺ + SO₄²⁻
33+ { 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, // CaCl⁺ ⇌ Ca²⁺ + Cl⁻
34+ { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 }, // CaCl₂(aq) ⇌ Ca²⁺ + 2Cl⁻
35+ { 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // MgHCO₃⁺ ⇌ Mg²⁺ + HCO₃⁻
36+ { 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // MgCO₃(aq) + H⁺⇌ Mg²⁺ + HCO₃⁻
37+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 }, // MgCl⁺ ⇌ Mg²⁺ + Cl⁻
38+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 }, // CO₂(aq) + H₂O ⇌ H⁺ + HCO₃⁻
39+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 }, // HSO₄⁻ ⇌ H⁺ + SO₄²⁻
40+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 }, // KHSO₄(aq) ⇌ H⁺ + K⁺ + SO₄²⁻
41+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 }, // HSiO₃⁻ ⇌ H⁺ + SiO₂(aq)
42+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 1 }, // NaHSiO₃(aq) ⇌ H⁺ + Na⁺ + SiO₂(aq)
43+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 1 , 0 }, // NaCl(aq) ⇌ Na⁺ + Cl⁻
44+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 }, // KCl(aq) ⇌ K⁺ + Cl⁻
45+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 0 }, // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
46+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, // AlOH²⁺ + H⁺ ⇌ Al³⁺ + H₂O
47+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , -2 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 }, // Al(OH)₂⁺ + 2H⁺ ⇌ Al³⁺ + 2H₂O
48+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, // OH⁻ + H⁺ ⇌ H₂O
49+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 }, // SiO2(s) ⇌ SiO2(aq)
50+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , 0 , 3 , 0 , 1 , 1 , 0 , 0 , 0 , 3 }, // KAlMg3Si3O10(OH)2(s) + 10H+ ⇌ Al3+ + K+ + 3Mg2+ + 3SiO2(aq) + 6H2O
51+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -8 , 1 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 2 }, // CaAl2(SiO4)2(s) + 8H+ ⇌ Ca2+ + 2 Al3+ + 2 SiO2(aq) + 4H2O
52+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -4 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 3 }, // KAlSi3O8(s) + 4H+ ⇌ Al3+ + K+ + 3 SiO2 + 2H2O
53+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -6 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 2 } // Al2Si2O5(OH)4(s) + 6H+ ⇌ Al3+ + 2 SiO2 + 5H2O
4954};
5055
5156// Must convert these. They should not be the log.
52- constexpr CArrayWrapper< double , 19 > equilibriumConstants =
57+ constexpr CArrayWrapper< double , 24 > equilibriumConstants =
5358{
54- 5.9636 , // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
55- -1.4181 , // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
56- -2.5111 , // CaSO₄ ⇌ Ca²⁺ + SO₄²⁻
57- 0.3811 , // CaCl⁺ ⇌ Ca²⁺ + Cl⁻
58- 0.3811 , // CaCl₂ ⇌ Ca²⁺ + 2Cl⁻ (approximate, same source)
59- -1.4355 , // MgHCO₃⁺ ⇌ Mg²⁺ + HCO₃⁻
60- -6.5632 , // MgCO₃(aq) + H⁺ ⇌ Mg²⁺ + HCO₃⁻
61- -0.1820 , // MgCl⁺ ⇌ Mg²⁺ + Cl⁻
62- -6.3882 , // CO₂(aq) + H₂O ⇌ H⁺ + HCO₃⁻
63- -3.0020 , // HSO₄⁻ ⇌ H⁺ + SO₄²⁻
64- -2.2935 , // KHSO₄ ⇌ H⁺ + K⁺ + SO₄²⁻
65- -9.0844 , // HSiO₃⁻ ⇌ H⁺ + SiO₂(aq)
66- -7.8291 , // NaHSilO₃ ⇌ H⁺ + Na⁺ + SiO₂(aq)
67- 0.4730 , // NaCl ⇌ Na⁺ + Cl⁻
68- 0.9240 , // KCl ⇌ K⁺ + Cl⁻
69- -1.1946 , // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
70- 0.0944 , // Dolomite: CaMg(CO₃)₂(s) + 2H⁺ ⇌ Ca²⁺ + Mg²⁺ + 2HCO₃⁻
71- -1.8683 , // Microcline: KAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + K⁺ + 3SiO₂(aq)
72- 0.2236 // Albite: NaAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + Na⁺ + 3SiO₂(aq)
59+ 104351.8133 , // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
60+ 3.98107E-03 , // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
61+ 3.6915E-04 , // CaSO₄ ⇌ Ca²⁺ + SO₄²⁻
62+ 0.2930 , // CaCl⁺ ⇌ Ca²⁺ + Cl⁻
63+ 0.1228 , // CaCl₂ ⇌ Ca²⁺ + 2Cl⁻ (approximate, same source)
64+ 0.0038 , // MgHCO₃⁺ ⇌ Mg²⁺ + HCO₃⁻
65+ 7.4559E+05 , // MgCO₃(aq) + H⁺ ⇌ Mg²⁺ + HCO₃⁻
66+ 0.0726 , // MgCl⁺ ⇌ Mg²⁺ + Cl⁻
67+ 6.3548E-08 , // CO₂(aq) + H₂O ⇌ H⁺ + HCO₃⁻
68+ 3.4017E-05 , // HSO₄⁻ ⇌ H⁺ + SO₄²⁻
69+ 3.7068E-05 , // KHSO₄ ⇌ H⁺ + K⁺ + SO₄²⁻
70+ 6.9088E+08 , // HSiO₃⁻ ⇌ H⁺ + SiO₂(aq)
71+ 4.5520E+07 , // NaHSiO₃ ⇌ H⁺ + Na⁺ + SiO₂(aq)
72+ 0.8067 , // NaCl ⇌ Na⁺ + Cl⁻
73+ 1.6398 , // KCl ⇌ K⁺ + Cl⁻
74+ 0.0121 , // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
75+ 14.6994 , // AlOH²⁺ + H⁺ ⇌ Al³⁺ + H₂O
76+ 3.8530E+03 , // Al(OH)₂⁺ + 2H⁺ ⇌ Al³⁺ + 2H₂O
77+ 1.9213E+11 , // OH⁻ + H⁺ ⇌ H₂O
78+ 0.0036 , // SiO2(s) ⇌ SiO2(aq)
79+ 6.6130E+15 , // KAlMg3Si3O10(OH)2(s) + 10H+ ⇌ Al3+ + K+ + 3Mg2+ + 3SiO2(aq) + 6H2O
80+ 1.3047E+05 , // CaAl2(SiO4)2(s) + 8H+ ⇌ Ca2+ + 2 Al3+ + 2 SiO2(aq) + 4H2O
81+ 1.7669E-04 , // KAlSi3O8(s) + 4H+ ⇌ Al3+ + K+ + 3 SiO2 + 2H2O
82+ 3.1463E-05 // Al2Si2O5(OH)4(s) + 6H+ ⇌ Al3+ + 2 SiO2 + 5H2O
7383};
7484
75- constexpr CArrayWrapper< double , 19 > fwRateConstant =
85+ constexpr CArrayWrapper< double , 24 > fwRateConstant =
7686{
7787 0.0 , // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
7888 0.0 , // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
@@ -90,13 +100,18 @@ constexpr CArrayWrapper< double, 19 > fwRateConstant =
90100 0.0 , // NaCl ⇌ Na⁺ + Cl⁻
91101 0.0 , // KCl ⇌ K⁺ + Cl⁻
92102 0.0 , // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
93- 1.0 , // Dolomite: CaMg(CO₃)₂(s) + 2H⁺ ⇌ Ca²⁺ + Mg²⁺ + 2HCO₃⁻
94- 1.0 , // Microcline: KAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + K⁺ + 3SiO₂(aq)
95- 1.0 // Albite: NaAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + Na⁺ + 3SiO₂(aq)
103+ 0.0 , // AlOH²⁺ + H⁺ ⇌ Al³⁺ + H₂O
104+ 0.0 , // Al(OH)₂⁺ + 2H⁺ ⇌ Al³⁺ + 2H₂O
105+ 0.0 , // OH⁻ + H⁺ ⇌ H₂O
106+ 2.7043E-08 , // SiO2(s) ⇌ SiO2(aq)
107+ 3.0145E-11 , // KAlMg3Si3O10(OH)2(s) + 10H+ ⇌ Al3+ + K+ + 3Mg2+ + 3SiO2(aq) + 6H2O
108+ 1.0801E-08 , // CaAl2(SiO4)2(s) + 8H+ ⇌ Ca2+ + 2 Al3+ + 2 SiO2(aq) + 4H2O
109+ 1.1283e-10 , // KAlSi3O8(s) + 4H+ ⇌ Al3+ + K+ + 3 SiO2 + 2H2O
110+ 1.8137e-12 // Al2Si2O5(OH)4(s) + 6H+ ⇌ Al3+ + 2 SiO2 + 5H2O
96111};
97112
98113
99- constexpr CArrayWrapper< double , 19 > reverseRateConstant =
114+ constexpr CArrayWrapper< double , 24 > reverseRateConstant =
100115{
101116 0.0 , // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
102117 0.0 , // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
@@ -114,12 +129,17 @@ constexpr CArrayWrapper< double, 19 > reverseRateConstant =
114129 0.0 , // NaCl ⇌ Na⁺ + Cl⁻
115130 0.0 , // KCl ⇌ K⁺ + Cl⁻
116131 0.0 , // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
117- 1.0 , // Dolomite: CaMg(CO₃)₂(s) + 2H⁺ ⇌ Ca²⁺ + Mg²⁺ + 2HCO₃⁻
118- 1.0 , // Microcline: KAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + K⁺ + 3SiO₂(aq)
119- 1.0 // Albite: NaAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + Na⁺ + 3SiO₂(aq)
132+ 0.0 , // AlOH²⁺ + H⁺ ⇌ Al³⁺ + H₂O
133+ 0.0 , // Al(OH)₂⁺ + 2H⁺ ⇌ Al³⁺ + 2H₂O
134+ 0.0 , // OH⁻ + H⁺ ⇌ H₂O
135+ 7.5119E-06 , // SiO2(s) ⇌ SiO2(aq)
136+ 4.5584E-27 , // KAlMg3Si3O10(OH)2(s) + 10H+ ⇌ Al3+ + K+ + 3Mg2+ + 3SiO2(aq) + 6H2O
137+ 8.2785E-14 , // CaAl2(SiO4)2(s) + 8H+ ⇌ Ca2+ + 2 Al3+ + 2 SiO2(aq) + 4H2O
138+ 6.3858E-07 , // KAlSi3O8(s) + 4H+ ⇌ Al3+ + K+ + 3 SiO2 + 2H2O
139+ 5.7645E-08 // Al2Si2O5(OH)4(s) + 6H+ ⇌ Al3+ + 2 SiO2 + 5H2O
120140};
121141
122- constexpr CArrayWrapper< int , 19 > mobileSpeciesFlag =
142+ constexpr CArrayWrapper< int , 24 > mobileSpeciesFlag =
123143{
124144 1 , // CaCO₃(aq) + H⁺ ⇌ Ca²⁺ + HCO₃⁻
125145 1 , // CaHCO₃⁺ ⇌ Ca²⁺ + HCO₃⁻
@@ -137,19 +157,24 @@ constexpr CArrayWrapper< int, 19 > mobileSpeciesFlag =
137157 1 , // NaCl ⇌ Na⁺ + Cl⁻
138158 1 , // KCl ⇌ K⁺ + Cl⁻
139159 1 , // KSO₄⁻ ⇌ K⁺ + SO₄²⁻
140- 1 , // Dolomite: CaMg(CO₃)₂(s) + 2H⁺ ⇌ Ca²⁺ + Mg²⁺ + 2HCO₃⁻
141- 1 , // Microcline: KAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + K⁺ + 3SiO₂(aq)
142- 1 // Albite: NaAlSi₃O₈(s) + 4H⁺ ⇌ Al³⁺ + Na⁺ + 3SiO₂(aq)
160+ 1 , // AlOH²⁺ + H⁺ ⇌ Al³⁺ + H₂O
161+ 1 , // Al(OH)₂⁺ + 2H⁺ ⇌ Al³⁺ + 2H₂O
162+ 1 , // OH⁻ + H⁺ ⇌ H₂O
163+ 1 , // SiO2(s) ⇌ SiO2(aq)
164+ 1 , // KAlMg3Si3O10(OH)2(s) + 10H+ ⇌ Al3+ + K+ + 3Mg2+ + 3SiO2(aq) + 6H2O
165+ 1 , // CaAl2(SiO4)2(s) + 8H+ ⇌ Ca2+ + 2 Al3+ + 2 SiO2(aq) + 4H2O
166+ 1 , // KAlSi3O8(s) + 4H+ ⇌ Al3+ + K+ + 3 SiO2 + 2H2O
167+ 1 // Al2Si2O5(OH)4(s) + 6H+ ⇌ Al3+ + 2 SiO2 + 5H2O
143168};
144169
145170}
146171
147- using forgeSystemType = reactionsSystems::MixedReactionsParameters< double , int , int , 26 , 19 , 16 >;
172+ using forgeSystemType = reactionsSystems::MixedReactionsParameters< double , int , int , 29 , 24 , 19 >;
148173
149174
150- constexpr forgeSystemType forgeSystem ( forge::soichMatrix , forge::equilibriumConstants, forge::fwRateConstant, forge::reverseRateConstant, forge::mobileSpeciesFlag );
175+ constexpr forgeSystemType forgeSystem ( forge::stoichMatrix , forge::equilibriumConstants, forge::fwRateConstant, forge::reverseRateConstant, forge::mobileSpeciesFlag );
151176
152177
153178// *****UNCRUSTIFY-ON******
154179}
155- }
180+ }
0 commit comments