Commit graph

216 commits

Author SHA1 Message Date
Harry Moffat
96b01a6c79 Added better error handling for the XML routine.
Added a couple of TODOs
2014-04-19 01:31:21 +00:00
Harry Moffat
6e40841d94 Added missing member functions for partial molar quantities 2014-04-18 23:53:38 +00:00
Ray Speth
b4b97e622a [Thermo] Remove manual memory management from ShomatePoly2 2014-04-14 18:37:36 +00:00
Ray Speth
1df2ed5611 Add a missing #include 2014-04-14 18:37:24 +00:00
Ray Speth
79bbdf3aff [Thermo] Make use of initializers in SpeciesThermoInterpType classes 2014-04-14 18:37:12 +00:00
Ray Speth
c887c1b6fb Remove unnecessary calls to parseCompString 2014-04-08 19:39:06 +00:00
Ray Speth
6449415933 [Thermo] Simplify setState specialization of SingleSpeciesTP
We don't need to override every function that sets the mass/mole fractions, just
the ones that would have actually done something.
2014-04-08 16:26:29 +00:00
Ray Speth
14ea7e64c6 [Thermo] make compositonMap a const argument 2014-04-08 16:26:20 +00:00
Ray Speth
14fe11d661 [Thermo] Miscellaneous cleanup of ThermoFactory 2014-03-28 23:13:11 +00:00
Ray Speth
3530050dc4 [Thermo] Remove redundant overrides of ThermoPhase::eosType() 2014-03-28 23:12:53 +00:00
Ray Speth
2468b47ae7 [Thermo] Remove unimplemented overrides of ThermoPhase methods
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.
2014-03-27 01:29:27 +00:00
Ray Speth
f1066aa072 [Thermo] Remove redundant versions of intEnergy_mole and gibbs_mole 2014-03-27 01:29:13 +00:00
Ray Speth
de8a19ed0f Remove spaces adjacent to '::' in member function definitions 2014-03-24 04:03:30 +00:00
Ray Speth
95eb7ab3ba Remove newline after '::' in member function definitions
This inconsistency makes it hard to directly search the code for a specific
member function definition.
2014-03-24 04:03:09 +00:00
Victor Brunini
a641992960 Add validate() functions to CachedValue.
To both check and update the cached state values. Reduces
a lot of code duplication in the use of CachedValues.

I'd like to make state1, state2, and stateNum private so
that they can only be accessed with one of the validate functions,
and also add some asserts to the validate functions that do not
use all of the state variables to ensure that the unused ones are
set to their default values to prevent the case where the wrong
validate() function is called and incorrectly determines that the
cached state is valid.

First pass at making the state variables private caused a test failure
for test_problems/statmech. The m_spthermo->update() call in
IdealGasPhase::_updateThermo() throws an exception for this test right
now that gets caught in equilibrate(). When using validate() the cached
state variable is updated before the m_spthermo->update() call and subsequently
it thinks that the thermo does not need to be updated, whereas when
cached.state1 is being set after the m_spthermo->update() call it does not get
set. The current blessed output for that test is just the text of the exception
that gets caught, so I suspect the test may not work as is.
2014-03-19 00:14:18 +00:00
Victor Brunini
935a20fc87 Some HMWSoln optimizations.
Mostly replacing some repeated divisions with 1
division and then multiplication by the inverse.
Saved ~10% on test problem of interest.
2014-03-18 23:29:09 +00:00
Victor Brunini
4c4836fd18 HMWSoln caching fixes.
Forgot to update the cached state number in a few places in
my last commit.

Also uncovered a potential bug with m_A_Debye. m_A_Debye is only
set by A_Debye_TP() but is used by s_updatePitzer_lnMolalityActCoeff()
which could end up using an un-updated value for m_A_Debye through the
call chain:

setState_TP() -> calcDensity() -> getPartialMolarVolumes() ->
  s_update_lnMolalityActCoeff() -> s_updatePitzer_lnMolalityActCoeff()

I changed both s_updatePitzer_lnMolalityActCoeff() and s_NBS_CLM_lnMolalityActCoeff()
to call A_Debye_TP() rather than using m_A_Debye directly to ensure that they
are always using an up to date value.
2014-03-18 21:05:10 +00:00
Victor Brunini
a704df09d8 Convert recent changes to new caching method. 2014-03-18 18:52:29 +00:00
Ray Speth
7556b828f9 Introduce a more general method of caching results
The ValueCache class is intended to standardize the method for implementing
value caching in Cantera, and to reduce the need to introduce additional member
variables to store cached variables and the thermodynamic state at which the
cached values were computed.

The initial usage is to replace the use of the m_tlast variable in IdealGasPhase
as an example.
2014-03-18 00:48:38 +00:00
Victor Brunini
2b92ad5684 WIP on additional caching.
I'll convert this over to the new caching framework once
Ray adds it.
2014-03-17 16:03:22 +00:00
Harry Moffat
39651964a7 Added back Statmech and PecosTransport.
Rarefied gas dynamics is an import application area for Sandia, and
    it represents a potentially important development direction for Cantera.
    These classes provide inroads into that area.
