Commit graph

1613 commits

Author SHA1 Message Date
Ray Speth
0220e11ef9 Allow conversion from long int to double in AnyValue.asMap 2019-06-25 22:30:59 -04:00
Ray Speth
de80f06887 [Input] Parse YAML entries for elementary reactions 2019-06-25 22:30:59 -04:00
Ray Speth
224c46ebbb Add functions for converting units from AnyValue instances 2019-06-25 22:30:59 -04:00
Ray Speth
65121becac Add special handling of activation energies to class Units 2019-06-25 22:30:59 -04:00
Ray Speth
da097631e3 UnitSystem class supports default source units for conversions 2019-06-25 22:30:59 -04:00
Ray Speth
c9b7de3b70 Add support for metric prefixes to class Units 2019-06-25 22:30:59 -04:00
Ray Speth
b8cb2c30f8 Add 'Units' class for doing conversions with dimensionality checks
Introduces a new, more natural notation for writing unit strings,
for use in YAML input files. Unlike 'toSI', conversions are checked for
dimensional consistency.
2019-06-25 22:30:59 -04:00
Ray Speth
ea88d4f9fb Add "get" functions to AnyMap
Simplify the common use case of checking for a key and using a default
value when it is missing.
2019-06-25 22:30:59 -04:00
Ray Speth
530adbb931 Add automatic conversions to vector<AnyValue> 2019-06-25 22:30:59 -04:00
Ray Speth
e5bd0b136f Allow AnyValue to convert implicitly from long int to double 2019-06-25 22:30:59 -04:00
Ray Speth
00f6b88fa4 [Input] Implement construction of AnyMap from YAML string/file 2019-06-25 22:30:59 -04:00
Ray Speth
e85e0e2108 Fix constness of some AnyMap functions 2019-06-25 22:30:59 -04:00
Ray Speth
ed24198e63 Add option to compile yaml-cpp or use system library 2019-06-25 22:30:59 -04:00
Thanasis Mattas
6a42e5942e rearranging methods to aid src reading 2019-06-08 17:25:55 -04:00
Thanasis Mattas
ea3bb0af90 Some documentation corrections at xml.h 2019-06-08 17:25:55 -04:00
Ingmar Schoegl
5d62f3bacc added factories for FlowDevice and Wall objects 2019-05-28 19:21:28 -04:00
Ingmar Schoegl
f078f53f39 Enable additional states / equations in onedim 2019-04-17 00:06:26 -04:00
Nick
848a3bf0e3 Add InterfaceKinetics.advance_coverages integrator options to the cython interface, and test 2019-04-10 22:14:27 -04:00
Nick
d2cb02f254 add integrator parameters to the InterfaceKinetics::advanceCoverages & ImplicitSurfChem constructor to allow users to modfiy 2019-04-10 22:14:27 -04:00
g3bk47
471041a27a Additional check for Troe coefficients being zero
This will prevent floating point exceptions (sometimes enabled by third-party
codes) in case c[1] or c[2] are zero but will not change the current behaviour
if c[1] and c[2] are not zero.
2019-03-18 14:39:50 -04:00
Ray Speth
5e226535de Fix regression in compatibility with Sundials 2.4.0
Regression was introduced in 9c50f752 when adding compatibility with
Sundials 3.x.

Fixes #613
2019-03-14 14:03:51 -04:00
Ray Speth
d6d91f4d98 [Thermo] Fix updating state of PDSS_IonsFromNeutral objects
Setting T and P now updates the state of the underlying "neutral
molecule phase".

