The Cantera development team is pleased to announce the availability of Cantera 3.1.0. There have been over 800 commits to Cantera since the last version, 3.0.0, which was released in August 2023. We have closed or merged 128 pull requests and closed 81 issues and 24 enhancement proposals. Instructions for installing Cantera 3.1 are available on the Cantera website.
Highlights
- Render examples using Sphinx-gallery (#1621, #1681, #1724, #1821, E#88)
- Added visualizations of reactor networks; see mix1.py and reactor2.py (E#180, #1624, #1714, #1792, E#212)
- Added ability to solve diffusion flames on the unstable branch using control of the temperature at two interior points; see diffusion_flame_continuation.py (#1622, #1779, #1813)
- Added the linear-Burke reaction rate parameterization which models pressure-dependent reactions with collider-specific behavior; see shock_tube.py, jet_stirred_reactor.py, and flame_speed.py (E#157, #1710, #1801)
- Major expansion of documentation for contributing to Cantera and understanding its internal workings (E#25, #1700, #1757, #1786)
- Update website structure to keep all version-specific documentation together and simplify URLs (E#145, E#146, #1631, #1638, #1647, #1657, #1657, #1737, #1766, #1790)
- Significant refactoring of the
clib
interface, which is now declared experimental and subject to API changes without receiving deprecation warnings. (E#211, E#199, #1741, #1752, #1760, #1769, #1773, #1780)
New features
- Add electron collision reactions (C++ class ElectronCollisionPlasmaRate) based on cross section data from the LXCat database; see plasma.py (#1262)
- Added an example demonstrating a 1D packed-bed reactor; see 1D_packed_bed.py (E#43)
- Added option to compute diffusive fluxes using mass fraction gradients in the 1D solver (E#195, #1668)
- Expose Peng-Robinson EoS parameters to Python interface (#1664)
- Created a new repository to clearly identify example input data and allow use of larger, more detailed mechanisms (E#22, #1689)
- Add HDF5 support to PyPI packages (E#205, (#1727)
- Add stack trace option to
CanteraError
for enhanced debugging (#1730) - Enable cross compiling support without patches to simplify some package builds (E#210, #1749)
- Add support for Python 3.12 (#1604, #1648, #1716)
- Add compatibility with SUNDIALS 7.0 (#1672)
- Add compatibility with NumPy 2.0 (#1706, #1713)
- Support compilation in C++20 mode (#1739)
- Automatically adjust temperature bounds for low-temperature flames (#1684, #1705)
- Add BLAS/LAPACK support for PyPI packages on Linux and macOS (#1797)
- Add programmatic access to logging information about transport property fits (#1824)
Changes to existing capabilities
- Refactored implementation of 1D flame governing equations (#1595, #1619)
- Improvements to 1D solver logging (#1660, #1759)
- Significant improvements to error messages reported when converting mechanisms using
ck2yaml
(#1669, #1736) - Improved handling of edge cases involving third body colliders and “duplicate” reactions (#1696)
- Improve distinction between selecting
none
anddefault
transport models (#1680, #1705) - Improve error message for flames initialized with bad boundary conditions (#1694, #1705)
- Disallow redundant flame grid specification (#1693, #1705)
- Simplify YAML input for extensible interface reactions (#1709)
- Improve consistency of
Func1
API between Matlab and Python interfaces (#1758, #1798) - Use
Solution
objects to store reactor contents (#1663, #1685) - Move locks that prevent adding species to
ThermoPhase
objects that are in use from Python to C++ (#1686) - Use Jinja templates in C#
sourcegen
(#1785) - Update
ck2yaml
to useargparse
(#1616) - Make names generated for reactor network objects reproducible (#1765)
- Make generated sources and error messages deterministic (#1804)
- Remove features deprecated in Cantera 3.0. (#1605)
- Remove legacy Matlab toolbox (E#196, #1670, #1688)
- Remove
python_minimal
interface (E#208, #1745) - Expanded automated CI testing and other CI maintenance (#1608, #1612, #1630, #1652, #1662, #1671, #1677, #1703, #1738, #1752, #1808, #1815, #1818)
- Various documentation updates (#1618, #1659, #1702, #1795, #1803, #1807, #1810, #1817, #1826)
- Various build system updates (#1723, #1746, #1750, #1755, #1768, #1782, #1791, E#209, #1820)
- Fix some compiler warnings (#1729)
- Maintenance of the sdist / PyPI packages (#1625, #1708, #1796)
- Address some website accessibility issues (E#41, #1753)
- Complete transition of the Python test suite to use
pytest
instead of theunittest
module (#1793) - Update generated
CMakeLists.txt
files (#1742, #1744) - Provide better error checking and messages in Python
Quantity
class (#1816) - Improve error handling with cubic equation solver used for Redlich-Kwong and Peng-Robinson phases (#1819)
Bugs fixed
- Fix missing porosity in
PorousMediaBurner.py
(#1617) - Fix various issues in the experimental Matlab toolbox and add missing functions (#1586, #1701, #1761)
- Fix converting surface mechanisms that use a separate thermo data file (#1637)
- Use midpoint properties for diffusion fluxes in 1D solver (E#187, #1626)
- Fix access to
Solution
report when usingwith_units
(#1650) - Prevent segfaults from accessing partially-constructed reactor objects (#1661)
- Fix setting diffusion flame initial guess from known data (#1674, #1705)
- Fix issues with slicing
SolutionArray
(#1725, #1726) - Fix
yaml2ck
handling of multilinenote
fields and phases with no reactions (#1733) - Fix a memory leak when reinitializing a reactor using the GMRES sparse solver (#1732)
- Fix YAML serialization of changes to reaction/species flags with default values that are normally omitted (#1629, #1740)
- Fix serialization of
note
fields that can be erroneously interpreted as integers (#1610, #1740) - Fix YAML serialization of multiline strings (#1695, #1740)
- Fix garbage collection-related segfault with
CustomRate
(#1763) - Fix compatibility with SUNDIALS 6.0 and 6.1 (#1774)
- Fix overwriting and ordering of components when outputting
SolutionArray
to YAML (#1775, #1781) - Fix use of
kineticsSpeciesIndex
indiamond_cvd
examples (#1814) - Fix spatial scaling in
MultiTransport::getMassFluxes
andgetMolarFluxes
and improve testing of transport calculations (#1825)
Contributors
This release was made possible by the following contributors: @BangShiuh, @Naikless, @bryanwweber, @corykinney, @cpilko, @d-e-t, @decaluwe, @dholland88, @g3bk47, @guusbertens, @ischoegl, @keszybz, @martey, @matthiasdiener, @mefuller, @pjsingal, @speth, @ssun30, @wandadars