# 1. SUNDIALS organization¶

SUNDIALS consists of the solvers CVODE and ARKODE for ordinary differential equation (ODE) systems, IDA for differential-algebraic (DAE) systems, and KINSOL for nonlinear algebraic systems. In addition, SUNDIALS also includes variants of CVODE and IDA with sensitivity analysis capabilities (using either forward or adjoint methods), called CVODES and IDAS, respectively. The following is a list summarizes the basic functionality of each SUNDIALS package:

• CVODE, a solver for stiff and nonstiff ODE systems $$\dot{y} = f(t,y)$$ based on Adams and BDF methods;

• CVODES, a solver for stiff and nonstiff ODE systems with sensitivity analysis capabilities;

• ARKODE, a solver for stiff, nonstiff, mixed stiff-nonstiff, and multirate ODE systems $$M(t)\, \dot{y} = f_1(t,y) + f_2(t,y)$$ based on Runge-Kutta methods;

• IDA, a solver for differential-algebraic systems $$F(t,y,\dot{y}) = 0$$ based on BDF methods;

• IDAS, a solver for differential-algebraic systems with sensitivity analysis capabilities;

• KINSOL, a solver for nonlinear algebraic systems $$F(u) = 0$$.

The various packages in the suite share many common components and are organized as a family. Fig. 8.1 gives a high-level overview of solver packages, the shared vector, matrix, linear solver, and nonlinear solver interfaces (abstract base classes), and the corresponding class implementations provided with SUNDIALS. For classes that provide interfaces to third-party libraries (i.e., LAPACK, KLU, SuperLU_MT, SuperLU_DIST, hypre, PETSc, Trilinos, and Raja) users will need to download and compile those packages independently of SUNDIALS. The directory structure is shown in Fig. 8.2.