Cantera 2.5.1#

Published on February 12, 2021 | Full release on GitHub

The Cantera development team is pleased to announce the availability of Cantera 2.5.1. There have been 1000 commits to Cantera since the release of Cantera 2.4.0 in August 2018. We have closed or merged more than 250 pull requests and 100 issues. The complete list of changes can be found on the Cantera Wiki page, and a summary of new features, changes, and bugs fixed in this release is included below, with links to the associated Pull Requests on GitHub.

Cantera 2.5 introduces a new input file format, based on the YAML data format. This format supersedes the CTI and XML (sometimes called CTML) formats that Cantera has used for many years. Converter scripts from CTI and XML to YAML (cti2yaml and ctml2yaml), as well as from CHEMKIN (CK) format to YAML (ck2yaml), are provided with this release. You can use these scripts in the same way that the old ck2cti script was used. All users are encouraged to switch their input files to the new format.

Instructions for installing Cantera 2.5 are available on the Cantera website. Available options include Conda, native installers for Windows and macOS, Ubuntu packages, and compiling from source.

Thank you to the following contributors to Cantera 2.5:

@12Chao, @agarwalrounak, @arghdos, @band-a-prend, @BangShiuh, @bryanwweber, @CyberDrudge, @decaluwe, @dholland88, @g3bk47, @inducer, @ischoegl, @jsantner, @korffdm, @kyleniemeyer, @lavdwall, @lionkey, @manikmayur, @mgashwinkumar, @paulblum, @rwest, @sameshl, @sin-ha, @speth, @spinnau, @ThanasisMattas, @tsikes, @wbessler

