Commit graph

7217 commits

Author SHA1 Message Date
Ingmar Schoegl
dbac2fc79c [Base] replace Solution property ID by phase in Python
* Clarifies the meaning of ID
* Creates a PEP8 compliant attribute that does not conflict with
a built-in function name that is also consistent with the YAML entry.
* Change associated member function names in C++ SolutionBase
* Deprecate `ID` in Python (to be removed after Cantera 2.5)
2019-10-23 13:45:29 -04:00
Ingmar Schoegl
b926a31faf [Base] break out thermo/kinetics manager types to Python 2019-10-23 13:45:29 -04:00
Ingmar Schoegl
f71954ac96 [Base] associate phase ID with SolutionBase object 2019-10-23 13:45:29 -04:00
Ingmar Schoegl
b5137d40a3 [Base] remove redundant unique_name attribute
* Resolve conflation of gas.ID and gas.name in unit tests
* Also fixes #691
2019-10-23 13:45:29 -04:00
Ingmar Schoegl
799ef81518 [Base] link managers back to SolutionBase 2019-10-23 13:45:29 -04:00
Ingmar Schoegl
486e2ba9b8 [Base] add unit test probing methods of C++ SolutionBase 2019-10-23 13:45:29 -04:00
Ingmar Schoegl
afd36b1c1e [Base] create SolutionBase object in C++
* Add Base.h/Base.cpp with definition of SolutionBase
* Link C++ object into Cython interface
* Add unique_name and type attributes to Cython _SolutionBase
2019-10-23 13:45:29 -04:00
Ray Speth
c149c4ed73 [CI] Copy doc archive to cantera.org
In order to generate links to pages in the development docs, the
cantera-website build process needs a local copy of the current dev docs,
which this provides in a format which can be easily downloaded.
2019-10-14 10:22:37 -04:00
Bryan W. Weber
55fe2233b1 [Thermo/YAML] Rename water-IAPWS95 to liquid-water-IAPWS95
The water-IAPWS95 instantiates either WaterSSTP or PDSS_water objects,
both of which are intended for liquid phases only. Clarify the phase
name to liquid-water-IAPWS95 to allow a future phase that could
represent the full liquid<->vapor phase space.
2019-10-06 16:45:21 -04:00
Ingmar Schoegl
fe7be79552 [Thermo] improve error messages
Incorporate reviewer suggestions for error messages (user feedback) in
PureFluid.TPX setter and SolutionArray.restore_data
2019-10-02 22:16:55 -04:00
Ingmar Schoegl
074fd2cd74 [Thermo] adopt review comments for SolutionBase.restore_data 2019-10-02 22:16:55 -04:00
Ingmar Schoegl
2b61d3ad4a [Thermo] add read_hdf and update docstrings 2019-10-02 22:16:55 -04:00
Ingmar Schoegl
213612bd33 [Thermo] recreation of SolutionArray objects from stored data
This commit implements new methods for SolutionArray:
* `restore_data` can restore data previously exported by `collect_data`
* `read_csv` restores data previously saved by `write_csv`
* unit tests are added for SolutionArray's based on ThermoPhase and PureFluid
2019-10-02 22:16:55 -04:00
Ingmar Schoegl
378c6da18b [Thermo] add setter TPX to PureFluid
* setter for `PureFluid.TPX` property is added to allow for automatic
restoration of consistent thermodynamic data
* alternative to 'TP', 'TX' or 'PX' which may not uniquely describe
a valid thermodynamic state
* add unit test
2019-10-02 22:16:55 -04:00
Ray Speth
69f33a8631 [Input] Check that Chebyshev coefficient matrix is rectangular 2019-09-27 17:11:18 -04:00
Ray Speth
ecce98c1dc [Kinetics] Fix Chebyshev rate evaluation with only 1 point in T or P 2019-09-27 17:11:18 -04:00
Ray Speth
b44f189569 [Thermo] Avoid NaN in entropy with small negative mass fractions
Avoid NaN results in entropy_mole calculations when there are small negative
mass fractions. Consistent with the approach used elsewhere,
e.g. IdealGasPhase::getPartialMolarEntropies.
2019-09-24 17:38:15 -04:00
Paul
c4aff04418 Updated URL in references to Cantera's license. 2019-09-23 22:02:33 -04:00
Ingmar Schoegl
9ce255302e Implement faster fallback for non-canonical/lowercase name lookup 2019-09-23 21:53:06 -04:00
Ingmar Schoegl
5e692e893a Isolate lowercase fallback in speciesIndex 2019-09-23 21:53:06 -04:00
Ingmar Schoegl
717635d3e6 Add case-sensitive/lowercase logic to Phase::species
Further:
* revert unit tests to previous species definitions (some case mis-matches)
* remove non-essential comments
* opt to maintain case-sensitive species maps with lowercase as fallback
2019-09-23 21:53:06 -04:00
Ingmar Schoegl
76dd997692 [Thermo] update unit tests to handle case sensitive species names 2019-09-23 21:53:06 -04:00
Ingmar Schoegl
2231141e32 [Thermo] add flag that makes species names case sensitive
* store species information with case sensitive names
* retain lookup for non-case sensitive species names, e.g. Phase::speciesIndex
* implement flag that enforces case sensitive species names as a member
variable of Phase
* add exception handling for species that are not uniquely defined unless case
sensitive (e.g. Cs and CS in nasa.cti if cs is specified and case sensitivity
is not enforced)
* deprecate Phase::species(std::string&)
2019-09-23 21:53:06 -04:00
Ingmar Schoegl
e0fe5eed59 [Thermo] fix compiler warning for RedlichKwongMFTP 2019-09-23 21:53:06 -04:00
Ray Speth
265a1860cc [1D] Disable free flame domain width check when auto=False
Solving with auto=True and then solving with auto=False would leave the domain
width check in place, but without the logic for automatically increasing the
domain width, resulting in unexpected solver failures.
2019-08-13 12:48:45 -04:00
Ingmar Schoegl
7ac09108c9 Update .gitignore 2019-08-13 11:33:40 -04:00
Ingmar Schoegl
eff23b6f82 Update ic_engine example using new cantera capabilities 2019-08-13 11:33:40 -04:00
Ingmar Schoegl
eea04255fd [Thermo] add write_hdf to SolutionArray objects
* The commit implements saving of data extracted from SolutionArrays
 to HDF containers using pandas infrastructure.
 * Two methods are introduced: `write_hdf` and `to_pandas`.
 * Both methods only work if the pandas module can be imported; an
 exception is raised only if the method is called without a working
 pandas installation.