2014-03-15 02:57:00 +00:00
Victor Brunini
b0ecf96cb6 Trying out a cleaner way knowing when expensive state functions need to be recomputed. 2014-03-13 23:50:31 +00:00
Ray Speth
89eab1bb48 [Thermo] Remove redundant implementations of logStandardConc
For the cases where logStandardConc just calls standardConcentration,
rely on the default implementation in class ThermoPhase.
2014-03-13 21:35:49 +00:00
Ray Speth
2fb9ff630d Remove abandoned StatMech and PecosTransport classes 2014-03-13 21:35:11 +00:00
Victor Brunini
48ec4dc65c HMWSoln::s_update_lnMolalityActCoeff() performance improvement.
Only do the expensive update if state has changed.
2014-03-13 18:35:00 +00:00
Victor Brunini
e62ce054ce Style changes to be consistent with the rest of Cantera.
Thanks for the code review.
2014-03-13 16:49:10 +00:00
Ray Speth
4458933420 Fix alignment of ThermoPhase::report output on Windows
Windows uses 3 digits in the exponent, for which there wasn't enough
space being allocated in the columns for the specific properties.
2014-03-13 02:19:19 +00:00
Victor Brunini
584abf0d10 Performance improvements for HMWSoln and MaskellSolidSolnPhase.
HMWSoln: avoid recomputing lambdas if ionic strength hasn't changed.

MaskellSolidSolnPhase: Avoid recomputing activity coefficients if
r and T haven't changed.
2014-03-12 20:37:04 +00:00
Ray Speth
6a51eb88dc [Thermo] Move modifyOneHf298SS and m_tlast to ThermoPhase
This eliminates many duplicate implementations of this function and
declarations of this variable.
2014-03-08 21:46:58 +00:00
Victor Brunini
ee94266939 MaskellSolidSolnPhase: throw in unimplemented functions. 2014-03-07 17:21:14 +00:00
Victor Brunini
1565bad198 MaskellSolidPhaseSoln thermo updates.
Fix sign error in chemical potentials and update
activity coefficients accordingly.

Correct implementation of getActivityConcentrations()

Additional unit tests.
2014-03-07 17:14:13 +00:00
Victor Brunini
0981391ac4 Implement and test MaskellSolidSolnPhase::getActivityCoefficients(). 2014-03-07 00:53:33 +00:00
Victor Brunini
7abb459bbe Implement MaskellSolidSolnPhase::standardConcentrations() and getActivityConcentrations() 2014-03-06 22:30:19 +00:00
Victor Brunini
5898bf025f Implement MaskellSolidSolnPhase::getPartialMolarVolumes()
User VPStandardStateVP as base class and just return
the standard state molar volumes.
2014-03-06 20:23:23 +00:00
Harry Moffat
7078ac4d18 Added constructor info to prevent segfaults
However, need to flesh the whole class out to be useful in Electrode objects.
2014-03-06 17:03:23 +00:00
Victor Brunini
d983660c77 Fix ThermoPhase::getElementPotentials and setElementPotentials
Broken in r2719.
2014-03-06 00:40:50 +00:00
Victor Brunini
32ce311bed Fix Issue 209.
installShomateThermoFromXML now checks that
7 coefficients are supplied in the floatArray and
throws if that is not the case.

Also update MaskeLLSolidSolnPhase_Test xml files
to correctly contain 7 coefficients to not trigger
the newly added throw.
2014-03-06 00:08:58 +00:00
Ray Speth
c7ba8bfb84 Remove abandoned autotools build system 2014-03-04 17:38:53 +00:00
Victor Brunini
93fcf181b1 Initial pass at implementing Maskell solid solution ThermoPhase.
Based on Maskell, Shaw, and Tye, Electrochimica Acta 28(2) 225-230 1983.
Includes unit tests checking calculation of the chemical potential values
and parsing of the mixing enthalpy parameter from an XML file.
2014-02-28 00:38:09 +00:00
Ray Speth
dba9ddd858 Fix miscellaneous integer sign/size warnings 2014-02-21 19:08:47 +00:00
Ray Speth
6f8da1a27e Fix 'unused variable' warnings 2014-02-21 19:08:33 +00:00
Ray Speth
2ead29097c [Thermo] Make signatures of overridden Hf298 functions consistent 2014-02-21 19:08:19 +00:00
Victor Brunini
92a3d13752 Prevent hidden overloaded virtual function compiler warning. 2014-02-12 21:30:09 +00:00
Ray Speth
fb2f52b2ec General cleanup of class ThermoPhase 2014-02-06 22:59:07 +00:00
Ray Speth
14b1bf093b Remove option to disable 'h298modify_capability' at compile-time 2014-02-06 22:58:56 +00:00
Victor Brunini
171681bf13 Cache result of expensive function call in HMWSoln for reuse.
Went from 440s runtime down to 65s for test case of interest.
2014-02-03 19:48:02 +00:00
Ray Speth
d516d46f33 Remove unnecessary use of static_cast<int> 2014-01-31 23:15:09 +00:00
Ray Speth
aae8982924 Clean up end-of-file whitespace 2014-01-30 00:47:24 +00:00
Ray Speth
f45e627745 Fix compiler warnings about implicit double -> int conversions 2014-01-21 17:21:37 +00:00
Victor Brunini
8c4312f31e Fix potential segmentation fault and invalid read. 2014-01-14 16:51:20 +00:00