diff --git a/include/cantera/oneD/StFlow.h b/include/cantera/oneD/StFlow.h index 862fd75300..370aee57b9 100644 --- a/include/cantera/oneD/StFlow.h +++ b/include/cantera/oneD/StFlow.h @@ -171,21 +171,31 @@ class StFlow : public Domain1D virtual shared_ptr asArray(const double* soln) const; virtual void fromArray(SolutionArray& arr, double* soln); - //! Set flow configuration for freely-propagating flames, using an internal - //! point with a fixed temperature as the condition to determine the inlet - //! mass flux. + //! Set flow configuration for freely-propagating flames, using an internal point + //! with a fixed temperature as the condition to determine the inlet mass flux. void setFreeFlow() { m_type = cFreeFlow; m_dovisc = false; m_isFree = true; + m_usesLambda = false; } - //! Set flow configuration for axisymmetric counterflow or burner-stabilized - //! flames, using specified inlet mass fluxes. + //! Set flow configuration for axisymmetric counterflow flames, using specified + //! inlet mass fluxes. void setAxisymmetricFlow() { m_type = cAxisymmetricStagnationFlow; m_dovisc = true; m_isFree = false; + m_usesLambda = true; + } + + //! Set flow configuration for burner-stabilized flames, using specified inlet mass + //! fluxes. + void setUnstrainedFlow() { + m_type = cAxisymmetricStagnationFlow; + m_dovisc = false; + m_isFree = false; + m_usesLambda = false; } //! Return the type of flow domain being represented, either "Free Flame" or @@ -482,6 +492,7 @@ class StFlow : public Domain1D bool m_dovisc; bool m_isFree; + bool m_usesLambda; //! Update the transport properties at grid points in the range from `j0` //! to `j1`, based on solution `x`. diff --git a/src/oneD/DomainFactory.cpp b/src/oneD/DomainFactory.cpp index 43f5e874b4..2e5d8fd084 100644 --- a/src/oneD/DomainFactory.cpp +++ b/src/oneD/DomainFactory.cpp @@ -53,6 +53,11 @@ DomainFactory::DomainFactory() ret->setAxisymmetricFlow(); return ret; }); + reg("unstrained-flow", [](shared_ptr solution, const string& id) { + StFlow* ret = new StFlow(solution, id); + ret->setUnstrainedFlow(); + return ret; + }); } DomainFactory* DomainFactory::factory() diff --git a/src/oneD/StFlow.cpp b/src/oneD/StFlow.cpp index 7475e820d9..c869ede5fd 100644 --- a/src/oneD/StFlow.cpp +++ b/src/oneD/StFlow.cpp @@ -132,7 +132,10 @@ string StFlow::type() const { if (m_isFree) { return "free-flow"; } - return "axisymmetric-flow"; + if (m_usesLambda) { + return "axisymmetric-flow"; + } + return "unstrained-flow"; } void StFlow::setThermo(IdealGasPhase& th) { @@ -730,9 +733,9 @@ bool StFlow::componentActive(size_t n) const { switch (n) { case c_offset_V: // spread_rate - return !m_isFree; + return m_usesLambda; case c_offset_L: // lambda - return !m_isFree; + return m_usesLambda; case c_offset_E: // eField return false; default: