Dear all,
I am pleased to announce the beginning of the "beta" period for Cantera 2.3.0. There have been many changes and improvements since Cantera 2.2.0 was released in June 2015. A somewhat abbreviated Changelog is included below. If you are an active Cantera user, please give this release a try, and report any issues either here or on Github so that they can be addressed before the full release of Cantera 2.3.0.
Regards,
Ray
Installing Cantera 2.3.0b1
Cantera 2.3.0 introduces a new installation option for the Python package, which is the conda
package manager for the Anaconda / Miniconda Python distributions. If you already have an existing conda environment, you can install a recent development snapshot of Cantera by running
conda install -c cantera/label/dev cantera
For more details on installing conda and using Cantera with conda, see http://cantera.github.io/dev-docs/sphinx/html/install.html#conda.
The source code and Windows binaries can be downloaded from Github: https://github.com/Cantera/cantera/releases. To use the Matlab toolbox on Windows, install both Cantera-2.3.0b1-x64.msi
and one of the Python modules. The Python installers are standalone and do not require the base Cantera package. Installers are available Python 2.7, Python 3.4, and Python 3.5. Additional installation instructions for Windows can be found at: http://cantera.github.io/dev-docs/sphinx/html/install.html#windows.
Pending resolution of Homebrew/homebrew-science#4663, OS X users will be able to install the beta version using Homebrew by specifying the --HEAD
option as part of the brew install ...
command. See http://cantera.github.io/dev-docs/sphinx/html/install.html#homebrew for additonal instructions.
And of course, you can also just check out the source code directly using Git from https://github.com/Cantera/cantera. Compilation instructions for all platforms are located at: http://cantera.github.io/dev-docs/sphinx/html/compiling.html.
Documentation
Documentation for Cantera 2.3 can be found at: http://cantera.github.io/dev-docs/sphinx/html/index.html.
Issues & Feedback
Please report any issues on the Github issue tracker at https://github.com/Cantera/cantera/issues. When making a bug report, please specify the exact version of Cantera you are using (i.e. list the last git commit hash if you are using a git checkout) in addition to providing information about the operating system, compiler versions, Python version, etc. that you are using.
There are number of rarely used or redundant features which have been slated for deprecation. Using these methods in Cantera 2.3 will show a deprecation warning, and these methods will be removed before the following release of Cantera. You can examine the list of deprecated functions at: http://cantera.github.io/dev-docs/doxygen/html/deprecated.html. If you believe any of these deprecations are unwarranted, please create an issue on Github.
In addition, there are a number of classes that have been identified as being potentially unused. They are not used internally within Cantera, have no test coverage, and have no examples available. These classes are identified in Issue #267. If you utilize any of these classes, please consider providing tests or examples which can be integrated into Cantera. If these classes remain in their current state, they are likely to be deprecated and removed in a future release.
Cantera 2.3 Changelog
Thermo / Species / Elements
- Add ability to modify species data for existing Phase objects (4428a62)
- Make species names case-preserving instead of case-sensitive (f17750e)
- Add functions for setting density and pressure simultaneously (#272, 5d215b7, 8e58a45, 2045505, 6082726, ce21b08)
- Add functions to set additional property pairs for pure substances (63cfed1, 49cb039, 71e2101, c1f287d, bff8d10, 02f0e27, #315)
- Add new interface for accessing element information (f3bc7a5, c324386, ba8c906, b351c62, 9577409, 9276f56, f95f118, c72f1b6, efd6d23)
- Allow discontinuous thermo warnings to be suppressed (aa4d07f, #354)
- Allow non-positive atomic weights for custom elements (abf71c4)
- Allow colons in species names (3300611, 1db103c, 8e6d53d, 0787e41, #343, #396)
- Fix silent failures in HP/UV/SV/SP convergence (5b1a4a6, #264)
- Fix definition of elemental mole fraction (e8292d3, #286)
- Fix pure fluid thermal expansion coefficient calculation (b1a1ce6)
- Fix calculation of derivative properties of pure fluids near or inside two-phase region (a92245f, #273, 3f3b965)
- Check for non-existent species in setMass/MoleFractionsByName (140da43)
- Treat duplicate keys in composition strings as errors (b38a933)
- Show large negative species concentrations in phase report (86835a5)
- Check for NaN when setting state (bb2d1c0, 6e138d0)
- Add compatibility check for phases added to MultiPhase (a026c6a, #306)
Kinetics
- Allow adding additional species after reactions for homogeneous kinetics (1ba5f6b)
- Add option for Motz & Wise correction to sticking reactions (1e5eb8c, 593ab8a, fd9d60f, e851e5e)
- Prevent positive feedback in negative species concentrations (60b98b3)
- Fix handling of integral, explicit reaction orders (4efad93)
- Added methods to InterfaceKinetics to get effective rate parameters (40e0904, #297)
- Always initialize FalloffReaction.falloff (60efb22, #326)
Transport
- Fix segfault when species transport data is missing (bab0786, #312)
Reactor networks
- Implement enthalpy of formation sensitivity analysis (cf13b31, 3a12967)
- Implement the Cython function advance_to_steady_state (57e3ee8, #95, #303, 304364c, de133f1)
- Allow Reactor to be used with PureFluidPhase objects (1dc0ced, #257, 28202f9, 95764fd)
- Eliminated unnecessary argument to ReactorNet.step() function (8d4e9bf, #271)
- Add ReactorSurface to simplify use of surface reactions (3f76637, c3b9a0c, a7aec57)
- Deprecate possibly-ambiguous names in componentIndex (0590b2c, #274)
- Add componentName function to ReactorNet and Reactor classes (8ff82c0)
1D flames
- Improve Jacobian evaluation to eliminate most known solver failures (d767049, 9353a79, 011c9cb, a288d5c, af5bbf7)
- Use better default initial grids and initial guesses to improve convergence (de8348e, f0a1e25, 87a8419, 8e81292, 77e3775, 7484827, 22537b9, a9293c3, 5a08cf0, 85c3bf5, 6c466f6,)
- Introduce 'auto' option to Sim1D.solve to automatically try multiple initial grids (d2793c0, 77c7442, 92ccda8, 3b522dc, 3fd46f7, 170f1d0)
- Generalize initial profile generation for diffusion flames for arbitrary fuel/oxidizer combinations (51e0c91)
- Add general support for calculating adjoint sensitivities (ca8b101, 0bfdf14, 4753ae4)
- Make additional solver state information available to simplify debugging solver failures (d20ab89, 832ee88, 11b665b, 532e132, 81074b2, 1f3e8dd, efe43b3)
- Improve handling of negative species concentrations (318fa04, 2d82c78, b99ba44)
- Add a Twin Premixed Counterflow Flame class and example (f699748, #340, ed72984, 828cca3, 1dc7071, 036eeb1, #356)
- Set limit on number of timesteps without reaching steady state to avoid infinite loops (29b7049, 4c5301d, 7ba6681)
Input file handling (ck2cti, cti, ctml_writer)
- Support conversion of surface mechanism files (#76, db90a7c, de9bb5b, cff277d, aa42aa5)
- Fix get_modified_time to avoid race condition on Windows (05198dd)
- Print the current thermo entry when an error is encountered (b25167e, bd53bbd)
- Provide better error message for reactions with missing data (fe747f3)
- Add 'nonreactant_orders' option to allow non-reactant orders (7e71645, #317, #321, a68cdec, 828fba5)
- Allow elements/isotopes with custom atomic weights (7d18120, #344, #314)
- Add support for Chemkin-style extended elemental composition (9e5362a)
- Handle reactions containing 'hv' pseudospecies (5926d2d)
- Don't include reactions with explicit reverse rate equal to zero (a9814a1, 05ad05c, #380, #398)
- Fix conversion of Chemkin files where NASA polynomial is only given for a single temperature range (2f7e050, 233399f)
Python package
- Allow adding species / reactions from Python (1660167, e49f843)
- Make thermo parameters accessible in Python (cd545af #275, #276, #277)
- Add class Quantity (#290, 94f94dd, d559af9, 0325377, 8299646, 25b1dc9, a77b79b)
- Add class SolutionArray (#329, 78d275b, 21a1be8, b51b844, 5c23ea3, 366ff04, 2d32a35, 00b104a, deafbf8, 69bec84, beb2056, 59e0f5a, f2ac1f2, 001b7e9, faa4c36, 00d254a)
- Add ThermoPhase.set_equivalence_ratio (9c907af)
- Fix full-state (e.g. TPX) properties of PureFluid (48c6c6b, #307, #308)
- Exceptions raised by Cantera are now 'CanteraError' instead of 'RuntimeError' (89d0c56, 4e1c45c, 9c368d5, #370)
Matlab toolbox
- Fix 'nAtoms' to work with species with negative atoms (0e4b0cb)
- Fix default threshold value when displaying phase info (69f25b4)
- Always allocate string buffers of an appropriate size (940b7ea, #118)
- Fix setState_sat*.m functions (5aabfe9, #299, #300)
- Extend NoNorm option for setCoverages to the Matlab toolbox (14864e8, #305)
- Add missing PureFluid constructors for fluids defined in liquidvapor.xml (ee9d575)
Examples / Samples
- Generate CMakeLists.txt files for C++ and F90 samples (f959fa6)
- Fix compilation errors and warnings in the C++ examples (571eaed)
- Fix Python multiprocessing example (7ca9327, 6514f7a)
Test suite
- Add more tests of flame solver convergence (1730036, 522d263, 3e371c8, dfb4d62, 2315da5)
- Make Python test suite runnable from an installed copy of the Python module (ea4b350, fc92707, e235f69, #376, #381)
- Introduced Continuous Integration testing using Travis CI and AppVeyor (aa7f5a2, 67e6d6c, 13c8ba6, 2b2f733, dd7a374, c0d007a, c770edf, 361ca83, 1e87756)
Build system improvements
- Use Git submodules for Sundials, Eigen, Google Test, and libfmt if system versions are not installed (34e38ab, b4a1fb2, 4e551f6, #309, 4a411b7)
- Added Conda build recipe and made binaries available through anaconda.org (#261)
- Switch Cython and python interfaces to use setuptools, and provide executable scripts for ck2cti & mixmaster (#283, #288, b979cea, 5f8bd40, 19f4468)
- Add support for Sundials 2.7 (ad7a02d, #366)
- Link statically to libstdc++ on Linux to avoid conflicts (e2d7e17)
Other
- Deprecate unused classes, functions, arguments, and constants (see http://cantera.github.io/dev-docs/doxygen/html/deprecated.html for details)
- Add notices to documentation for classes with no tests or examples (see #267)
- Add contributing guidelines and templates for Github Issues/Pull Requests (557e752, 8ef3316, 0c400a9, d55ffa9, #395)
- Add Code of Conduct (3782543, #392, #393)
- Compile as C++11 code and utilize C++11 features
- Make clib usable as a pure C (not C++) interface and add tests (e332fcb, deee889, 100d6db, 5f0e20b, deeb619, 902ab5c, 8a9eabe)
- Numerous documentation updates
- Use Sundials and Eigen to eliminate the need for bundled LAPACK (41ae065, 41a357a, bf67cce, b49c2e4, a7d854f, 799695f, 230688d, efb068e, df43a47, c677d13, #333)
- Use fmt (cppformat) for string formatting operations
- Use Boost implementations of various functions instead of relying on home-grown alternatives (367bdba, b25784d, 7a24dc3, da87260)
- General cleanup of source code formatting and style
- Refactoring of C++ source code to reduce redundancy
- Remove unused variables and unimplemented/unnecessary functions