From 59d975920b7c8457e3713c9eb32692b0c22f350b Mon Sep 17 00:00:00 2001 From: Harry Moffat Date: Thu, 4 Dec 2008 02:13:12 +0000 Subject: [PATCH] added a setState_TPMoles() function that updates everything at once. --- Cantera/src/equil/MultiPhase.cpp | 9 ++++++++- Cantera/src/equil/MultiPhase.h | 11 ++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Cantera/src/equil/MultiPhase.cpp b/Cantera/src/equil/MultiPhase.cpp index 9b65d2f13..8a554011d 100644 --- a/Cantera/src/equil/MultiPhase.cpp +++ b/Cantera/src/equil/MultiPhase.cpp @@ -426,7 +426,7 @@ namespace Cantera { /// Set the species moles to the values in array \a n. The state /// of each phase object is also updated to have the specified /// composition and the mixture temperature and pressure. - void MultiPhase::setMoles(doublereal* n) { + void MultiPhase::setMoles(const doublereal* n) { if (!m_init) init(); index_t ip, loc = 0; index_t ik, k = 0, nsp; @@ -455,6 +455,13 @@ namespace Cantera { } } + void MultiPhase::setState_TPMoles(const doublereal T, const doublereal Pres, + const doublereal *n) { + m_temp = T; + m_press = Pres; + setMoles(n); + } + void MultiPhase::getElemAbundances(doublereal *elemAbundances) const { index_t eGlobal; calcElemAbundances(); diff --git a/Cantera/src/equil/MultiPhase.h b/Cantera/src/equil/MultiPhase.h index e9434d0e3..65a991428 100644 --- a/Cantera/src/equil/MultiPhase.h +++ b/Cantera/src/equil/MultiPhase.h @@ -319,6 +319,15 @@ namespace Cantera { */ void setTemperature(const doublereal T); + //! Set the state of the underlying ThermoPhase objects in one call + /*! + * @param T Temperature of the system (kelvin) + * @param Pres pressure of the system (pascal) + * @param Moles Vector of mole numbers of all the species in all the phases + * (kmol) + */ + void setState_TPMoles(const doublereal T, const doublereal Pres, const doublereal *Moles); + /// Pressure [Pa]. doublereal pressure() const { return m_press; @@ -437,7 +446,7 @@ namespace Cantera { * containing the global mole numbers * (kmol). */ - void setMoles(doublereal* n); + void setMoles(const doublereal* n); //! Retrieves a vector of element abundances /*!