Also removed the unimplemented setState_TR method.
2019-03-06 19:50:16 -05:00
Ray Speth
bdc81684b1 [Thermo] Fix BinarySolutionTabulatedThermo initial mole fraction thermo
The value of m_xlast should only be set to a valid value by _updateThermo,
after it has calculated values for the tabulated enthalpy and entropy.
2019-03-06 19:48:45 -05:00
Ray Speth
aceb896f62 [Thermo] Fix BinarySolutionTabulatedThermo updates when only T changes
In the case where temperature changes but the mole fractions are the same, we
still need to apply the enthalpy and entropy offsets to the tabulated species.
2019-03-06 19:48:45 -05:00
Ray Speth
47005a5008 [Thermo] Fix overriding of IdealSolidSolnPhase::_updateThermo
Since IdealSolidSolnPhase::_updateThermo wasn't a virtual method, and
the signatures didn't match (const vs non-const), calls to this method
from IdealSolidSolnPhase weren't being overridden by
BinarySolutionTabulatedThermo::_updateThermo as expected.
2019-03-06 19:48:45 -05:00
Ray Speth
6c82b61c3d [Kinetics] Always use temperature of "reacting" phase
This is always the lowest-dimensional phase, e.g. surface or edge for
heterogeneous systems.
2019-03-05 15:03:48 -05:00
Ray Speth
0fdbe24aaf Provide error message after failure to create large Sundials matrix
If Sundials tries to create an excessively large matrix, it returns a null
pointer. To avoid a subsequent segfault, throw an exception which makes the
cause of the error clear.

WIP: Better error message for too-large Sundials matrix

TEMP: fixup for cvodes error messages
2019-02-25 11:06:12 -05:00
Ray Speth
77b467929c [Thermo] Fix calculation of initial density of IdealSolidSolnPhase
The density of IdealSolidSolnPhase and BinarySolutionTabulatedThermo objects was
not being computed as part of construction, causing code that interacted with
them using setState/restoreState, such as the 'Solution' constructors in Matlab
and Python, to fail.
2019-02-20 21:39:22 -05:00
Ray Speth
7cf58af69e [Thermo] Always initialize BinarySolutionTabulatedThermo member variables 2019-02-20 21:39:22 -05:00
Steven DeCaluwe
e4789d7102 Fixing BinarySolutionTabulatedThermo::_updateThermo
Previously, BinarySolutionTabulatedThermo::_updateThermo created a new
`speciesThermoInterpType` intance every time the thermo was updated,
storing the tabulated thermo lookups as the reference state thermo.

This has now been changed such that the reference state is used only
to represent the temperature effects on the thermo, with the tabulated
terms added to this reference state.  This should be a more efficient
implementation.
2019-02-20 21:39:22 -05:00
Steven DeCaluwe
84b4147a99 Fixing return type of BinarySolutionTabulatedThermo::interp
The function `BinarySolutionTabulatedThermo::interp` now returns type
`std::pair<double, double>`, rather than `static double`
2019-02-20 21:39:22 -05:00
Steven DeCaluwe
11271d90b2 Fixing unit conversion of tabulated data in BinarySolutionTabulatedThermo
Previously the model imported the tabulated data assuming it was given
in J, mol, K units, and ignoring any user input in the cti file, w/r/t
units.  This fixes that, by amending the `getFloatArray` calls in
thermo/BinarySolutionTabulatedThermo.cpp
2019-02-20 21:39:22 -05:00
Steven DeCaluwe
05fdd356f2 Updates to BinarySolutionTabulatedThermo and test file.
-Fixes small typo id incclude/cantera/base/utilities.h docstring
-Removes `m_formGC` from BinarySolutionTabulatedThermo class, and
instead utilizes version and functionality inherited from parent
class `IdealSolidSolnPhase`.
-Moves samples/matlab/lithium_ion_battery/lithium_ion_battery.cti
to data/inputs/lithium_ion_battery.cti
-Fixes typo in test/data/BinarySolutionTabulatedThermo.cti
-Updates expected_result values in several test cases in
test/thermo/BinarySolutionTabulatedThermo_Test.cpp
2019-02-20 21:39:22 -05:00
Steven DeCaluwe
ae555fb063 Add description for BinarySolidSolutionTabulatedThermo class 2019-02-20 21:39:22 -05:00
Steven DeCaluwe
3c9bbc4ec9 Fix IdealMolalSolution::standardConcentration
Standard concentrations in the IdealMolalSolution phase depend on
a user-specified m_formGC parameter, where m_formGC=0 results in a
standard concentration of 1.0, m_formGC = 1 is supposed to result in
a standard concentration for species k  equal to 1 divided by the
molar volume of species k, and m_formGC = 2 is supposed to result in
a standard concentration equal to 1 divided by the molar volume of the
solvent species (which is species 0).

