Skip to content

Commit

Permalink
[Kinetics] Make default kinetics type dependent on phase dimensions
Browse files Browse the repository at this point in the history
  • Loading branch information
ischoegl committed Apr 19, 2022
1 parent 67bac69 commit 9c9a376
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions src/kinetics/KineticsFactory.cpp
Expand Up @@ -10,6 +10,7 @@
#include "cantera/kinetics/InterfaceKinetics.h"
#include "cantera/kinetics/EdgeKinetics.h"
#include "cantera/kinetics/importKinetics.h"
#include "cantera/thermo/ThermoPhase.h"
#include "cantera/base/xml.h"
#include "cantera/base/stringUtils.h"

Expand Down Expand Up @@ -63,8 +64,23 @@ unique_ptr<Kinetics> newKinetics(const vector<ThermoPhase*>& phases,
const AnyMap& phaseNode,
const AnyMap& rootNode)
{
unique_ptr<Kinetics> kin(KineticsFactory::factory()->newKinetics(
phaseNode.getString("kinetics", "none")));
std::string kinType = phaseNode.getString("kinetics", "none");
kinType = KineticsFactory::factory()->canonicalize(kinType);
if (kinType == "none") {
// determine phase with minimum number of dimensions
size_t nDim = 3;
for (auto& phase : phases) {
nDim = std::min(phase->nDim(), nDim);
}
// change kinetics type as necessary
if (nDim == 2) {
kinType = "surface";
} else if (nDim == 1) {
kinType = "edge";
}
}

unique_ptr<Kinetics> kin(KineticsFactory::factory()->newKinetics(kinType));
for (auto& phase : phases) {
kin->addPhase(*phase);
}
Expand Down

0 comments on commit 9c9a376

Please sign in to comment.