Use "if (DEBUG_MODE_ENABLED)" instead of "#ifdef DEBUG_MODE". This makes
it easier to see the flow control logic, and the compiler will optimize
out the always-false conditionals when DEBUG_MODE_ENABLED is 0, so there
isn't any speed penalty.
Now the complete XML file is storred within the ThermPhase object starting with the root node.
This is needed for later processing of kinetics and transport mechanisms when the ThermoPhase
file is duplicated and the original file is deleted.
xml() is now a const function, and still returns the same pointer.
setXMLdata() is a new function will stores the xml data.
The descendants either calculate molar properties from nondimensonal properties
or vice versa. Add two derived classes to PDSS to implement these behaviors, and
have the leaf classes derive from whichever one of these makes sense.
Formerly getExchangeCurrentQuantities() is now
updateExchangeCurrentQuantities(). This method updates things like
m_StandardConc for computing reaction rates.
Formerly applyExchangeCurrentDensityFormulation() is now
convertExchangeCurrentDensityFormulation(). This method converts
rate expressions from A/m2 to kmol/m2/s.
Eliminates the need for redundant implementations in all the derived
classes. Also, make the return value a "const char*" to eliminate the dangerous
cast.
ThermoPhase already provides an implementation of these methods that raises
an exception to indicate that the method is unimplemented. Therefore,
derived classes which do not implement a method do not need to do this.
Calling solve() again after a successful solution no longer automatically
triggers a Jacobian update. This enables relatively efficient sensitivity
analysis by sequentially perturbing the reaction multipliers and re-solving
the system. Since the perturbed system is close to the orignal, the solution
can be found after only a few steps, even when using the original Jacobian.
Change GeneralMatrix to allow derived classes to not implement QR
factorization. BandMatrix does not implement QR because this LAPACK
does not contain a QR algorithm for this matrix type.