6.1. Introduction

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

IDAS is a general purpose solver for the initial value problem (IVP) for systems of differential-algebraic equations (DAEs). The name IDAS stands for Implicit Differential-Algebraic solver with Sensitivity capabilities. IDAS is an extension of the IDA solver within SUNDIALS, itself based on on DASPK [27, 28], 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 IDAS shares significant modules previously written within CASC at LLNL to support the ordinary differential equation (ODE) solvers CVODE [42, 87] and PVODE [33, 34], and also the nonlinear system solver KINSOL [88].

At present, IDAS 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) [132], FGMRES (Flexible Generalized Minimum RESidual) [131], Bi-CGStab (Bi-Conjugate Gradient Stabilized) [167], TFQMR (Transpose-Free Quasi-Minimal Residual) [65], and PCG (Preconditioned Conjugate Gradient) [78] 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.

IDAS is written with a functionality that is a superset of that of IDA. Sensitivity analysis capabilities, both forward and adjoint, have been added to the main integrator. Enabling forward sensitivity computations in IDAS will result in the code integrating the so-called sensitivity equations simultaneously with the original IVP, yielding both the solution and its sensitivity with respect to parameters in the model. Adjoint sensitivity analysis, most useful when the gradients of relatively few functionals of the solution with respect to many parameters are sought, involves integration of the original IVP forward in time followed by the integration of the so-called adjoint equations backward in time. IDAS provides the infrastructure needed to integrate any final-condition ODE dependent on the solution of the original IVP (in particular the adjoint system).

6.1.1. Changes to SUNDIALS in release 7.9.0

New Features and Enhancements

Updated the MRIStep module in ARKODE to support extended Super Time Stepping (ExtSTS) methods for multi-physics simulations involving parabolic components, through the MRIStepCreateExtSTS() function. See the documentation section on the mathematical methods in MRIStep for more details on the structure of ExtSTS methods, and the documentation section on a skeleton of usage for MRIStep for details on its usage.

Added Butcher tables for the classical RK4 (ARKODE_KUTTA_RK4a_4_4) and 3/8-rule (ARKODE_KUTTA_RK4b_4_4) methods.

Added CUDA support to the sundials4py Python interface. CUDA N_Vectors can be used with CUDA device arrays from CuPy, PyTorch and JAX when built with SUNDIALS_ENABLE_CUDA set to ON.

The KLU SUNLinearSolver is now available in sundials4py.

sundials4py now has a N_VGetNumpyArray function which should be used instead of N_VGetArrayPointer.

The SUNLinearSolver interface to SuperLU_DIST now supports single precision.

Added the function N_VSetDeviceArrayPointer() to the N_Vector API to set the device data pointer for vector implementations with a device memory space.

Added the SUNDIALS_ENABLE_DEPRECATED_WARNINGS CMake option to allow users to disable compiler warnings emitted by deprecated SUNDIALS API annotations.

Bug Fixes

Fixed a bug where the factor provided by ARKodeSetEpsLin was scaled by 0.1. To restore the original behavior, call ARKodeSetEpsLin with an argument of 0.005.

Fixed bug in SUNNonlinearSolver_Auto which resulted in premature switch to Newton from fixed point due to convergence rate check occurring after only one iteration.

Fixed duplicate keys in IDA and IDAS logging output from consistent initial condition solves and order selection diagnostics.

Deprecation Notices

Renamed the ARKODE_ARK2_ERK_3_1_2, ARKODE_ARK2_DIRK_3_1_2, ARKODE_ASCHER_ERK_3_1_2, and ARKODE_ASCHER_SDIRK_3_1_2 Butcher tables to ARKODE_GKC21_ERK_3_1_2, ARKODE_GKC21_ESDIRK_3_1_2, ARKODE_ARS222_ERK_3_1_2, and ARKODE_ARS222_ESDIRK_3_1_2, respectively, to reflect the original inventors of each method. The previous table names are deprecated and will be removed in a future release.

Renamed the ARKODE_IMEX_MRI_GARK_ARK2 and ARKODE_IMEX_MRI_GARK_ASCHER_ARK2 multirate coupling tables to ARKODE_IMEX_MRI_GARK_GKC21 and ARKODE_IMEX_MRI_GARK_ARS222 to reflect the original inventors of the base Runge–Kutta tables on which these are based. The previous table names are deprecated and will be removed in a future release.

For changes in prior versions of SUNDIALS see §19.

6.1.2. Reading this User Guide

The structure of this document is as follows:

  • In Chapter §6.2, we give short descriptions of the numerical methods implemented by IDAS for the solution of initial value problems for systems of DAEs, along with short descriptions of preconditioning (§6.2.3) and rootfinding (§6.2.4).

  • The following chapter describes the software organization of the IDAS solver (§6.3).

  • Chapter §6.4.1 is the main usage document for IDAS for simulation applications. It includes a complete description of the user interface for the integration of DAE initial value problems. Readers that are not interested in using IDAS for sensitivity analysis can then skip the next two chapters.

  • Chapter §6.4.4 describes the usage of IDAS for forward sensitivity analysis as an extension of its IVP integration capabilities. We begin with a skeleton of the user main program, with emphasis on the steps that are required in addition to those already described in Chapter §6.4.1. Following that we provide detailed descriptions of the user-callable interface routines specific to forward sensitivity analysis and of the additional optional user-defined routines.

  • Chapter §6.4.5 describes the usage of IDAS for adjoint sensitivity analysis. We begin by describing the IDAS checkpointing implementation for interpolation of the original IVP solution during integration of the adjoint system backward in time, and with an overview of a user’s main program. Following that we provide complete descriptions of the user-callable interface routines for adjoint sensitivity analysis as well as descriptions of the required additional user-defined routines.

  • 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 IDAS, within the structure of SUNDIALS (Appendix §1.1), as well as a list of all the constants used for input to and output from IDAS functions (Appendix §6.5).

6.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.