Skip to content

Commit 4a7a310

Browse files
committed
feat: updated the forge experiment chemical system using the data prepared by Chaoyi
1 parent 2b2aeaf commit 4a7a310

File tree

1 file changed

+84
-59
lines changed

1 file changed

+84
-59
lines changed

src/reactions/geochemistry/Forge.hpp

Lines changed: 84 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -22,57 +22,67 @@ namespace geochemistry
2222
namespace 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

Comments
 (0)