DescriptionΒΆ

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.