@@ -24,92 +24,80 @@ namespace geochemistry
24
24
namespace carbonate
25
25
{
26
26
27
- constexpr CArrayWrapper<double , 11 , 18 > stoichMatrix =
28
- { // OH- CO2 CO3-2 H2CO3 CaHCO3+ CaSO4 CaCl+ CaCl2 MgSO4 NaSO4- CaCO3 H+ HCO3- Ca+2 SO4-2 Cl- Mg+2 Na+
29
- { -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 }, // OH- + H+ = H2O
30
- { 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO2 + H2O = H+ + HCO3-
31
- { 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO3-2 + H+ = HCO3-
32
- { 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }, // H2CO3 = H+ + HCO3-
33
- { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 }, // CaHCO3+ = Ca+2 + HCO3-
34
- { 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 }, // CaSO4 = Ca+2 + SO4-2
35
- { 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 }, // CaCl+ = Ca+2 + Cl-
36
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 2 , 0 , 0 }, // CaCl2 = Ca+2 + 2Cl-
37
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 }, // MgSO4 = Mg+2 + SO4-2
38
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 }, // NaSO4- = Na+ + SO4-2
39
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , -1 , 1 , 1 , 0 , 0 , 0 , 0 } // CaCO3(s) + H+ = Ca+2 + HCO3- (kinetic)
40
- // { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0 } // Ca(OH)2(s) + 2H+ = Ca2+ + 2H2O (kinetic)
27
+ constexpr CArrayWrapper<double , 10 , 17 > stoichMatrix =
28
+ { // OH- CO2 CO3-2 CaHCO3+ CaSO4 CaCl+ CaCl2 MgSO4 NaSO4- CaCO3 H+ HCO3- Ca+2 SO4-2 Cl- Mg+2 Na+
29
+ { -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 }, // OH- + H+ = H2O
30
+ { 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO2 + H2O = H+ + HCO3-
31
+ { 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO3-2 + H+ = HCO3-
32
+ { 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 }, // CaHCO3+ = Ca+2 + HCO3-
33
+ { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 }, // CaSO4 = Ca+2 + SO4-2
34
+ { 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 }, // CaCl+ = Ca+2 + Cl-
35
+ { 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 2 , 0 , 0 }, // CaCl2 = Ca+2 + 2Cl-
36
+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 }, // MgSO4 = Mg+2 + SO4-2
37
+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 1 }, // NaSO4- = Na+ + SO4-2
38
+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , -1 , 1 , 1 , 0 , 0 , 0 , 0 } // CaCO3(s) + H+ = Ca+2 + HCO3- (kinetic)
41
39
};
42
40
43
- constexpr CArrayWrapper<double , 11 , 17 > stoichMatrixNosolid =
44
- { // OH- CO2 CO3-2 H2CO3 CaHCO3+ CaSO4 CaCl+ CaCl2 MgSO4 NaSO4- H+ HCO3- Ca+2 SO4-2 Cl- Mg+2 Na+
45
- { -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 }, // OH- + H+ = H2O
46
- { 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO2 + H2O = H+ + HCO3-
47
- { 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO3-2 + H+ = HCO3-
48
- { 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }, // H2CO3 = H+ + HCO3-
49
- { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 }, // CaHCO3+ = Ca+2 + HCO3-
50
- { 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 }, // CaSO4 = Ca+2 + SO4-2
51
- { 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 }, // CaCl+ = Ca+2 + Cl-
52
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 2 , 0 , 0 }, // CaCl2 = Ca+2 + 2Cl-
53
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 }, // MgSO4 = Mg+2 + SO4-2
54
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 }, // NaSO4- = Na+ + SO4-2
55
- { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 1 , 0 , 0 , 0 , 0 } // CaCO3(s) + H+ = Ca+2 + HCO3- (kinetic)
56
- // { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, 0, 1, 0, 0, 0, 0 } // Ca(OH)2(s) + 2H+ = Ca2+ + 2H2O (kinetic)
41
+ constexpr CArrayWrapper<double , 10 , 16 > stoichMatrixNosolid =
42
+ { // OH- CO2 CO3-2 CaHCO3+ CaSO4 CaCl+ CaCl2 MgSO4 NaSO4- H+ HCO3- Ca+2 SO4-2 Cl- Mg+2 Na+
43
+ { -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 }, // OH- + H+ = H2O
44
+ { 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO2 + H2O = H+ + HCO3-
45
+ { 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 0 , 0 , 0 , 0 , 0 }, // CO3-2 + H+ = HCO3-
46
+ { 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 , 0 }, // CaHCO3+ = Ca+2 + HCO3-
47
+ { 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 0 , 0 , 0 }, // CaSO4 = Ca+2 + SO4-2
48
+ { 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 , 0 }, // CaCl+ = Ca+2 + Cl-
49
+ { 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 2 , 0 , 0 }, // CaCl2 = Ca+2 + 2Cl-
50
+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 0 , 1 , 0 , 1 , 0 }, // MgSO4 = Mg+2 + SO4-2
51
+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 }, // NaSO4- = Na+ + SO4-2
52
+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -1 , 1 , 1 , 0 , 0 , 0 , 0 } // CaCO3(s) + H+ = Ca+2 + HCO3- (kinetic)
57
53
};
58
54
59
- // C^{n+1} - C^n - r( C^{n+1} ) * dt = 0
60
- constexpr CArrayWrapper<double , 11 > equilibriumConstants =
55
+ // thermodynamic constants derived from 'llnl.tdat' used by Geochemists' Workbench (originally from EQ36)
56
+ constexpr CArrayWrapper<double , 10 > equilibriumConstants =
61
57
{
62
- 9.77E+13 , // OH- + H+ = H2O
63
- 4.37E-07 , // CO2 + H2O = H+ + HCO3-
64
- 2.14E+10 , // CO3-2 + H+ = HCO3-
65
- 1.70E-04 , // H2CO3 = H+ + HCO3-
66
- 8.13E-02 , // CaHCO3+ = Ca+2 + HCO3-
67
- 6.92E-03 , // CaSO4 = Ca+2 + SO4-2
68
- 4.68E+00 , // CaCl+ = Ca+2 + Cl-
69
- 3.98E+00 , // CaCl2 = Ca+2 + 2Cl-
70
- 3.72E-03 , // MgSO4 = Mg+2 + SO4-2
71
- 1.51E-01 , // NaSO4- = Na+ + SO4-2
72
- 1.17E+07 // CaCO3 + H+ = Ca+2 + HCO3- (kinetic)
73
- // 1
74
- }; // Ca(OH)2(s) + 2H+ = Ca2+ + 2H2O (kinetic)
58
+ 9.89E+13 , // OH- + H+ = H2O
59
+ 4.42E-07 , // CO2 + H2O = H+ + HCO3-
60
+ 2.21E+10 , // CO3-2 + H+ = HCO3-
61
+ 6.00E-02 , // CaHCO3+ = Ca+2 + HCO3-
62
+ 4.79E-03 , // CaSO4 = Ca+2 + SO4-2
63
+ 2.00E-01 , // CaCl+ = Ca+2 + Cl-
64
+ 3.98E+00 , // CaCl2 = Ca+2 + 2Cl-
65
+ 5.92E-03 , // MgSO4 = Mg+2 + SO4-2
66
+ 2.02E-01 , // NaSO4- = Na+ + SO4-2
67
+ 5.16E+01 // CaCO3 + H+ = Ca+2 + HCO3- (kinetic)
68
+ };
75
69
76
- constexpr CArrayWrapper<double , 11 > forwardRates =
70
+ constexpr CArrayWrapper<double , 10 > forwardRates =
77
71
{
78
72
1.4e11 , // OH- + H+ = H2O
79
73
0.039 , // CO2 + H2O = H+ + HCO3-
80
- 1.0e10 , // CO3-2 + H+ = HCO3-
81
- 0.57 , // H2CO3 = H+ + HCO3-
74
+ 1.0e10 , // CO3-2 + H+ = HCO3-
82
75
1.5e6 , // CaHCO3+ = Ca+2 + HCO3-
83
76
1.0e5 , // CaSO4 = Ca+2 + SO4-2
84
77
1.0e8 , // CaCl+ = Ca+2 + Cl-
85
78
1.0e7 , // CaCl2 = Ca+2 + 2Cl-
86
79
1.0e5 , // MgSO4 = Mg+2 + SO4-2
87
80
1.0e7 , // NaSO4- = Na+ + SO4-2
88
- 1.0e5 // CaCO3 + H+ = Ca+2 + HCO3- (kinetic)
89
-
90
- // 1
91
- }; // Ca(OH)2(s) + 2H+ = Ca2+ + 2H2O (kinetic)
81
+ 1.55E-06 // CaCO3 + H+ = Ca+2 + HCO3- (kinetic)
82
+ };
92
83
93
- constexpr CArrayWrapper<double , 11 > reverseRates =
94
- { 1.43E-03 , // OH- + H+ = H2O
95
- 8.92E+04 , // CO2 + H2O = H+ + HCO3-
96
- 4.67E-01 , // CO3-2 + H+ = HCO3-
97
- 3.35E+03 , // H2CO3 = H+ + HCO3-
98
- 1.85E+07 , // CaHCO3+ = Ca+2 + HCO3-
99
- 1.45E+07 , // CaSO4 = Ca+2 + SO4-2
100
- 2.14E+07 , // CaCl+ = Ca+2 + Cl-
101
- 2.51E+06 , // CaCl2 = Ca+2 + 2Cl-
102
- 2.69E+07 , // MgSO4 = Mg+2 + SO4-2
103
- 6.62E+07 , // NaSO4- = Na+ + SO4-2
104
- 8.55E-03 // CaCO3 + H+ = Ca+2 + HCO3-
105
- // 1 // Ca(OH)2(s) + 2H+ = Ca2+ + 2H2O (kinetic)
84
+ constexpr CArrayWrapper<double , 10 > reverseRates =
85
+ { 1.43E-03 , // OH- + H+ = H2O
86
+ 8.92E+04 , // CO2 + H2O = H+ + HCO3-
87
+ 4.67E-01 , // CO3-2 + H+ = HCO3-
88
+ 1.85E+07 , // CaHCO3+ = Ca+2 + HCO3-
89
+ 1.45E+07 , // CaSO4 = Ca+2 + SO4-2
90
+ 2.14E+07 , // CaCl+ = Ca+2 + Cl-
91
+ 2.51E+06 , // CaCl2 = Ca+2 + 2Cl-
92
+ 2.69E+07 , // MgSO4 = Mg+2 + SO4-2
93
+ 6.62E+07 , // NaSO4- = Na+ + SO4-2
94
+ 3.00E-08 // CaCO3 + H+ = Ca+2 + HCO3-
106
95
};
107
96
108
- constexpr CArrayWrapper<int , 11 > mobileSpeciesFlag =
97
+ constexpr CArrayWrapper<int , 10 > mobileSpeciesFlag =
109
98
{ 1 , // OH- + H+ = H2O
110
99
1 , // CO2 + H2O = H+ + HCO3-
111
100
1 , // CO3-2 + H+ = HCO3-
112
- 1 , // H2CO3 = H+ + HCO3-
113
101
1 , // CaHCO3+ = Ca+2 + HCO3-
114
102
1 , // CaSO4 = Ca+2 + SO4-2
115
103
1 , // CaCl+ = Ca+2 + Cl-
@@ -118,14 +106,16 @@ constexpr CArrayWrapper<int, 11> mobileSpeciesFlag =
118
106
1 , // NaSO4- = Na+ + SO4-2
119
107
1 // CaCO3 + H+ = Ca+2 + HCO3-
120
108
};
121
- }
122
- using carbonateSystemAllKineticType = reactionsSystems::MixedReactionsParameters< double , int , int , 18 , 11 , 0 >;
123
- using carbonateSystemAllEquilibriumType = reactionsSystems::MixedReactionsParameters< double , int , int , 18 , 11 , 11 >;
124
- using carbonateSystemType = reactionsSystems::MixedReactionsParameters< double , int , int , 17 , 11 , 10 >;
125
109
126
- constexpr carbonateSystemAllKineticType carbonateSystemAllKinetic ( carbonate::stoichMatrix, carbonate::equilibriumConstants, carbonate::forwardRates, carbonate::reverseRates, carbonate::mobileSpeciesFlag );
127
- constexpr carbonateSystemAllEquilibriumType carbonateSystemAllEquilibrium ( carbonate::stoichMatrix, carbonate::equilibriumConstants, carbonate::forwardRates, carbonate::reverseRates, carbonate::mobileSpeciesFlag );
128
- constexpr carbonateSystemType carbonateSystem ( carbonate::stoichMatrixNosolid, carbonate::equilibriumConstants, carbonate::forwardRates, carbonate::reverseRates, carbonate::mobileSpeciesFlag );
110
+ }
111
+
112
+ using carbonateSystemAllKineticType = reactionsSystems::MixedReactionsParameters< double , int , int , 17 , 10 , 0 >;
113
+ using carbonateSystemAllEquilibriumType = reactionsSystems::MixedReactionsParameters< double , int , int , 17 , 10 , 10 >;
114
+ using carbonateSystemType = reactionsSystems::MixedReactionsParameters< double , int , int , 16 , 10 , 9 >;
115
+
116
+ constexpr carbonateSystemAllKineticType carbonateSystemAllKinetic ( carbonate::stoichMatrix, carbonate::equilibriumConstants, carbonate::forwardRates, carbonate::reverseRates, carbonate::mobileSpeciesFlag );
117
+ constexpr carbonateSystemAllEquilibriumType carbonateSystemAllEquilibrium ( carbonate::stoichMatrix, carbonate::equilibriumConstants, carbonate::forwardRates, carbonate::reverseRates, carbonate::mobileSpeciesFlag );
118
+ constexpr carbonateSystemType carbonateSystem ( carbonate::stoichMatrixNosolid, carbonate::equilibriumConstants, carbonate::forwardRates, carbonate::reverseRates, carbonate::mobileSpeciesFlag );
129
119
130
120
// *****UNCRUSTIFY-ON******
131
121
} // namespace geochemistry
0 commit comments