Skip to content

Commit

Permalink
[UnitTests] Update three-body unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ischoegl committed Jul 24, 2022
1 parent f658716 commit f59b6e3
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 21 deletions.
8 changes: 4 additions & 4 deletions test/kinetics/kineticsFromScratch.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,15 +156,15 @@ TEST_F(KineticsFromScratch, multiple_third_bodies4)
auto tbody = make_shared<ThirdBody>("O2");
auto R = make_shared<Reaction>(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"));
EXPECT_TRUE(input.hasKey("efficiencies"));
auto efficiencies = input["efficiencies"].asMap<double>();
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)
Expand All @@ -183,15 +183,15 @@ TEST_F(KineticsFromScratch, multiple_third_bodies6)
auto tbody = make_shared<ThirdBody>("O2");
auto R = make_shared<Reaction>(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"));
EXPECT_TRUE(input.hasKey("efficiencies"));
auto efficiencies = input["efficiencies"].asMap<double>();
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)
Expand Down
56 changes: 39 additions & 17 deletions test/kinetics/kineticsFromYaml.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<ArrheniusRate>(R->rate());
EXPECT_DOUBLE_EQ(rate->preExponentialFactor(), 5.0e+9);
Expand All @@ -174,11 +163,10 @@ TEST(Reaction, ThreeBodyFromYaml6)
auto efficiencies = input["efficiencies"].asMap<double>();
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(
Expand All @@ -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<ArrheniusRate>(R->rate());
EXPECT_DOUBLE_EQ(rate->preExponentialFactor(), 5.0e+9);
Expand All @@ -202,8 +191,7 @@ TEST(Reaction, ThreeBodyFromYaml7)
auto efficiencies = input["efficiencies"].asMap<double>();
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)
Expand Down Expand Up @@ -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");
Expand Down

0 comments on commit f59b6e3

Please sign in to comment.