Remove the redundant (and questionable) implementation of this from the
PDSS_SSVol class. Also fix some values in PDSS_SSVol that were not updated
except in the constant volume case.
The model implemented does not use the weak acid / "electrolyte species type"
concept, so there is no reason to read data about this from the input file.
No useful capabilities are provided by allowing the solvent species to vary, and
there are many places where the solvent was already implicitly assumed to be the
first species.
Returning the special value ENTROPY298_UNKNOWN is (apparently) the expected
behavior if no actual value was provided, and should not result in an exception.
Also eliminates undefined behavior associated with unchecked cast to
LatticePhase*, since, at least in the Li7Si3_ls.xml example file, the
sub-lattices can be represented as other ThermoPhase types,
e.g. StoichSubstance.
This fixes some platform-specific test failures when compiling in debug mode,
where estimated temperatures during the Newton iterations were too high,
resulting in non-finite reaction rates.
The previous formulation will only consider a rection as electrochemical
if a beta value is supplied for that reaction *and* the reaction is an
'edge_reaction.' This is problematic for two reasons: (1) many/most
charge-transfer reactions of interest occur at two-phase boundaries (see,
for example, Li-ion batteries and PEM fuel cells), not the three-phase-
boundary-like edges (which are most relevant for SOFCs). (2) determining
whether a reaction is electrochemical or not should not rely at all upon
user input - the program itself should check to see whether charge is
transferred between phases, and the appropriate steps should be taken
during rate-of-progress calcuations.
This commit addresses the former issue. Currently, if a charge-transfer
reaction is written as a surface_reaction, the code does not apply the
voltage correction to the forward rate. By default, then, the entire
voltage correction is applied to the reverse reaction, which is the same
as setting beta = 0; not a good 'default' behavior (beta = 0.5 is a more
appropriate default). With this change, surface reactions can now be
supplied with a beta value in cti or xml formats, and will be recognized
as a charge transfer reaction.
Longer term, it would be better to change the constructor routines such
that charge transfer is automatically detected and handled, rather than
relying upon user-specified flags.