New Features#

  • Added a new, YAML-based input file format (#584, #663, #664, #671, #693, #707, #708, #716, #723, #738, #750, #764, #768, #773, #784, #794, #795, #813, #855, #857, #866, #869, #880, #897, #899, #961, #970, #941, #974)

  • Add interface for reading and writing 1D Flame and SolutionArray objects from/to HDF5 files (#680, #687, #805, #840, #860, #871, #900, #943, #931)

  • Add BinarySolutionTabulatedThermo class, which implements implements tabulated standard state thermodynamics in a binary solution. (#563, #606, #637, #640, #725)

  • Introduce C++ Solution class to simplify creation of coupled ThermoPhase, Kinetics, and Transport objects (#696, #735)

  • Determine Redlich-Kwong parameters from a database of critical property data (#574, #576, 33e198f7e, ebb93cb5a)

  • Make transport property calculations available for pure fluid water phases (#558)

  • Make InterfaceKinetics.advance_coverages_to_steady_state available in the Python interface (#592, #610)

  • Add functions for returning the phase of matter for ThermoPhase objects (#722, #839)

  • Add new ReactorNet::advanceTowards method to combine benefits of both the ‘step’ and ‘advance’ methods; see ‘reactor3.py’ example (#629, #756)

  • Enable setting the maximum number of CVODEs steps in the Python interface (#581)

  • Add factories for FlowDevice and Wall objects, to enable creation of user-defined derived classes (#632)

  • Allow classes derived from StFlow to have additional state variables (#624)

  • Add wrappers to make piecewise-Gibbs and NASA9 species thermo objects accessible in Python (#711)

  • Add set_equivalence_ratio function to SolutionArray objects (#677)

  • Add ability to sort SolutionArray objects (#688)

  • Support use of Sundials versions up to 5.7 (5e226535d, #672, #780, #814, #974)

  • Add functions for setting species aliases and finding isomers (#714, #876)

  • Added warn_user function as a consistent way of issuing warnings from C++ (#741)

  • Add get/set equivalenceRatio/mixtureFraction functions to C++ (#851)

  • Make getDeltaEnthalpies available in the Matlab interface (#659)

  • Add TabulatedFunction class for providing time-varying reactor inputs specified by tabular input (#797)

  • Add plug flow reactor example in MATLAB (#701)

  • Make liquid-water-IAPWS95 available as a phase model (#921)

  • Make species charge information available in Python (#863)

  • Add kinetics_species_name and kinetics_species_names functions to Python interface (5601ee906)

  • Added list_data_files function to Python module (#589)

  • Add fast_fail_tests option to SCons (#772)

  • Add some functions which were missing from the Fortran interface (#828, #858, #870)

  • Provide const versions of certain functions (#850, 9aa507a09)

  • Expand ~ as user homedir shortcut when adding data directories (ca8700fdd)

Changes to existing features#

  • Remove support for Python 2 (#560, #611)

  • Update physical constants based on 2018 CODATA values, and atomic weights to 2018 IUPAC/CIAAW values (#653)

  • Deprecated some redundant or rarely-used classes and functions. See the deprecation lists for C++ and Python / Matlab / Input files. (#580, #588, #645, #643, #660, #733, #735, #762, #787, #790, #806, #815, #864, 35be561d9, 27d9b6413)

  • Build and test the sample programs / scripts as part of the CI process (1ec9ce2c0, #649, #776, #874, #883, #905, #923, #927)

  • Improve handling of phases where the intrinsic state variables are not temperature and density (#720)

  • Improve detection and handling of errors in Chemkin input files (#585, b2acc43a8, 4f4a2bd07, d04fd8cc3)

  • Consolidate and report all errors when adding reactions, instead of just failing on the first one (#903, #946)

  • Use ‘Q’ instead of ‘X’ for the quality (vapor fraction) of two-phase mixtures in Python (#719)

  • Always use temperature of the “reacting” phase for interface kinetics (6c82b61c3)

  • Make interface for setting parameters for Valves and PressureControllers more intuitive (#667, #682)

  • Add N2 to h2o2.yaml (#959)

  • Make CVODES integrator max_time_step a property in the Python module (#731)

  • Switch CI to GitHub Actions (#775, #884, #889, #957)

  • Use experimentally-derived O2/O2- collision integral in ionized flames (#552)

  • Consistently use CanteraError in Python examples (#596, 05eaa0a5e)

  • Add option to use case-sensitive species names (#689)

  • Treat deprecation warnings issued from Python and C++ consistently (#796)

  • Improve sample build scripts on maCOS (#612)

  • Updated the diamond_cvd.py example to include plotting the output (#630)

  • Make GRI-3.0 mechanisms consistent with latest online version (#718)

  • Follow Python naming convention for arguments to ThermoPhase.equilibrate (#684)

  • Remove unused Chemkin input files from the source distribution (#799)

  • Move heat_release_rate method to Python Kinetics class (#810)

  • Automatically add negative_A option for third body reactions when converting from Chemkin input (#822)

  • Allow negative pre-exponential factor for falloff reactions (#868)

  • Search current working directory before built-in data directories when using Python (#792)

  • Check for additional invalid string-to-double conversions when parsing composition strings (84535483f)

  • The default branch for the Cantera Git repository is now named main (#890)

  • Include more significant digits for Redlich-Kwong coefficients when converting from CTI to XML (ec7f77943)

Bugs fixed#

  • Fixed various compilation issues on specific platforms and with certain SCons/compiler options (#561, #572, #601, #648, #661, #674, #676, #685, #742, #765, #779, #803, #824, #879, #891, #918, #960, #962, #973, 46b7cf180)

  • Fix handling of local quantity units rate for Chebyshev rate constants when converting Chemkin input files (#600)

  • Fix setting of Soret and multicomponent diffusion options after exceptions when using the auto option to Sim1D.solve (#631)

  • Disable free flame domain width check when auto=False (#690)

  • Allow setting beta = 0 for electrochemical reactions (#955)

  • Fix Redlich-Kwong phase to not use the element potential equilibrium solver (#898)

  • Fix erroneously-rounded transport coefficients in input files derived from GRI 3.0 (#598)

  • Use correct phase state after Reactor mass flow rate evaluation (#651)

  • Avoid NaN in entropy with small negative mass fractions (#686)

  • Fix conversion of Chemkin input files with surface reactions with explicit reverse rates (#754)

  • Fix conditional property updates in IonGasTransport (#568)

  • Fix Chebyshev rate evaluation with only 1 point in T or P (#706)

  • Check for non-existent species in reaction orders when adding reactions (e4362d37e)

  • Fix various edge cases for saturated PureFluid states (#907)

  • Fix comparisons of non-numeric text in test_problems (#785)

  • Prevent overwriting of pre-existing extra SolutionArray columns (#820)

  • Fix slicing of SolutionArray (#816, #837)

  • Prevent erroneous creation of standalone Kinetics and Transport objects in Python (#845)

  • Ensure that the mass flow rate returned by FlowDevice objects is correct after a call to ReactorNet::advance (#886)

  • Fix indexed assignment of ‘extra’ columns in SolutionArray (#838)

  • Fix handling of reaction units settings not on last line when convert Chemkin input files (540777c32)

  • Fix over-zealous detection of section ‘end’ labels when converting Chemkin input files (e3424d8ed)

  • Fix building and installing the minimal Python package (#928, #974)

  • Check for a valid species index in ThermoPhase::species() (#949)

  • Fix some corner cases in Sim1D::setFixedTemperature (#936)

  • Retain user-specified products in counterflow premixed flame when using “auto” option (b63354447)

  • Fix refinement check in ic_engine.py example (d9b95b2ef)

  • Fix issues with Blasius BVP example, and install it with other C++ samples (dc0904027, 600580ead, c26db356e, b9a5913af, 22efbe25d, 8c213da93)

Documentation updates#