Skip to content

Development Roadmap

Bryan W. Weber edited this page Sep 23, 2018 · 9 revisions

The purpose of this document is to outline the development priorities and ideas for Cantera. The list is organized roughly by the module to which the idea applies, and there is also a list of changes that we think might be a little easier for a new developer to take on. Although this list isn't necessarily comprehensive, we think its a pretty good idea of what is going on in Cantera development currently. In addition to this list, the list of issues is a good place to look for things to work on, and more examples in the Cantera Jupyter Notebook repository are always welcome.

Thermodynamic Models - Issues

  • Add more pure fluid models by building an interface to the CoolProp library
  • Add tests for existing thermodynamic models that are not covered by the existing test suite (#267)
  • There is a lot of redundancy in some of the ThermoPhase derived classes, where many functions have essentially the same implementation for a number of classes. Is there a way to reorganize things to reduce the amount of duplicate code involved? Example: see getPartialMolarEnthalpies as implemented in (IdealGasPhase, IdealMolalSoln, IdealSolidSolnPhase, IdealSolnGasVPSS and LatticePhase) or in (HMWSoln, IonsFromNeutralVPSSTP, MargulesVPSSTP, MolarityIonicVPSSTP, MixedSolventElectrolyte, PhaseCombo_Interaction, and RedlichKisterVPSSTP)

Equilibrium Solvers - Issues

  • Both the MultiPhaseEquil (aka "Gibbs") and VCS_MultiPhaseEquil (aka "VCS") solvers implement versions of the VCS algorithm. In the long-run, it is unclear why we would want two implementations of essentially the same algorithm. In the short run, there are enough cases which result in errors from one or the other that we clearly can't get rid of either.

Chemical Kinetics - Issues

  • Improve support for handling reduced mechanisms which require side calculations or are implemented as standalone rate evaluation functions, e.g. mechanisms based on the quasi-steady-state approximation.
  • Improve reaction path diagrams to be more visually appealing and informative (rewrite in Python?)
  • Add proper support for photochemical and chemiluminescent reactions

0-D Reactors Issues

  • Implement a wall model with inertia (i.e. acceleration proportional to the pressure difference, instead of velocity)
  • Allow pressure and/or temperature to be prescribed as functions of time
  • Reformulate FlowReactor to use (unnormalized) mass fractions as the state variables, [in order to resolve integrator issues, same as was done for Reactor and ConstPressureReactor before]
  • Add IdealGasFlowReactor, with temperature as the independent variable for the energy equation
  • Implement a version of the plug flow reactor that allows for surface chemistry - this becomes a DAE system which would need the SUNDIALS IDAS solver in order to perform the integration.
  • Implement a true steady-state solver for 0-D reactors, possibly reusing the 1-D MultiNewton flame solver so that hybrid SS/time-stepping can be used for stability (in the meantime, advance_to_steady_state works pretty well).
  • Add test cases that do sensitivity analysis using ConstPressureReactor.
  • Add options to help users debug mechanisms with problematic reactions (e.g. this [Users' Group thread])(https://groups.google.com/forum/?fromgroups#!topic/cantera-users/vvaikJ1IGxY). Perhaps a user-specifiable maximum for dT/dt or dY/dt, above which some state and reaction rate information is printed?
  • Implement adjoint sensitivity analysis
  • Add a GUI for setting up reactor networks, or possibly just visualizing them (probably as part of MixMaster or a rewrite of MixMaster using a different GUI toolkit)
  • Improve integrator performance for large mechanisms - possibilities include automatic differentiation in order to get an analytic Jacobian, using a preconditioned Krylov solver, using GPUs for linear algebra, etc.

1-D Flames Issues - Project

  • Non-XML based output format for flames and solutions Card
  • Clear and consistent naming convention for files and classes Card
  • Add a unity-Lewis-number transport option

C++ Base library


C/Fortran Interface

  • Add a test suite for the Fortran 90 interface
  • Make the reactor network model (or at least a simple version of it, e.g. single, closed, constant volume and constant pressure reactors) available in the Fortran 90 interface, for use when linking to 3rd party CFD codes
  • Add documentation for the Fortran interface

Matlab Interface - Issues

  • Redesign the interface using new-style classes, and use the 'loadlibrary' interface to the Cantera library instead of the 'ctmethods' MEX interface. Proof of concept
  • Eliminate the incomplete Matlab 1D toolbox
  • Make the Matlab test suite more comprehensive (ideally as part of redesigning the Matlab interface)

Python Interface - Issues

  • Provide enhanced integration with the Jupyter notebook (e.g., HTML representations of some types or phase reports, a progress indicator widgets for 1D flame integration, etc.)

Documentation - Issues


General

  • New YAML-based input file format to replace both CTI and XML formats. See format sandbox and #423
  • Make objects of various types serializable (as YAML)
  • Migrate legacy tests (in the test_problems directory) to the Google Test framework (in the test directory)
  • Include running the Jupyter Notebook examples in the test suite on CI