SUNDIALS is a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. It 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.

SUNDIALS is 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 are to require minimal information from the user, allow users to easily supply their own data structures underneath the packages, 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. Wrappers for the hypre ParVector and a PETSc vector are also provided. 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 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:

