This corrects the behavior in cases where the correct temperature is below the
nominal minimum temperature for the phase.
Add test cases for this and analogous cases for the maximum temperature and
setState_HPorUV.
Fixes Issue 151.
The failures were caused when attempting to restore the tolerance vectors, which
have a value for each species. Since these tolerances are usually the same for
all species, the last value in the array can be used to extend the array to the
required length.
Also add some tests for this feature.
Like IdealGasReactor, this formulation uses the temperature as a state variable
to improve performance for the common use case of reactors containing ideal gas
mixtures.
This formulation of the reactor governing equations, with temperature as a state
variable, works better for ideal gas mixtures. This way, most of the Jacobian
components are derivatives at constant temperature, eliminating the need to
recompute the temperature-dependent part of the rate expressions when computing
these entries.
Expanding the time derivative of the total internal energy only works for ideal
phases, so for the more general case it is necessary to keep the internal energy
as the state variable and use an iterative method for setting the state.
The underlying C++ objects were not being deleted in the destructors for the
Python objects. Moving them to be non-pointer members of the Python wrapper
classes fixes this problem.
By calling a pure Python function each time OneDim::eval is called, we can
catch KeyboardInterrupt exceptions and abort the 1D solver loop, returning
control to Python.
Partially addresses Issue 93.
Added getter for mole fractions and setter for mass fractions. This
requires that the boundary object hold a reference to the thermo object.
Resolves Issue 143.
Setting the scons options 'python_prefix=USER' or 'python3_prefix=USER' will
pass the '--user' flag to setup.py, causing the Python module to be installed to
a platform-specific directory on the user's module path.