ARKode is designed to have a similar user experience to the CVODE
solver that is already included in SUNDIALS, but it is
designed for multi-rate systems of ordinary differential equations.
As such, like CVODE it admits user modes to allow adaptive integration
to specified output times, return after each internal step and
root-finding capabilities, for calculations both in serial and
parallel (via MPI). However unlike CVODE, ARKode allows the user to
provide a splitting of their ODE system into stiff and nonstiff components
to be treated using different integration methods; additionally ARKode
allows specification of a mass matrix applied to the time-derivative
term (i.e. linearly implicit ODE form). The default integration and
solver parameters should apply to most users, though complete control
over all internal parameters and time adaptivity algorithms is enabled
through optional interface routines.

The methods used in ARKode are adaptive-step additive Runge Kutta
methods. Such methods are defined through combining two complementary
Runge-Kutta methods: one explicit (ERK) and the other diagonally implicit
(DIRK). Through appropriately partitioning the ODE system into
explicit and implicit components, such methods have the
potential to enable accurate and efficient time integration of
multi-rate systems of ordinary differential equations. A key
feature allowing for high efficiency of these methods is that only the
implicit components must be solved implicitly, allowing for
splittings tuned for use with optimal implicit solvers.

This framework allows for significant freedom over the constitutive
methods used for each component, and ARKode is packaged with a wide
array of built-in methods for use. These built-in Butcher tables
include adaptive explicit methods of orders 2-8, adaptive implicit
methods of orders 2-5, and adaptive IMEX methods of orders 3-5.
Stepsize adaptivity is accomplished through requiring that these
methods include embeddings to enable efficient error estimation;
however users wishing to perform fixed-step methods, or who wish to
perform stepsize adaptivity manually, may instead input the Butcher
table coefficients for any valid ERK, DIRK, or ARK method.

For implicit and IMEX methods, the resulting implicit system (assumed
nonlinear, unless specified otherwise) is solved approximately at each
integration step, using a Newton method, modified Newton method, an
Inexact Newton method, or an accelerated fixed-point solver. For the
Newton-based methods and serial or threaded vector modules, ARKode
provides both direct (dense, band, or sparse) and preconditioned
Krylov iterative (GMRES, BiCGStab, TFQMR, FGMRES, or PCG) linear
solvers. When used with distributed-memory parallel NVECTOR modules,
or a user-provided vector data structure, only the Krylov solvers are
available, although a user may supply their own linear solver for any
data structures if desired. For the serial or threaded vector
structures, there is a banded preconditioner module available for use
with the Krylov solvers, while for the distributed memory parallel
vector structure there is a band-block-diagonal preconditioner module
available. Additionally, users may supply more optimal,
problem-specific preconditioner routines.