5.1. Introduction
IDA is part of a software family called SUNDIALS: SUite of Nonlinear and DIfferential/ALgebraic equation Solvers [81]. 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 [26, 27], 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 [41, 84] and PVODE [32, 33], and also the nonlinear system solver KINSOL [85].
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) [122], FGMRES (Flexible Generalized Minimum RESidual) [121], Bi-CGStab (Bi-Conjugate Gradient Stabilized) [157], TFQMR (Transpose-Free Quasi-Minimal Residual) [64], and PCG (Preconditioned Conjugate Gradient) [76] 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 X.Y.Z
Major Features
SUNDIALS now has official Python interfaces! With this release, we are shipping a beta version of the sundials4py Python module (created with nanobind and litgen). sundials4py provides explicit interfaces to most features of SUNDIALS.
New Features and Enhancements
The functions CVodeGetUserDataB and IDAGetUserDataB were added to CVODES
and IDAS, respectively.
Bug Fixes
The interface to Ginkgo batched linear solvers has been updated to fix build errors when using 64-bit index types. Note, only the batched dense matrix in Ginkgo is currently compatible with 64-bit indexing (as of Ginkgo 1.10).
The SPRKStep module now accounts for zero coefficients in the SPRK tables, eliminating extraneous function evaluations.
A bug preventing a user supplied SUNStepper_ResetCheckpointIndex()
function from being called was fixed.
The Kokkos N_Vector now properly handles unmanaged views. Previously, if a
Kokkos N_Vector was created from an unmanaged view, the view would become a
managed view and the data would be freed unexpectedly.
Deprecation Notices
SUNDIALSFileOpen and SUNDIALSFileClose will be removed in the next major release.
Use SUNFileOpen() and SUNFileClose() instead.
The Convert methods on the sundials::kokkos:Vector, sundials::kokkos::DenseMatrix,
sundials::ginkgo::Matrix, sundials::ginkgo::BatchMatrix, sundials::kokkos::DenseLinearSolver,
sundials::ginkgo::LinearSolver, and sundials::ginkgo::BatchLinearSolver classes have
been deprecated and will be removed in the next major release. The method get, should
be used instead.
The CSC_MAT and CSR_MAT macros defined in sunmatrix_sparse.h will be removed in
the next major release. Use SUN_CSC_MAT and SUN_CSR_MAT instead.
The N_Vector_S typedef to N_Vector* is deprecated and will be removed in the next major release.
For changes in prior versions of SUNDIALS see §18.
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_Vectormodule shared among the various components of SUNDIALS, as well as details on theN_Vectorimplementations provided with SUNDIALS.Chapter §9 gives a brief overview of the generic
SUNMatrixmodule shared among the various components of SUNDIALS, and details on theSUNMatriximplementations provided with SUNDIALS.Chapter §10 gives a brief overview of the generic
SUNLinearSolvermodule shared among the various components of SUNDIALS. This chapter contains details on theSUNLinearSolverimplementations provided with SUNDIALS. The chapter also contains details on theSUNLinearSolverimplementations provided with SUNDIALS that interface with external linear solver libraries.Chapter §11 describes the
SUNNonlinearSolverAPI 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.