# The ARKode Solver Library¶

The ARKode infrastructure provides adaptive-step time integration modules for stiff, nonstiff and mixed stiff/nonstiff systems of ordinary differential equations (ODEs). ARKode itself is structured to support a wide range of one-step (but multi-stage) methods, allowing for rapid development of parallel implementations of state-of-the-art time integration methods. At present, ARKode is packaged with two time-stepping modules, The ARKStep module and The ERKStep module, both described below. ARKode is a component of the SUNDIALS suite of nonlinear and differential/algebraic equation solvers.

ARKode is written in C, with C++ and Fortran interfaces.

## News¶

Date Details
28 Sep 2018 Major feature addition/bugfix release, included with SUNDIALS v3.2.0 and SUNDIALS v4.0.0-dev.2
31 July 2018 Minor bugfix release, included with SUNDIALS v3.1.2 and SUNDIALS v4.0.0-dev.1
7 May 2018 Major feature addition/bugfix release, included with SUNDIALS v4.0.0-dev
7 May 2018 Minor bugfix release, included with SUNDIALS v3.1.1
7 Nov 2017 Minor feature addition/bugfix release, included with SUNDIALS v3.1.0
26 Oct 2017 Major feature addition/bugfix release, included with SUNDIALS v3.0.0
26 Sep 2016 Major feature addition/bugfix release, included with SUNDIALS v2.7.0
3 Aug 2015 Minor feature addition/bugfix release, included with SUNDIALS v2.6.2
30 Mar 2015 Minor bugfix release, included with SUNDIALS v2.6.1
13 Mar 2015 First official ARKode release, included in the SUNDIALS v2.6.0 release
25 Feb 2014 Beta version of ARKode released, the public source code repository is open (see the Downloads page).

## The ARKStep module¶

ARKStep supports ODE systems posed in split, linearly-implicit form,

(1)$M \dot{y} = f_E(t,y) + f_I(t,y), \qquad y(t_0) = y_0,$

where $$t$$ is the independent variable, $$y$$ is the set of dependent variables (in $$\mathbb{R}^N$$), $$M$$ is a user-specified, nonsingular operator from $$\mathbb{R}^N$$ to $$\mathbb{R}^N$$, and the right-hand side function is partitioned into up to two components:

• $$f_E(t,y)$$ contains the “nonstiff” time scale components to be integrated explicitly, and
• $$f_I(t,y)$$ contains the “stiff” time scale components to be integrated implicitly.

Either of these operators may be disabled, allowing for fully explicit, fully implicit, or combination implicit-explicit (ImEx) time integration.

The algorithms used in ARKStep are adaptive- and fixed-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 right-hand side into explicit and implicit components (1), such methods have the potential to enable accurate and efficient time integration of stiff, nonstiff, and mixed stiff/nonstiff systems of ordinary differential equations. A key feature allowing for high efficiency of these methods is that only the components in $$f_I(t,y)$$ must be solved implicitly, allowing for splittings tuned for use with optimal implicit solver algorithms.

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.

For problems that include nonzero implicit term $$f_I(t,y)$$, the resulting implicit system (assumed nonlinear, unless specified otherwise) is solved approximately at each integration step, using a modified Newton method, inexact Newton method, or an accelerated fixed-point solver. For the Newton-based methods and the serial or threaded NVECTOR modules in SUNDIALS, ARKode may use a variety of linear solvers provided with SUNDIALS, including both direct (dense, band, or sparse) and preconditioned Krylov iterative (GMRES, BiCGStab, TFQMR, FGMRES, or PCG) linear solvers. When used with the MPI-based parallel, PETSc, hypre, CUDA, and Raja 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, we provide a banded preconditioner module called ARKBANDPRE that may be used with the Krylov solvers, while for the MPI-based parallel vector structure there is a preconditioner module called ARKBBDPRE which provides a band-block-diagonal preconditioner. Additionally, a user may supply more optimal, problem-specific preconditioner routines.

## The ERKStep module¶

ERKStep focuses specifically on problems posed in explicit form,

(2)$\dot{y} = f(t,y), \qquad y(t_0) = y_0.$

allowing for increased computational efficiency and memory savings. The algorithms used in ERKStep are adaptive- and fixed-step explicit Runge Kutta methods. As with ARKStep, the ERKStep module is packaged with adaptive explicit methods of orders 2-8.

## Contents¶

The remainder of this site is organized into the following topics:

## Support¶

This work is supported by the U.S. Department of Energy through the FASTMath SciDAC Institute, under subcontracts B598130, B621355 and B626484 from Lawrence Livermore National Laboratory.