Test the swap works on kinetic species.
851{
853
854
856 {"H2O", "H+", ">(s)FeOH", ">(w)FeOH", "Fe++", "HCO3-", "O2(aq)"},
857 {},
858 {"CH4(g)fake"},
859 {"Fe(OH)3(ppd)", "Fe(OH)3(ppd)fake"},
860 {"(O-phth)--"},
861 {">(s)FeO-"},
862 "O2(aq)",
863 "e-");
865 1.0,
866 2.0,
867 true,
868 0.0,
869 0.0,
870 0.0,
871 {"H+", "O2(aq)", "CO3--"},
872 {1.1, 2.2, 3.3},
873 {-0.1, 0.2, -0.3},
874 {0.5, 0.25, 0.125},
875 5.0,
876 6.0,
877 7.0,
878 8.0,
880 "O2(aq)",
881 1.0,
882 -1.0,
883 0.0);
886 -1.0,
887 -2.0,
888 false,
889 0.0,
890 0.0,
891 0.0,
892 {"O2(aq)", "Fe+++", "H2O"},
893 {-1.1, -2.2, -3.3},
894 {0.75, 0.875, 1.0},
895 {0.2, 0.3, 0.4},
896 -5.0,
897 -6.0,
898 -7.0,
899 -8.0,
901 "Fe++",
902 -2.0,
903 -1.0,
904 0.0);
907 1.1,
908 2.2,
909 false,
910 0.0,
911 0.0,
912 0.0,
913 {"CO2(aq)", "Fe+++", "Fe++"},
914 {1.25, 2.25, 3.25},
915 {0.1, -0.12, 1.23},
916 {0.5, 0.6, 0.7},
917 5.5,
918 -6.6,
919 -7.7,
920 -8.8,
922 "Fe+++",
923 2.0,
924 -1.0,
925 0.0);
929
931 for (
const auto & sp :
mgd.basis_species_index)
932 ASSERT_EQ(
mgd.basis_species_name[sp.second], sp.first);
933
935 for (
const auto & sp :
mgd.eqm_species_index)
936 ASSERT_EQ(
mgd.eqm_species_name[sp.second], sp.first);
937
939 for (
const auto & sp :
mgd.kin_species_index)
940 ASSERT_EQ(
mgd.kin_species_name[sp.second], sp.first);
941
945
946 for (
const auto & species :
mgd.basis_species_index)
947 ASSERT_EQ(
mgd.basis_species_mineral[species.second], false);
948 for (
const auto & species :
mgd.eqm_species_index)
949 ASSERT_EQ(
mgd.eqm_species_mineral[species.second], false);
950 for (
const auto & species :
mgd.kin_species_index)
951 if (species.first ==
"Fe(OH)3(ppd)" || species.first ==
"Fe(OH)3(ppd)fake")
952 ASSERT_EQ(
mgd.kin_species_mineral[species.second], true);
953 else
955
956 for (
const auto & species :
mgd.basis_species_index)
957 ASSERT_EQ(
mgd.basis_species_gas[species.second], false);
958 for (
const auto & species :
mgd.eqm_species_index)
959 if (species.first ==
"CH4(g)fake")
960 ASSERT_EQ(
mgd.eqm_species_gas[species.second], true);
961 else
963
964 for (
const auto & species :
mgd.basis_species_index)
965 if (species.first ==
">(s)FeOH" || species.first ==
">(w)FeOH")
966 ASSERT_EQ(
mgd.basis_species_transported[species.second], false);
967 else
969 for (
const auto & species :
mgd.eqm_species_index)
970 ASSERT_EQ(
mgd.eqm_species_transported[species.second], true);
971 for (
const auto & species :
mgd.kin_species_index)
972 if (species.first ==
"Fe(OH)3(ppd)" || species.first ==
"Fe(OH)3(ppd)fake" ||
973 species.first == ">(s)FeO-")
974 ASSERT_EQ(
mgd.kin_species_transported[species.second], false);
975 else
977
979 for (const auto & sp : {"CO2(aq)", "CO3--", "OH-", "CH4(aq)", "Fe+++", "CH4(g)fake"})
981
983 for (const auto & sp : {"Fe(OH)3(ppd)", "Fe(OH)3(ppd)fake", "(O-phth)--", ">(s)FeO-"})
985
986 std::map<std::string, Real> charge_gold;
987 charge_gold["H2O"] = 0.0;
988 charge_gold["H+"] = 1.0;
989 charge_gold[">(s)FeOH"] = 0.0;
990 charge_gold[">(w)FeOH"] = 0.0;
991 charge_gold["Fe++"] = 2.0;
992 charge_gold["HCO3-"] = -1.0;
993 charge_gold["O2(aq)"] = 0.0;
994 charge_gold["CO2(aq)"] = 0.0;
995 charge_gold["CO3--"] = -2.0;
996 charge_gold["OH-"] = -1.0;
997 charge_gold["CH4(aq)"] = 0.0;
998 charge_gold["Fe+++"] = 3.0;
999 charge_gold["CH4(g)fake"] = 0.0;
1000 charge_gold["Fe(OH)3(ppd)"] = 0.0;
1001 charge_gold["Fe(OH)3(ppd)fake"] = 0.0;
1002 charge_gold["(O-phth)--"] = -2.0;
1003 charge_gold[">(s)FeO-"] = -1.0;
1004 for (
const auto & sp :
mgd.basis_species_index)
1005 ASSERT_EQ(
mgd.basis_species_charge[sp.second], charge_gold[sp.first]);
1006 for (
const auto & sp :
mgd.eqm_species_index)
1007 ASSERT_EQ(
mgd.eqm_species_charge[sp.second], charge_gold[sp.first]);
1008 for (
const auto & sp :
mgd.kin_species_index)
1009 ASSERT_EQ(
mgd.kin_species_charge[sp.second], charge_gold[sp.first]);
1010
1011 std::map<std::string, Real> radius_gold;
1012 radius_gold["H2O"] = 0.0;
1013 radius_gold["H+"] = 9.0;
1014 radius_gold[">(s)FeOH"] = 0.0;
1015 radius_gold[">(w)FeOH"] = 0.0;
1016 radius_gold["Fe++"] = 6.0;
1017 radius_gold["HCO3-"] = 4.5;
1018 radius_gold["O2(aq)"] = -0.5;
1019 radius_gold["CO2(aq)"] = 4.0;
1020 radius_gold["CO3--"] = 4.5;
1021 radius_gold["OH-"] = 3.5;
1022 radius_gold["CH4(aq)"] = -0.5;
1023 radius_gold["Fe+++"] = 9.0;
1024 radius_gold["CH4(g)fake"] = 0.0;
1025 for (
const auto & sp :
mgd.basis_species_index)
1026 ASSERT_EQ(
mgd.basis_species_radius[sp.second], radius_gold[sp.first]);
1027 for (
const auto & sp :
mgd.eqm_species_index)
1028 ASSERT_EQ(
mgd.eqm_species_radius[sp.second], radius_gold[sp.first]);
1029
1030 std::map<std::string, Real> molecular_weight_gold;
1031 molecular_weight_gold["H2O"] = 18.0152;
1032 molecular_weight_gold["H+"] = 1.0079;
1033 molecular_weight_gold[">(s)FeOH"] = 72.8543;
1034 molecular_weight_gold[">(w)FeOH"] = 1234.567;
1035 molecular_weight_gold["Fe++"] = 55.8470;
1036 molecular_weight_gold["HCO3-"] = 61.0171;
1037 molecular_weight_gold["O2(aq)"] = 31.9988;
1038 molecular_weight_gold["CO2(aq)"] = 44.0098;
1039 molecular_weight_gold["CO3--"] = 60.0092;
1040 molecular_weight_gold["OH-"] = 17.0073;
1041 molecular_weight_gold["CH4(aq)"] = 16.0426;
1042 molecular_weight_gold["Fe+++"] = 55.8470;
1043 molecular_weight_gold["CH4(g)fake"] = 16.0426;
1044 molecular_weight_gold["Fe(OH)3(ppd)"] = 106.8689;
1045 molecular_weight_gold["Fe(OH)3(ppd)fake"] = 106.8689;
1046 molecular_weight_gold["(O-phth)--"] = 164.1172;
1047 molecular_weight_gold[">(s)FeO-"] = 71.8464;
1048 for (
const auto & sp :
mgd.basis_species_index)
1049 ASSERT_EQ(
mgd.basis_species_molecular_weight[sp.second], molecular_weight_gold[sp.first]);
1050 for (
const auto & sp :
mgd.eqm_species_index)
1051 ASSERT_EQ(
mgd.eqm_species_molecular_weight[sp.second], molecular_weight_gold[sp.first]);
1052 for (
const auto & sp :
mgd.kin_species_index)
1053 ASSERT_EQ(
mgd.kin_species_molecular_weight[sp.second], molecular_weight_gold[sp.first]);
1054
1055 std::map<std::string, Real> molecular_volume_gold;
1056 molecular_volume_gold["H2O"] = 0.0;
1057 molecular_volume_gold["H+"] = 0.0;
1058 molecular_volume_gold[">(s)FeOH"] = 0.0;
1059 molecular_volume_gold[">(w)FeOH"] = 0.0;
1060 molecular_volume_gold["Fe++"] = 0.0;
1061 molecular_volume_gold["HCO3-"] = 0.0;
1062 molecular_volume_gold["O2(aq)"] = 0.0;
1063 molecular_volume_gold["CO2(aq)"] = 0.0;
1064 molecular_volume_gold["CO3--"] = 0.0;
1065 molecular_volume_gold["OH-"] = 0.0;
1066 molecular_volume_gold["CH4(aq)"] = 0.0;
1067 molecular_volume_gold["Fe+++"] = 0.0;
1068 molecular_volume_gold["CH4(g)fake"] = 0.0;
1069 molecular_volume_gold["Fe(OH)3(ppd)"] = 34.3200;
1070 molecular_volume_gold["Fe(OH)3(ppd)fake"] = 34.3200;
1071 molecular_volume_gold["(O-phth)--"] = 0.0;
1072 molecular_volume_gold[">(s)FeO-"] = 0.0;
1073 for (
const auto & sp :
mgd.basis_species_index)
1074 ASSERT_EQ(
mgd.basis_species_molecular_volume[sp.second], molecular_volume_gold[sp.first]);
1075 for (
const auto & sp :
mgd.eqm_species_index)
1076 ASSERT_EQ(
mgd.eqm_species_molecular_volume[sp.second], molecular_volume_gold[sp.first]);
1077 for (
const auto & sp :
mgd.kin_species_index)
1078 ASSERT_EQ(
mgd.kin_species_molecular_volume[sp.second], molecular_volume_gold[sp.first]);
1079
1080 std::map<std::string, DenseMatrix<Real>> stoi_gold;
1081 for (const auto & sp : {"CO2(aq)",
1082 "CO3--",
1083 "OH-",
1084 "CH4(aq)",
1085 "Fe+++",
1086 "CH4(g)fake",
1087 "Fe(OH)3(ppd)",
1088 "Fe(OH)3(ppd)fake",
1089 "(O-phth)--",
1090 ">(s)FeO-"})
1091 stoi_gold[sp] = DenseMatrix<Real>(1, 7);
1092
1093
1094 stoi_gold["CO2(aq)"](0, 0) = -1;
1095 stoi_gold["CO2(aq)"](0, 1) = 1;
1096 stoi_gold["CO2(aq)"](0, 5) = 1;
1097 stoi_gold["CO3--"](0, 5) = 1;
1098 stoi_gold["CO3--"](0, 1) = -1;
1099 stoi_gold["OH-"](0, 0) = 1;
1100 stoi_gold["OH-"](0, 1) = -1;
1101 stoi_gold["CH4(aq)"](0, 0) = 1;
1102 stoi_gold["CH4(aq)"](0, 1) = 1;
1103 stoi_gold["CH4(aq)"](0, 5) = 1;
1104 stoi_gold["CH4(aq)"](0, 6) = -2;
1105 stoi_gold["Fe+++"](0, 0) = -0.5;
1106 stoi_gold["Fe+++"](0, 4) = 1;
1107 stoi_gold["Fe+++"](0, 1) = 1;
1108 stoi_gold["Fe+++"](0, 6) = 0.25;
1109 stoi_gold["CH4(g)fake"](0, 0) = 3;
1110 stoi_gold["CH4(g)fake"](0, 4) = -2;
1111 stoi_gold["CH4(g)fake"](0, 5) = 3.5;
1112 stoi_gold["CH4(g)fake"](0, 6) = -4.5;
1113 stoi_gold["Fe(OH)3(ppd)"](0, 1) = -2;
1114 stoi_gold["Fe(OH)3(ppd)"](0, 4) = 1;
1115 stoi_gold["Fe(OH)3(ppd)"](0, 0) = 2.5;
1116 stoi_gold["Fe(OH)3(ppd)"](0, 6) = 0.25;
1117 stoi_gold["Fe(OH)3(ppd)fake"](0, 1) = -1;
1118 stoi_gold["Fe(OH)3(ppd)fake"](0, 0) = 2;
1119 stoi_gold["Fe(OH)3(ppd)fake"](0, 4) = 2;
1120 stoi_gold["Fe(OH)3(ppd)fake"](0, 6) = 0.5;
1121 stoi_gold["(O-phth)--"](0, 0) = -5;
1122 stoi_gold["(O-phth)--"](0, 5) = 8;
1123 stoi_gold["(O-phth)--"](0, 1) = 6;
1124 stoi_gold["(O-phth)--"](0, 6) = -7.5;
1125 stoi_gold[">(s)FeO-"](0, 2) = 1;
1126 stoi_gold[">(s)FeO-"](0, 1) = -1;
1127
1128 for (const auto & sp : {"CO2(aq)", "CO3--", "OH-", "CH4(aq)", "Fe+++", "CH4(g)fake"})
1129 {
1132 }
1133
1134 for (const auto & sp : {"Fe(OH)3(ppd)", "Fe(OH)3(ppd)fake", "(O-phth)--", ">(s)FeO-"})
1135 {
1138 }
1139
1140 const std::vector<Real> feoh3ppd = {
1141 6.1946, 4.8890, 3.4608, 2.2392, 1.1150, 0.2446, -0.5504, -1.5398};
1142 const std::vector<Real> fe3 = {10.0553, 8.4878, 6.6954, 5.0568, 3.4154, 2.0747, 0.8908, -0.2679};
1143 const std::vector<Real> ophth = {
1144 594.3211, 542.8292, 482.3612, 425.9738, 368.7004, 321.8658, 281.8216, 246.4849};
1145 const std::vector<Real> feom = {8.93,
1146 8.93 - 0.3 * 25,
1147 8.93 - 0.3 * 60,
1148 8.93 - 0.3 * 100,
1149 8.93 - 0.3 * 150,
1150 8.93 - 0.3 * 200,
1151 8.93 - 0.3 * 250,
1152 8.93 - 0.3 * 300};
1153
1154 for (unsigned t = 0; t < 8; ++t)
1155 {
1156 ASSERT_NEAR(
1159 feoh3ppd[t] - 2 * fe3[t],
1163 }
1164
1166 std::vector<std::vector<Real>> kin_rate_gold(3, std::vector<Real>(7 + 6, 0.0));
1167 std::vector<std::vector<Real>> kin_monod_gold(3, std::vector<Real>(7 + 6, 0.0));
1168 std::vector<std::vector<Real>> kin_k_gold(3, std::vector<Real>(7 + 6, 0.0));
1196 for (unsigned i = 0; i < 3; ++i)
1197 for (unsigned j = 0; j < 7 + 6; ++j)
1198 {
1199 EXPECT_EQ(
mgd.
kin_rate[i].promoting_indices[j], kin_rate_gold[i][j]);
1200 EXPECT_EQ(
mgd.
kin_rate[i].promoting_monod_indices[j], kin_monod_gold[i][j]);
1201 EXPECT_EQ(
mgd.
kin_rate[i].promoting_half_saturation[j], kin_k_gold[i][j]);
1202 }
1203
1207
1210
1211 swapper.performSwap(
mgd,
"O2(aq)",
"Fe+++");
1212
1213
1215 for (const auto & sp : {"H2O", "H+", ">(s)FeOH", ">(w)FeOH", "Fe++", "HCO3-", "Fe+++"})
1217 for (
const auto & sp :
mgd.basis_species_index)
1218 ASSERT_EQ(
mgd.basis_species_name[sp.second], sp.first);
1220
1221
1223 for (const auto & sp : {"CO2(aq)", "CO3--", "OH-", "CH4(aq)", "O2(aq)", "CH4(g)fake"})
1225 for (
const auto & sp :
mgd.eqm_species_index)
1226 ASSERT_EQ(
mgd.eqm_species_name[sp.second], sp.first);
1228
1230 for (
const auto & sp :
mgd.kin_species_index)
1231 ASSERT_EQ(
mgd.kin_species_name[sp.second], sp.first);
1232 for (const auto & sp : {"Fe(OH)3(ppd)", "Fe(OH)3(ppd)fake", "(O-phth)--", ">(s)FeO-"})
1234
1235
1241
1242
1243 for (
const auto & sp :
mgd.basis_species_index)
1244 ASSERT_EQ(
mgd.basis_species_charge[sp.second], charge_gold[sp.first]);
1245 for (
const auto & sp :
mgd.eqm_species_index)
1246 ASSERT_EQ(
mgd.eqm_species_charge[sp.second], charge_gold[sp.first]);
1247 for (
const auto & sp :
mgd.kin_species_index)
1248 ASSERT_EQ(
mgd.kin_species_charge[sp.second], charge_gold[sp.first]);
1249
1250
1251 for (
const auto & sp :
mgd.basis_species_index)
1252 ASSERT_EQ(
mgd.basis_species_radius[sp.second], radius_gold[sp.first]);
1253 for (
const auto & sp :
mgd.eqm_species_index)
1254 ASSERT_EQ(
mgd.eqm_species_radius[sp.second], radius_gold[sp.first]);
1255
1256
1257 for (
const auto & sp :
mgd.basis_species_index)
1258 ASSERT_EQ(
mgd.basis_species_molecular_weight[sp.second], molecular_weight_gold[sp.first]);
1259 for (
const auto & sp :
mgd.eqm_species_index)
1260 ASSERT_EQ(
mgd.eqm_species_molecular_weight[sp.second], molecular_weight_gold[sp.first]);
1261 for (
const auto & sp :
mgd.kin_species_index)
1262 ASSERT_EQ(
mgd.kin_species_molecular_weight[sp.second], molecular_weight_gold[sp.first]);
1263
1264
1265 for (
const auto & sp :
mgd.basis_species_index)
1266 ASSERT_EQ(
mgd.basis_species_molecular_volume[sp.second], molecular_volume_gold[sp.first]);
1267 for (
const auto & sp :
mgd.eqm_species_index)
1268 ASSERT_EQ(
mgd.eqm_species_molecular_volume[sp.second], molecular_volume_gold[sp.first]);
1269 for (
const auto & sp :
mgd.kin_species_index)
1270 ASSERT_EQ(
mgd.kin_species_molecular_volume[sp.second], molecular_volume_gold[sp.first]);
1271
1272
1273 for (
const auto & species :
mgd.basis_species_index)
1274 ASSERT_EQ(
mgd.basis_species_mineral[species.second], false);
1275 for (
const auto & species :
mgd.eqm_species_index)
1276 ASSERT_EQ(
mgd.eqm_species_mineral[species.second], false);
1277 for (
const auto & species :
mgd.kin_species_index)
1278 if (species.first ==
"Fe(OH)3(ppd)" || species.first ==
"Fe(OH)3(ppd)fake")
1279 ASSERT_EQ(
mgd.kin_species_mineral[species.second], true);
1280 else
1282
1283
1284 for (
const auto & species :
mgd.basis_species_index)
1285 ASSERT_EQ(
mgd.basis_species_gas[species.second], false);
1286 for (
const auto & species :
mgd.eqm_species_index)
1287 if (species.first ==
"CH4(g)fake")
1288 ASSERT_EQ(
mgd.eqm_species_gas[species.second], true);
1289 else
1291
1292
1293 for (
const auto & species :
mgd.basis_species_index)
1294 if (species.first ==
">(s)FeOH" || species.first ==
">(w)FeOH")
1295 ASSERT_EQ(
mgd.basis_species_transported[species.second], false);
1296 else
1298 for (
const auto & species :
mgd.eqm_species_index)
1299 ASSERT_EQ(
mgd.eqm_species_transported[species.second], true);
1300 for (
const auto & species :
mgd.kin_species_index)
1301 if (species.first ==
"Fe(OH)3(ppd)" || species.first ==
"Fe(OH)3(ppd)fake" ||
1302 species.first == ">(s)FeO-")
1303 ASSERT_EQ(
mgd.kin_species_transported[species.second], false);
1304 else
1306
1307
1308 for (const auto & sp : {"CO2(aq)",
1309 "CO3--",
1310 "OH-",
1311 "CH4(aq)",
1312 "O2(aq)",
1313 "CH4(g)fake",
1314 "Fe(OH)3(ppd)",
1315 "Fe(OH)3(ppd)fake",
1316 "(O-phth)--",
1317 ">(s)FeO-"})
1318 stoi_gold[sp] = DenseMatrix<Real>(1, 7);
1319
1320
1321 stoi_gold["CO2(aq)"](0, 0) = -1;
1322 stoi_gold["CO2(aq)"](0, 1) = 1;
1323 stoi_gold["CO2(aq)"](0, 5) = 1;
1324 stoi_gold["CO3--"](0, 5) = 1;
1325 stoi_gold["CO3--"](0, 1) = -1;
1326 stoi_gold["OH-"](0, 0) = 1;
1327 stoi_gold["OH-"](0, 1) = -1;
1328 stoi_gold["CH4(aq)"](0, 0) = -3;
1329 stoi_gold["CH4(aq)"](0, 1) = 9;
1330 stoi_gold["CH4(aq)"](0, 4) = 8;
1331 stoi_gold["CH4(aq)"](0, 5) = 1;
1332 stoi_gold["CH4(aq)"](0, 6) = -8;
1333 stoi_gold["O2(aq)"](0, 0) = 2;
1334 stoi_gold["O2(aq)"](0, 1) = -4;
1335 stoi_gold["O2(aq)"](0, 4) = -4;
1336 stoi_gold["O2(aq)"](0, 6) = 4;
1337 stoi_gold["CH4(g)fake"](0, 0) = -6;
1338 stoi_gold["CH4(g)fake"](0, 1) = 18;
1339 stoi_gold["CH4(g)fake"](0, 4) = 16;
1340 stoi_gold["CH4(g)fake"](0, 5) = 3.5;
1341 stoi_gold["CH4(g)fake"](0, 6) = -18;
1342 stoi_gold["Fe(OH)3(ppd)"](0, 0) = 3;
1343 stoi_gold["Fe(OH)3(ppd)"](0, 1) = -3;
1344 stoi_gold["Fe(OH)3(ppd)"](0, 6) = 1;
1345 stoi_gold["Fe(OH)3(ppd)fake"](0, 0) = 3;
1346 stoi_gold["Fe(OH)3(ppd)fake"](0, 1) = -3;
1347 stoi_gold["Fe(OH)3(ppd)fake"](0, 6) = 2;
1348 stoi_gold["(O-phth)--"](0, 0) = -5 - 7.5 * 2;
1349 stoi_gold["(O-phth)--"](0, 1) = 6 + 7.5 * 4;
1350 stoi_gold["(O-phth)--"](0, 4) = 7.5 * 4;
1351 stoi_gold["(O-phth)--"](0, 5) = 8;
1352 stoi_gold["(O-phth)--"](0, 6) = -7.5 * 4;
1353 stoi_gold[">(s)FeO-"](0, 2) = 1;
1354 stoi_gold[">(s)FeO-"](0, 1) = -1;
1355
1356 for (const auto & sp : {"CO2(aq)", "CO3--", "OH-", "CH4(aq)", "O2(aq)", "CH4(g)fake"})
1357 {
1359 for (unsigned i = 0; i < 7; ++i)
1361 }
1362
1363 for (const auto & sp : {"Fe(OH)3(ppd)", "Fe(OH)3(ppd)fake", "(O-phth)--", ">(s)FeO-"})
1364 {
1366 for (unsigned i = 0; i < 7; ++i)
1368 }
1369
1370 for (unsigned t = 0; t < 8; ++t)
1371 {
1375 ophth[t] - (7.5 / 0.25) * fe3[t],
1378 }
1379
1381 std::vector<std::vector<Real>> new_kin_rate_gold(3, std::vector<Real>(7 + 6, 0.0));
1382 std::vector<std::vector<Real>> new_kin_monod_gold(3, std::vector<Real>(7 + 6, 0.0));
1383 std::vector<std::vector<Real>> new_kin_k_gold(3, std::vector<Real>(7 + 6, 0.0));
1411 for (unsigned i = 0; i < 3; ++i)
1412 for (unsigned j = 0; j < 7 + 6; ++j)
1413 {
1414 EXPECT_EQ(
mgd.
kin_rate[i].promoting_indices[j], new_kin_rate_gold[i][j]);
1415 EXPECT_EQ(
mgd.
kin_rate[i].promoting_monod_indices[j], new_kin_monod_gold[i][j]);
1416 EXPECT_EQ(
mgd.
kin_rate[i].promoting_half_saturation[j], new_kin_k_gold[i][j]);
1417 }
1418
1419
1420 EXPECT_EQ(
mgd.
kin_rate[0].progeny_index, 7 + fe3_posn);
1422 EXPECT_EQ(
mgd.
kin_rate[2].progeny_index, o2aq_posn);
1423}
void addKineticRate(const KineticRateUserDescription &description)
Adds a rate description for kinetic_species.
Holds a user-specified description of a kinetic rate.
DenseMatrix< Real > kin_stoichiometry
kin_stoichiometry(i, j) = stoichiometric coefficient for kinetic species "i" in terms of the basis sp...
std::vector< bool > kin_species_mineral
kin_species_mineral[j] = true iff the j^th kinetic species is a mineral
std::vector< KineticRateDefinition > kin_rate
rates given to kinetic species.
DenseMatrix< Real > kin_log10K
kin_log10K(i, j) = log10(equilibrium constant for the i^th kinetic species at the j^th temperature po...
std::vector< bool > kin_species_transported
kin_species_transported[j] = true iff the j^th kinetic species is transported in reactive-transport s...
std::unordered_map< std::string, unsigned > kin_species_index
kin_species_index[name] = index of the kinetic species, within all ModelGeochemicalDatabase internal ...