Testing the value of self.parent in _SolutionBase.__dealloc__ was ineffective
because this attribute can already be cleared when __dealloc__ is called,
causing the borrowed C++ objects to be deleted prematurely. A C data member
needs to be used to determine whether this object is responsible for deleting
the underlying C++ objects.
The conversion of sticking coefficients to Arrhenius expressions includes the
site density on the surface phase, which may not be set when the reaction is
being added to the Kinetics object. We now defer the calculation of this
dependency until the rate coefficient is being evaluated so that the current
value for the site density can be used.
A site density of zero causes divide-by-zero errors in SurfPhase and
EdgePhase. This change makes it possible to initialize SurfPhase and
EdgePhase objects without XML phase descriptions.
The reactions in these files can be referenced by other CTI/XML files, or used
directly to create Reaction objects. The absence of a phase definition requires
that either (a) all reactions are in bulk phases, or (b) the rate constants are
given in kmol, meter, second units since it is impossible to determine the
dimensionality of the concentration for each species.
Out-of-bounds memory was being accessed in cases where the system had fewer
state variables than the specified maximum number of error estimates to display.
The coverage dependent rate calculation is passed the array of coverages,
which include only the interface species, so the species index in the
interface phase is what is needed here.
This makes it possible to create a phase without ever generating a CTI
or XML description. Does not yet work with phase types that require
additional parameters.
XML_Node::build will make that node the root node (i.e. the 'ctml' node)
of the tree, instead of giving that node a child node containing the actual
root node.
VPStandardStateTP phases now use the same pathway for adding species as
other phase in importPhase. Deprecate the now-unused 'installSpecies'
function.
No data from the outer 'species' node is needed to instantiate the
SpeciesThermoInterpType object, so this function can just take the 'thermo' node
directly.