sksundae#

scikit-SUNDAE provides Python bindings to SUNDIALS integrators. The implicit differential algebraic (IDA) solver and C-based variable-coefficient ordinary differential equations (CVODE) solver are both included.

The name SUNDAE combines (SUN)DIALS and DAE, which stands for differential algebraic equations. Solvers specific to DAE problems are not frequently available in Python. An ordinary differential equation (ODE) solver is also included for completeness. ODEs can be categorized as a subset of DAEs (i.e., DAEs with no algebraic constraints).

Accessing the documentation

Documentation is accessible via Python’s help() function which prints docstrings from a package, module, function, class, etc. You can also access the documentation by visiting the website, hosted on Read the Docs. The website includes search functionality and more detailed examples.

Acknowledgements

scikit-SUNDAE was written by researchers at the National Laboratory of the Rockies (NLR), primarily to solve physics-based battery models. Modeling in Python typically allows for rapid development and makes code more shareable. However, there was an identified gap in Python’s numerical computing ecosystem: the lack of accessible DAE solvers. While ODE solvers are widely available in many packages, DAE solvers are not as prevalent.

scikit-SUNDAE started out as a lighter-weight and easy-to-install alternative to scikits-odes, which similarly provides SUNDIALS bindings, but requires building from source. The goal was to offer a simpler installation process, with binary distributions that are consistent across major platforms (PyPI and conda). While scikit-SUNDAE’s API was mostly modeled after scikits-odes, we want to point out that our codebase was written from scratch and that this is a separate, independent package. During development we prioritized:

  1. Using scipy-like output containers

  2. Adopting event function APIs like scipy.integrate, with a few exceptions

  3. Maintaining and testing builds using SUNDIALS releases on conda-forge

  4. Setting up the package for binary distribution

Since scikit-SUNDAE installations may include pre-built SUNDIALS libraries, a bundled license file is included with all distributions. The bundled license acknowledges not only SUNDIALS, but any optional solvers that are linked and distributed as well (e.g., SuperLU_MT, OpenBLAS, and LAPACK).

Submodules#