These changes make it unnecessary to copy header files around during
the build process, which tends to confuse IDEs and debuggers. The
headers which comprise Cantera's external C++ interface are now in
the 'include' directory.
All of the samples and demos are now in the 'samples' subdirectory.
The function getActivityConcentration in the HMWSoln object had
a bug in it that caused it to be incompatible with standardConcentration
and getActivities(). This meant that the ROP in kinetics managers
for this object was being calculated incorrectly.
This mainly involved fixing the copy and assignment operators
for the IonsFromNeutralVPSSTP operator.
Added docs for PDSS_SSVol
Turned on keyword substitution
IonsFromNeutralVPSSTP : This is initially used for molten salts.
Molten salt thermo is treated via the neutral molecule
molten salt expressions. However, ions migrate by themselves.
therefore, you must treat ions within the transport equations.
This thermophase object treats the ions as species, and is
made to be consistent with the neutral molecules thermophase
object that is used to express the non-ideal thermodynamics
of the molten salt solution. Currently, MargulesVPSSTP
is used for this as the LiKCl system is parameterized using
this excess Gibbs free energy formulation.
MargulesVPSSTP
Various upgrades and fillers. It now reads and is initiated
from the input file.
setState_TP(), setTemperature(), and setPressure() within
VPStandardStateTP() formulations
There was some circular logic, previously. Now setTemperature() and setPressure()
are subserviant to setState_TP(). Basically, it doesn't make
sense to calculate the standard state without first getting
both the temperature and pressure (not just one and then the other)
before you calculate the standard state for VPStandardStateTP derivatives.
Think about the water EOS, which is a real fluid. You don't want
to be trying to calculate the standard state within the enveloppe where
neither gas nor liquid is stable.
PseudoBinaryVPSSTP
Deprecated.
of standard states and the specification of activities independent of
each other.
PDSS Behavior
-------------------------
PDSS is an object that carries out and reports on the evaluation
of the pressure dependent standard state of a single species in a mixture.
VPSSMgr Point of View
--------------------------------------
This is the calculator for the standard states.
From The Point of View of the ThermoPhase Function
---------------------------------------------------------
At the VPStandardStateTP object, the ThermoPhase object is enriched to
include a new object called VPSSMgr. VPSSMgr is
a base class that is responsible for calculating the standard states
of all of the species in the mixture. It is analogous to the
SpeciesThermo virtual base class, which handles all of the reference
state calculations for a class. The VPSSMgr class
usurps all calculations.
There are PDSS objects for each species.
VPStandardStateTP contains a vector of pointers to PDSS, of length
nSpecies in the phase. It owns the list.
VPSSMgr also contains the same vector of pointers to PDSS, of length
nSpecies in the phase. VPSSMgr is a methods class. It
organizes how to calculate the SS values efficiently. It may also have
specific rules for how to handle the pressure dependence (i.e., there
will be a specific class for ideal gases).
The VPSSMgr organizes when to update the internal states of
the PDSS objects.
The determination of which VPSSMgr virtual class to use with
which phase is determined by the phase itself. It know which method to
use.
setState Treatment with Temperature and Pressure
------------------------------------------------------
The VPStandardStateTP object always has the current value of T and P
held within it. It determines when T and P have changed. If it determines
that T or P has changed, it calls VPSSMgr so that VPSSMgr
may update its internal states.
VPSSMgr contains the current T and P, also, separately.
If it determines that T or P has changed, it recalculates its own internal state.
PDSS Object point of View
-----------------------------------------
During the evaluation of the phase thermodynamics, the PDSS object
may be called to evaluate the (T,P) Standard State and RefState information.
The PDSS object may or may not own the reference state calculation. If
it doesn't own the calculation, the ThermoPhase object owns the
calculation through its m_spthermo object. Then the PDSS objects
uses pointers into the m_spthermo object to satisfy its requirement
to supply (T,P) ss information. It may own or surplant the reference
state calculation. For example, for waterPDSS, there is no specific reference
state calculation, since the regular temperature polynomial process
is ignored (except to set the basis state). The reference state functions
are evaluated the same as other standard state functions.
If PDSS owns the calculation of the reference state thermo, then the
m_spthermo pointer within the PDSS object is zero. It does it's own
reference state calculation.
If PDSS uses the SpeciesThermo object to calculate the reference
state, it needs to know whether the SpeciesThermo object calculations
are current. It checks this. If it is, then it retrieves the result from
storage in VPSSMgr object. If it isn't, then it recalculates the results.
PDSS has its own storage for the current state of T and P.
for beta1 and 5 coefficients for beta2. They are now the same as
beta0 and Cphi.
All xml blocks using this parameterization must be modified accordingly.
-Did a better job at coming up with cropping strategy for molalalities
which are used for the calculation of the activity coefficents.
Without such a strategy, act coeffs may become unbounded and
cause the equilibrium solver to fail.