5.1. Introduction

IDA is part of a software family called SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic equation Solvers [75]. This suite consists of CVODE, ARKODE, KINSOL, and IDA, and variants of these with sensitivity analysis capabilities, CVODES and IDAS.

IDA is a general purpose solver for the initial value problem (IVP) for systems of differential-algebraic equations (DAEs). The name IDA stands for Implicit Differential-Algebraic solver. IDA is based on DASPK [25, 26], but is written in ANSI-standard C rather than Fortran77. Its most notable features are that, (1) in the solution of the underlying nonlinear system at each time step, it offers a choice of Newton/direct methods and a choice of Inexact Newton/Krylov (iterative) methods; and (2) it is written in a data-independent manner in that it acts on generic vectors and matrices without any assumptions on the underlying organization of the data. Thus IDA shares significant modules previously written within CASC at LLNL to support the ordinary differential equation (ODE) solvers CVODE [40, 78] and PVODE [31, 32], and also the nonlinear system solver KINSOL [79].

At present, IDA may utilize a variety of Krylov methods provided in SUNDIALS that can be used in conjunction with Newton iteration: these include the GMRES (Generalized Minimal RESidual) [115], FGMRES (Flexible Generalized Minimum RESidual) [114], Bi-CGStab (Bi-Conjugate Gradient Stabilized) [146], TFQMR (Transpose-Free Quasi-Minimal Residual) [61], and PCG (Preconditioned Conjugate Gradient) [70] linear iterative methods. As Krylov methods, these require little matrix storage for solving the Newton equations as compared to direct methods. However, the algorithms allow for a user-supplied preconditioner, and, for most problems, preconditioning is essential for an efficient solution.

For very large DAE systems, the Krylov methods are preferable over direct linear solver methods, and are often the only feasible choice. Among the Krylov methods in SUNDIALS, we recommend GMRES as the best overall choice. However, users are encouraged to compare all options, especially if encountering convergence failures with GMRES. Bi-CGFStab and TFQMR have an advantage in storage requirements, in that the number of workspace vectors they require is fixed, while that number for GMRES depends on the desired Krylov subspace size. FGMRES has an advantage in that it is designed to support preconditioners that vary between iterations (e.g. iterative methods). PCG exhibits rapid convergence and minimal workspace vectors, but only works for symmetric linear systems.

5.1.1. Changes to SUNDIALS in release 7.2.1

** New Features and Enhancements **

Unit tests were separated from examples. To that end, the following directories were moved out of the examples/ directory to the test/unit_tests directory: nvector, sunmatrix, sunlinsol, and sunnonlinsol.

Bug Fixes

Fixed a bug in ARKStep where an extra right-hand side evaluation would occur each time step when enabling the ARKodeSetAutonomous() option and using an IMEX method where the DIRK table has an implicit first stage and is not stiffly accurate.

For changes in prior versions of SUNDIALS see §16.

5.1.2. Reading this User Guide

The structure of this document is as follows:

  • In Chapter §5.2, we give short descriptions of the numerical methods implemented by IDA for the solution of initial value problems for systems of DAEs, along with short descriptions of preconditioning (§5.2.3) and rootfinding (§5.2.4).

  • The following chapter describes the software organization of the IDA solver (§5.3).

  • Chapter §5.4 is the main usage document for IDA for C and C++ applications. It includes a complete description of the user interface for the integration of DAE initial value problems. This is followed by documentation for using IDA with Fortran applications and on GPU accelerated systems.

  • Chapter §8 gives a brief overview of the generic N_Vector module shared among the various components of SUNDIALS, as well as details on the N_Vector implementations provided with SUNDIALS.

  • Chapter §9 gives a brief overview of the generic SUNMatrix module shared among the various components of SUNDIALS, and details on the SUNMatrix implementations provided with SUNDIALS.

  • Chapter §10 gives a brief overview of the generic SUNLinearSolver module shared among the various components of SUNDIALS. This chapter contains details on the SUNLinearSolver implementations provided with SUNDIALS. The chapter also contains details on the SUNLinearSolver implementations provided with SUNDIALS that interface with external linear solver libraries.

  • Chapter §11 describes the SUNNonlinearSolver API and nonlinear solver implementations shared among the various components of SUNDIALS.

  • Finally, in the appendices, we provide detailed instructions for the installation of IDA, within the structure of SUNDIALS (Appendix §1.1), as well as a list of all the constants used for input to and output from IDA functions (Appendix §5.5).

5.1.3. SUNDIALS License and Notices

All SUNDIALS packages are released open source, under the BSD 3-Clause license for more details see the LICENSE and NOTICE files provided with all SUNDIALS packages.