SUNDIALS (SUite of Nonlinear and DIfferential/ALgebraic equation Solvers) refers to a family of closely related solvers:
These solvers have some code modules in common, primarily a module of vector kernels and generic linear system solvers, including one based on a Scaled Preconditioned GMRES method.
All of the solvers are suitable for either serial or parallel environments. Parallelization was accomplished by rewriting the module of vector kernels, whereby the parallel version of each kernel operates on vectors that have been distributed across processors. All message passing calls are made through MPI.
CVODE is a solver for systems of ordinary differential equations (ODEs). It contains methods for the solution of both stiff and nonstiff initial value problems. Integration methods include variable-coefficient forms of the Adams-Moulton and Backward Differentiation Formula methods. In the case of stiff problems, the linear systems can be solved by direct (dense or band) methods (in serial environments only), or by a preconditioned Krylov method, GMRES. In the direct cases, the user can supply the system Jacobian or let the solver generate it internally. In the case of GMRES, the user can either supply a preconditioner or use one that is included with the package. The latter is a block-banded preconditioner based on domain decomposition. CVODE is written in C but is usable in a Fortran application, by way of a package of interface routines included.
A closely related solver called KINSOL has also been developed, for systems of nonlinear algebraic equations. It uses inexact Newton methods with line-search strategies for accelerated convergence. KINSOL also permits inequality constraints to be imposed on the solution components. The KINSOL package also includes a set of interfaces for use with Fortran applications.
The third basic solver, IDA, is also closely related to CVODE. It addresses systems of differential-algebraic equations (DAEs), and uses Backward Differentiation Formula methods. The serial version includes both direct and iterative (GMRES) methods for the linear systems, while the parallel version includes only the GMRES method. IDA also includes an optional user-callable module to recompute the initial conditions (values and/or derivatives) so as to be consistent with the give DAE system.
The development of sensitivity variants of these solvers is actively under way. At this time, only one has been released. CVODES is a variant of CVODE with added features for use in sensitivity analysis. Here one is concerned with computing the derivative of the solution or related quantities with respect to parameters appearing in the equations (or initial values). CVODES can be used in either a forward mode or a backward (adjoint) mode. In the forward mode, a set of equations is appended to the original set, which yield the sensitivity vectors as part of an extended solution. The adjoint method is more practical when the number of parameters is large, and one seeks the gradients of a relatively small number of derived functions. In CVODES, the adjoint method involves the construction of an adjoint ODE system, integration of it backward from the final time to the initial time, and using its solution to construct the desired gradients.
The parallel version of CVODE (also known as PVODE) has also been incorporated into the PETSc package, by way of user-callable interfaces available in that environment.
There is a separate user document for each of the solvers in the SUNDIALS suite, and the downloadable package includes both a PostScript and a PDF form of this document in each case. For CVODE, there are separate user documents for the serial and parallel versions. In each case for which modifications to the user interface have been made since the published document, an Addenda file is also supplied with the package. In the case of the PVODE (parallel CVODE) solver, there is also a report on some testing work (see Evaluation, above), and a journal paper.
SUNDIALS was developed in the Center for Applied Scientific Computing (CASC), at the Lawrence Livermore National Laboratory, beginning with a parallel extension to the popular CVODE package for the solution of large systems of ordinary differential equations. Its principal developers were Alan Hindmarsh, Allan Taylor and Radu Serban.