SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic Equation Solvers

SUNDIALS was implemented with the goal of providing robust time integrators and nonlinear solvers that can easily be incorporated into existing simulation codes. The primary design goals were to require minimal information from the user, allow users to easily supply their own data structures underneath the solvers, and allow for easy incorporation of user-supplied linear solvers and preconditioners.

The main numerical operations performed in these codes are operations on data vectors, and the codes have been written in terms of interfaces to these vector operations. The result of this design is that users can relatively easily provide their own data structures to the solvers by telling the solver about their structures and providing the required operations on them. The codes also come with default vector structures with pre-defined operation implementations for serial, shared-memory parallel (openMP and PThreads) and distributed memory parallel (MPI) environments in case a user prefers not to supply their own structures. In addition, all parallelism is contained within specific vector operations (norms, dot products, etc.) No other operations within the solvers require knowledge of parallelism. Thus, using a solver in parallel consists of using a parallel vector implementation, either the one provided with SUNDIALS or the user’s own parallel vector structure, underneath the solver. Hence, we do not make a distinction between parallel and serial versions of the codes.

SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic equation Solvers) consists of the following six solvers:

CVODE solves initial value problems for ordinary differential equation (ODE) systems.
CVODES solves ODE systems and includes sensitivity analysis capabilities (forward and adjoint).
ARKode solves initial value ODE problems with additive Runge-Kutta methods, include support for IMEX methods.
IDA solves initial value problems for differential-algebraic equation (DAE) systems.
IDAS solves DAE systems and includes sensitivity analysis capabilities (forward and adjoint).
KINSOL solves nonlinear algebraic systems.

In addition, SUNDIALS provides a Matlab interface to CVODES, IDAS, and KINSOL, sundialsTB. The core of each Matlab interface in sundialsTB is a single mex file which interfaces to the various user-callable functions for that solver. However, this mex file should not be called directly, but rather through the user-callable functions provided for each Matlab interface. [Note: sundialsTB has not been updated in release v. 2.6.0. We expect to update this in a future release.]