Current behavior is that m_formGC = 1 and m_formGC = 2 *both* result
in a standard concentration of 1 divided by molar vlume of the solvent.

This commit fixes how this is handled, cleans up the switch statement
(the three cases were written somewhat inconsistently), and throws
an error if m_formGC is set < 0 or > 2.
2019-02-20 21:39:22 -05:00
Manik Mayur
224ef720e6 Add BinarySolutionTabulatedThermo class 2019-02-20 21:39:22 -05:00
Ray Speth
33e198f7e5 [Thermo] Generalize check for missing Redlich-Kwong coefficients
A check in the "updateAB" function will be executed regardless of how the phase
is instantiated.
2019-02-04 18:49:45 -05:00
Ray Speth
ebb93cb5a2 [Thermo] Fix setting of temperature-dependent Redlich-Kwong parameters
Using negative values to indicate unspecified parameters doesn't work, since
either constant in "a = a0 + a1*T" can be negative and still produce a positive
value for "a". Instead, NaN can be used for this purpose.
2019-02-04 18:49:34 -05:00
Ray Speth
27c64b76f8 [Thermo] VPStandardStateTP does not use reference thermo objects
Since VPStandardStateTP and derived classes do not use the reference state
thermodynamic properties in the m_spthermo object, we can just install
placeholder objects there, and eliminate the wrapper clas STITbyPDSS.
2019-01-23 16:43:44 -05:00
Ray Speth
311ae76510 [Thermo] Allow species without thermo data
In some models, SpeciesThermoInterpType objects on individual species are not
used. Instead of requiring the specification of placeholder thermo data, this
allows the base SpeciesThermoInterpType class to be used, which will throw an
exception if it is inadvertently used.
2019-01-23 16:43:44 -05:00
Ray Speth
af56138e14 [Thermo] Clean up implementation of MaskellSolidSolnPhase
Eliminate several member variables which shadow variables of the
VPStandardState class, and actually contained the same information
calculated a different way.
2019-01-23 16:43:44 -05:00
arghdos
e3230801c9 Expose getting/setting of max-steps to python interface & test 2019-01-07 22:33:03 -05:00
Ray Speth
19577abfbe Deprecate rarely-used vector functions 2018-12-14 11:27:24 -05:00
Ray Speth
6a859215f8 Replace timesConstant with C++11 lambda 2018-12-14 11:27:24 -05:00
Ray Speth
6f45b241b5 Remove code deprecated in Cantera 2.4 2018-12-14 11:27:24 -05:00
Steven DeCaluwe
68a89d0322 Adding critProperties database for RedlichKwongMFTP
Adds capability for RedlichKwongMFTP to read a database of critical properties
for Tc and Pc of common species, so that users do not need to input pureFluidParameters
for every single species, thereby reducing burden during creation of new cti files.

For any species where pureFluidParameters are not provided by the user, function
getCoeffs scans the database looking for matches.  Any unmatched species will throw
an error.  Currently only scans by species name string, and is only intended for
common species with well-known critical properties.

Current operation is quite slow if the table is consulted for a large number of
species.  In the future, should also implement the capability to write the updated
pureFluidParameters back into the xml file, so the user only has to perform the lookup
once.
2018-12-11 11:08:47 -05:00
Ray Speth
9aa507a098 [Kinetics] Make some member functions const 2018-12-02 23:54:04 -05:00
Ray Speth
84535483f9 Check for additional invalid string-to-double conversions 2018-12-02 23:54:04 -05:00
Ray Speth
22efbe25dc [1D] rdt is automatically set appropriately during Jacobian evaluation 2018-11-11 22:17:20 -05:00
Ray Speth
8c213da932 [1D] Fix grid refinement for classes not derived from StFlow
This includes user-developed flow classes, as well as the BoundaryValueProblem
class used in the 'blasius' example.
2018-11-11 22:17:20 -05:00