These properties are actually infinite in the two-phase region, but attempting
to compute them by finite difference would incorrectly give a finite result, so
they need to be treated as a special case.
Calculating specific heat capacities (cp or cv) for states near the saturation
curve would give incorrect results if the finite difference method used points
within the saturation region. To avoid this, we now check the points used for
computing the properties and use values outside the saturation region to compute
the derivatives.
Fixes#273
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
Anything that raises a CanteraError in C++ will now raise CanteraError in
Python, instead of the more generic RuntimeError.
This change increases the required Cython version to 0.23 or newer.
This function was actually being directed into 'thermoget' and calling the
'newFromXML' method (on a non-existent XML tree) instead of calling the 'del'
method.
This makes it possible for GasTransport objects to work reasonably well with
ThermoPhase objects that have had species added to them. The main changes
required are to make the initialization functions idempotent.
For falloff / chemically activated reactions (with "(+M)" appearing in the
reaction equation), check that the alternate rate expression has been
provided. Previously, this would only generate an inscrutable error when
importing the XML file.
If Cantera is being installed to /usr/local, then on Debian-based distros, we
want the Python module to end up in /usr/local/lib/pythonX.Y/dist-packages,
which is actually the default behavior. However, /usr/local/... is *not* the
default installation prefix for Python modules on some other distros (On Fedora,
at least, it's /usr/) so using the default needs to be conditioned on the actual
distro.
This helps with debugging cases where the solver fails, especially, if the
failures are not convergence-related and cannot be resolved by successive
attempts at solving the problem.