Saved element potentials are only valid at equilibrium, and may not be a good
guess for calls to equilibrate() after the state has changed.
By always using the estimation method for the element potentials at the start of
the ChemEquil algorithm, the results of equilibrate() are repeatable, and do not
depend on the results of previous calls to equilibrate().
Resolves#524
In cases where the specified state was non-physical (i.e. corresponded to a
negative temperature), the iteration would exit when the temperature reached a
small enough value. Computing the error in temperature relative to the current
temperature avoids this problem.
Fixes#264
The following classes (and their children) will be non-copyable and
non-assignable after Cantera 2.3:
- ThermoPhase
- Kinetics
- Transport
- Species
- SpeciesThermoInterpType
- MultiSpeciesThermo
- VPSSMgr
- PDSS
- ResidJacEval
- RootFind
The new class is named MultiSpeciesThermo, so that (eventually) the name
SpeciesThermo can be used for the single-species class SpeciesThermoInterpType.
Currently, trivial wrappers for classes named SpeciesThermo and
GeneralSpeciesThermo to maintain backwards compatibiity for Cantera 2.3.
Using this instead of modifyHf298 to reset the thermo data to its original
state avoids round-off errors that otherwise make modifications to the
species thermo data irreversible.
Where possible, extend arrays as species are added rather than requiring a
later call to initThermo(). For phases that do not require any data except
that which is included in the Species objects themselves (notably, this
includes IdealGasPhase), species can now be added dynamically without
affecting the phase state.
This can be used to invalidate cached data after a change to underlying data
such as species thermo coefficients or reaction rate coefficients. Needs to be
user-accessible so that dependent objects can be updated manually.
All of the functions for manipulating the global error stack
(CanteraError::save, setError, showErrors, etc.) are deprecated. The ability to
store an error is retained only for use in the C and Fortran interfaces so that
the last error message can be retrieved after a function returns an error code.
They have the names setState_RP, setState_RPX, and setState_RPY. These
base class functions mirror the TP, TPX, TPY set, except that RP is not
implemented, because it depends on the EOS of the system. We cannot use
the normal setPressure because it sets the state by calculating the
density, but RP will specify the density.
This is a prerequisite to removing the species index as a property of the
SpeciesThermoInterpType object and making it independent of any specific
ThermoPhase object.
The Cython interface now calls this equilibrate function.
Unlike the free function 'equilibrate', this new equilibrate method actually
does what the documentation describes regarding the 'solver' argument. This
means that there are cases where failures of the MultiphaseEquil solver were
previously being hidden by a subsequent successful solution using the ChemEquil
solver. These tests have been marked as known failures.