From 28202f9fa2be9a838a5b99ae0914452739c85c82 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Sat, 22 Oct 2016 15:48:45 -0400 Subject: [PATCH] [Reactor] Allow Reactor to function without requiring a Kinetics object --- src/zeroD/Reactor.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/zeroD/Reactor.cpp b/src/zeroD/Reactor.cpp index 531b640ab..8337fc513 100644 --- a/src/zeroD/Reactor.cpp +++ b/src/zeroD/Reactor.cpp @@ -80,7 +80,7 @@ void Reactor::getSurfaceInitialConditions(double* y) void Reactor::initialize(doublereal t0) { - if (!m_thermo || !m_kin) { + if (!m_thermo || (m_chem && !m_kin)) { throw CanteraError("Reactor::initialize", "Reactor contents not set" " for reactor '" + m_name + "'."); } @@ -106,7 +106,7 @@ void Reactor::initialize(doublereal t0) m_nv += S->thermo()->nSpecies(); size_t nt = S->kinetics()->nTotalSpecies(); maxnt = std::max(maxnt, nt); - if (&m_kin->thermo(0) != &S->kinetics()->thermo(0)) { + if (m_chem && &m_kin->thermo(0) != &S->kinetics()->thermo(0)) { throw CanteraError("Reactor::initialize", "First phase of all kinetics managers must be the gas."); } @@ -307,7 +307,7 @@ double Reactor::evalSurfaces(double t, double* ydot) void Reactor::addSensitivityReaction(size_t rxn) { - if (rxn >= m_kin->nReactions()) { + if (!m_chem || rxn >= m_kin->nReactions()) { throw CanteraError("Reactor::addSensitivityReaction", "Reaction number out of range ({})", rxn); } @@ -429,7 +429,9 @@ void Reactor::applySensitivity(double* params) S->setSensitivityParameters(params); } m_thermo->invalidateCache(); - m_kin->invalidateCache(); + if (m_kin) { + m_kin->invalidateCache(); + } } void Reactor::resetSensitivity(double* params) @@ -448,7 +450,9 @@ void Reactor::resetSensitivity(double* params) S->resetSensitivityParameters(); } m_thermo->invalidateCache(); - m_kin->invalidateCache(); + if (m_kin) { + m_kin->invalidateCache(); + } } }