2019-08-13 11:32:51 -04:00
band-a-prend
5184ebccba Fix "catching polymorphic type" GCC 8 warnings
The "catching polymorphic type" warnings appear during compilation with GCC 8:

src/base/global.cpp: In function ‘void Cantera::setLogger(Cantera::Logger*)’:
src/base/global.cpp:28:19: warning: catching polymorphic type ‘class std::bad_alloc’ by value [-Wcatch-value=]
     } catch (std::bad_alloc) {
                   ^~~~~~~~~

src/equil/vcs_MultiPhaseEquil.cpp: In member function ‘int Cantera::vcs_MultiPhaseEquil::equilibrate_HP(doublereal, int, double, double, int, int, doublereal, int, int)’:
src/equil/vcs_MultiPhaseEquil.cpp:228:31: warning: catching polymorphic type ‘class Cantera::CanteraError’ by value [-Wcatch-value=]
         } catch (CanteraError err) {
                               ^~~

src/equil/vcs_MultiPhaseEquil.cpp: In member function ‘int Cantera::vcs_MultiPhaseEquil::equilibrate_SP(doublereal, double, double, int, int, doublereal, int, int)’:
src/equil/vcs_MultiPhaseEquil.cpp:354:31: warning: catching polymorphic type ‘class Cantera::CanteraError’ by value [-Wcatch-value=]
         } catch (CanteraError err) {
                               ^~~

This commit fix this warnings via caught by reference.
2019-08-10 15:07:44 -04:00
band-a-prend
1606ce1565 Remove m_iter variable and deprecate setIterator function
Remove m_iter variable and deprecate setIterator function
because only Newton (CV_NEWTON) iteration method is used.
2019-08-09 18:08:47 -04:00
band-a-prend
6a8d7f7de3 Fix building Cantera against Sundials 4.x library
The changelog of Sundials 4.0.0 states:

"With the introduction of SUNNonlinSol modules, the input parameter iter
to CVodeCreate has been removed along with the function CVodeSetIterType
and the constants CV_NEWTON and CV_FUNCTIONAL.
Similarly, the ITMETH parameter has been removed from the Fortran interface
function FCVMALLOC. Instead of specifying the nonlinear iteration type
when creating the CVODE(S) memory structure, CVODE(S) uses
the SUNNONLINSOL_NEWTON module implementation of a Newton iteration by default."

so the appropreate conditional changes are added to control
the code execution via CT_SUNDIALS_VERSION preprocessor variable
to omit the parameters of Sundials solver that are no longer required.
2019-08-09 18:08:47 -04:00
band-a-prend
3b948e17d4 Simple fix for Sundials 3.2 compatibility
The Sundials 3.1 and 3.2 are compatible with each other
so this patch just allows to pass check for the installed Sundials 3.2
2019-08-09 18:08:47 -04:00
Ingmar Schoegl
97356a48df Add set_equivalence_ratio to SolutionArray objects 2019-08-09 17:39:10 -04:00
Ray Speth
27f30c6a2d Use more precise atomic masses for deuterium and tritium 2019-08-09 15:15:30 -04:00
Bryan W. Weber
fc01d7f3de Make format of atomic weights struct consistent
In the atomic weights struct in Elements.cpp, ensure that there is no
space before the closing brace of an element and that there is one
space between the longest element name and a 3-digit weight.
2019-08-09 15:15:30 -04:00
Bryan W. Weber
ded50547f9 Update test results changed by constants and elements
Update reference values and blessed files in regression tests.
2019-08-09 15:15:30 -04:00
Bryan W. Weber
b5a7575bc0 [Doc] Fix element function exception documentation
For several elements-related functions, the documentation listed
incorrect or incomplete exceptions that could be thrown from that
function.
2019-08-09 15:15:30 -04:00
Ray Speth
a7363e4b54 Update mass of electron "element" to 2018 CODATA value 2019-08-09 15:15:30 -04:00
Ray Speth
7461c3c960 Fix data for thallium in elements.xml
The entry for element with atomic number 81 incorrectly had the atomic symbol
and standard entropy for titanium.
2019-08-09 15:15:30 -04:00
Bryan W. Weber
dc96fb5fe8 Update atomic weights with 2018 IUPAC/CIAAW data
Use data from the periodic table at
http://www.ciaaw.org/atomic-weights.htm and
https://iupac.org/wp-content/uploads/2018/12/IUPAC_Periodic_Table-01Dec18.pdf
Elements without any atomic weight in either table do not have a stable
isotope. These are deleted from elements.xml and have their atomic
weight set to -1.0 in Elements.cpp. Add elements after plutonium that
were not previously listed. None of these elements have stable
isotopes.

These elements are retained/added so their symbols, names, and atomic
numbers can still be retrieved and the mapping of atomic number to
index - 1 in the struct is maintained.

Modify the element weight lookup functions to throw errors when an
element with no weight is requested (i.e., the weight is -1.0 in the
struct).
2019-08-09 15:15:30 -04:00
Bryan W. Weber
541fddb15e Rearrange the physical constants 2019-08-09 15:15:30 -04:00
Bryan W. Weber
3e6e57edbf Change all doublereal in ct_defs to double 2019-08-09 15:15:30 -04:00
Bryan W. Weber
3e4842be9e Update physical constants with CODATA 2018 values
These values include the redefinition of the kilogram. The data were
released on 20 May, 2019.
2019-08-09 15:15:30 -04:00
Ingmar Schoegl
bbdc790257 Address error C2512 when compiling with Visual Studio
Using a default value, VS2019 (VC 14.1) complains about a missing default constructor for UnitSystem.
2019-08-05 21:56:25 -04:00
Ingmar Schoegl
bc8b4be654 [Reactor] clarify FlowDevice interface
* differentiated Valve::setValveCoeff from PressureController::setPressureCoeff
 and introduced MassFlowController::setMassFlowCoeff for consistency.
 * introduced FlowDevice::setTimeFunction and FlowDevice::setPressureFunction to
 differentiate time-dependent and pressure-dependent functions.
 * introduced arbitrary pressure dependence for PressureController
 * deprecated FlowDevice::setFunction which is replaced by time and pressure
 specific functions.
 * introduced properties Valve.valve_coeff / PressureController.pressure_coeff /
 MassFlowController.mass_flow_coeff in Cython interface and deprecated
 Valve.set_pressure_coeff / PressureController.set_pressure_coeff
 * deprecated corresponding function calls in clib interface
 * deprecate FlowDevice.setParameters (which was only used by MATLAB interface)
2019-08-05 17:01:05 -04:00
agarwalrounak
7523022d71 Update diamond.cti and diamond_cvd.py
Replace data/inputs/diamond.cti with test_problems version that has
more information. This results in a change in the default pressure and
mole fractions of the gas phase, which in turn changes the result of
one of the regression tests. This is fixed by setting the composition
and pressure of the gas phase in the test to their original values. The
default state from the CTI file matches from the paper.

In addition, there was a difference in the reversibility of reaction u
between the files. Since the thermo for C(d) specifies that the
reaction is irreversible, this is the sense of the reaction that is
chosen.

Include plotting in the diamond_cvd.py and use open properly.
2019-08-05 14:09:03 -04:00
Bryan W. Weber
bfa5a66ed3 [SCons] Remove fmt from linking
We use the header-only version of fmt now, so no need to link to the
compiled library.
2019-08-01 18:10:00 -04:00
Bryan W. Weber
c0f019407e [SCons] Link to yaml-cpp when using system libs
Similar to the system_sundials option, libyaml-cpp must be added to the
linker line when the system libraries are used.
2019-08-01 18:10:00 -04:00
Sebastian Pinnau
dda89663ea [SCons] Add yaml-cpp to shared libraries if building with system yaml-cpp
If building Cantera with system_yamlcpp=y the yaml-cpp library needs to be
specified in the linker flags.

Fixes #668
2019-08-01 18:10:00 -04:00
Kyle Niemeyer
6852087ff5 Fixed typo in ctml_writer.py
"explcit" -> "explicit"
2019-08-01 15:56:45 -04:00