diff --git a/test/kinetics/kineticsFromScratch.cpp b/test/kinetics/kineticsFromScratch.cpp index 30a577b8fe..f50dd0007f 100644 --- a/test/kinetics/kineticsFromScratch.cpp +++ b/test/kinetics/kineticsFromScratch.cpp @@ -156,6 +156,7 @@ TEST_F(KineticsFromScratch, multiple_third_bodies4) auto tbody = make_shared("O2"); auto R = make_shared(equation, rate, tbody); EXPECT_EQ(R->thirdBody()->name(), "O2"); + EXPECT_EQ(R->thirdBody()->default_efficiency, 0.); AnyMap input = R->parameters(false); EXPECT_FALSE(input.hasKey("type")); @@ -163,8 +164,7 @@ TEST_F(KineticsFromScratch, multiple_third_bodies4) auto efficiencies = input["efficiencies"].asMap(); EXPECT_EQ(efficiencies.size(), 1); EXPECT_EQ(efficiencies.begin()->first, "O2"); - EXPECT_TRUE(input.hasKey("default-efficiency")); - EXPECT_EQ(input["default-efficiency"].asDouble(), 0.); + EXPECT_FALSE(input.hasKey("default-efficiency")); } TEST_F(KineticsFromScratch, multiple_third_bodies5) @@ -183,6 +183,7 @@ TEST_F(KineticsFromScratch, multiple_third_bodies6) auto tbody = make_shared("O2"); auto R = make_shared(reac, prod, rate, tbody); EXPECT_EQ(R->thirdBody()->name(), "O2"); + EXPECT_EQ(R->thirdBody()->default_efficiency, 0.); AnyMap input = R->parameters(false); EXPECT_FALSE(input.hasKey("type")); @@ -190,8 +191,7 @@ TEST_F(KineticsFromScratch, multiple_third_bodies6) auto efficiencies = input["efficiencies"].asMap(); EXPECT_EQ(efficiencies.size(), 1); EXPECT_EQ(efficiencies.begin()->first, "O2"); - EXPECT_TRUE(input.hasKey("default-efficiency")); - EXPECT_EQ(input["default-efficiency"].asDouble(), 0.); + EXPECT_FALSE(input.hasKey("default-efficiency")); } TEST_F(KineticsFromScratch, multiple_third_bodies7) diff --git a/test/kinetics/kineticsFromYaml.cpp b/test/kinetics/kineticsFromYaml.cpp index 5487faf4a5..2d011d3e6f 100644 --- a/test/kinetics/kineticsFromYaml.cpp +++ b/test/kinetics/kineticsFromYaml.cpp @@ -141,29 +141,18 @@ TEST(Reaction, ThreeBodyFromYaml4) } TEST(Reaction, ThreeBodyFromYaml5) -{ - auto sol = newSolution("gri30.yaml", "", "None"); - AnyMap rxn = AnyMap::fromYamlString( - "{equation: CH2 + O2 <=> CH2 + O2," - " type: three-body," - " rate-constant: {A: 5.0e+9, b: 0.0, Ea: 0.0}}"); - - EXPECT_THROW(newReaction(rxn, *(sol->kinetics())), CanteraError); -} - -TEST(Reaction, ThreeBodyFromYaml6) { auto sol = newSolution("gri30.yaml", "", "None"); AnyMap rxn = AnyMap::fromYamlString( "{equation: CH2 + O2 <=> CH2 + O2," " rate-constant: {A: 5.0e+9, b: 0.0, Ea: 0.0}," - " default-efficiency: 0.," " efficiencies: {O2: 1.}}"); auto R = newReaction(rxn, *(sol->kinetics())); EXPECT_EQ(R->type(), "three-body-Arrhenius"); EXPECT_TRUE(R->usesThirdBody()); EXPECT_EQ(R->thirdBody()->name(), "O2"); + EXPECT_EQ(R->thirdBody()->default_efficiency, 0.); const auto& rate = std::dynamic_pointer_cast(R->rate()); EXPECT_DOUBLE_EQ(rate->preExponentialFactor(), 5.0e+9); @@ -174,11 +163,10 @@ TEST(Reaction, ThreeBodyFromYaml6) auto efficiencies = input["efficiencies"].asMap(); EXPECT_EQ(efficiencies.size(), 1); EXPECT_EQ(efficiencies.begin()->first, "O2"); - EXPECT_TRUE(input.hasKey("default-efficiency")); - EXPECT_EQ(input["default-efficiency"].asDouble(), 0.); + EXPECT_FALSE(input.hasKey("default-efficiency")); } -TEST(Reaction, ThreeBodyFromYaml7) +TEST(Reaction, ThreeBodyFromYaml6) { auto sol = newSolution("gri30.yaml", "", "None"); AnyMap rxn = AnyMap::fromYamlString( @@ -192,6 +180,7 @@ TEST(Reaction, ThreeBodyFromYaml7) EXPECT_EQ(R->type(), "three-body-Arrhenius"); EXPECT_TRUE(R->usesThirdBody()); EXPECT_EQ(R->thirdBody()->name(), "O2"); + EXPECT_EQ(R->thirdBody()->default_efficiency, 0.); const auto& rate = std::dynamic_pointer_cast(R->rate()); EXPECT_DOUBLE_EQ(rate->preExponentialFactor(), 5.0e+9); @@ -202,8 +191,7 @@ TEST(Reaction, ThreeBodyFromYaml7) auto efficiencies = input["efficiencies"].asMap(); EXPECT_EQ(efficiencies.size(), 1); EXPECT_EQ(efficiencies.begin()->first, "O2"); - EXPECT_TRUE(input.hasKey("default-efficiency")); - EXPECT_EQ(input["default-efficiency"].asDouble(), 0.); + EXPECT_FALSE(input.hasKey("default-efficiency")); } TEST(Reaction, ThreeBodyFromYamlMissingM) @@ -252,6 +240,40 @@ TEST(Reaction, ThreeBodyFromYamlIncompatible2) EXPECT_THROW(newReaction(rxn, *(sol->kinetics())), CanteraError); } +TEST(Reaction, ThreeBodyFromYamlIncompatible3) +{ + auto sol = newSolution("gri30.yaml", "", "None"); + AnyMap rxn = AnyMap::fromYamlString( + "{equation: CH2 + O2 <=> CH2 + O2," + " rate-constant: {A: 5.0e+9, b: 0.0, Ea: 0.0}," + " default-efficiency: 1.," // Needs to be zero + " efficiencies: {O2: 1.}}"); + + EXPECT_THROW(newReaction(rxn, *(sol->kinetics())), CanteraError); +} + +TEST(Reaction, ThreeBodyFromYamlIncompatible4) +{ + auto sol = newSolution("gri30.yaml", "", "None"); + AnyMap rxn = AnyMap::fromYamlString( + "{equation: CH2 + O2 <=> CH2 + O2," + " rate-constant: {A: 5.0e+9, b: 0.0, Ea: 0.0}," + " default-efficiency: 0.}"); // missing efficiencies field + + EXPECT_THROW(newReaction(rxn, *(sol->kinetics())), CanteraError); +} + +TEST(Reaction, ThreeBodyFromYamlIncompatible5) +{ + auto sol = newSolution("gri30.yaml", "", "None"); + AnyMap rxn = AnyMap::fromYamlString( + "{equation: CH2 + O2 <=> CH2 + O2," + " type: three-body," + " rate-constant: {A: 5.0e+9, b: 0.0, Ea: 0.0}}"); // third body ambiguous + + EXPECT_THROW(newReaction(rxn, *(sol->kinetics())), CanteraError); +} + TEST(Reaction, FalloffFromYaml1) { auto sol = newSolution("gri30.yaml", "", "None");