IDA is a package for the solution of differential-algebraic equation (DAE) systems in the form F(t,y,y')=0. It is written in C, but derived from the package DASPK which is written in Fortran. The integration method in IDA is variable-order, variable-coefficient BDF in fixed-leading-coefficient form. The method order varies between 1 and 5. The solution of the resulting nonlinear system is accomplished with some form of Newton iteration. In the cases of a direct linear solver (dense, banded, or sparse), the nonlinear iteration is a Modified Newton iteration, in that the Jacobian is fixed (and usually out of date). When using any of the Krylov methods as the linear solver, the iteration is an Inexact Newton iteration, using the current Jacobian (through matrix-free products), in which the linear residual is nonzero but controlled.
The implicit nonlinear systems within implicit integrators are solved approximately at each integration step using a modified Newton method, an Inexact Newton method, or a fixed-point solver (functional iteration). For the Newton-based methods and the serial or threaded NVECTOR modules in SUNDIALS, IDA provides both direct (dense, band, or sparse) and preconditioned Krylov iterative (GMRES, BiCGStab, TFQMR) linear solvers. When used with one of the distributed parallel NVECTOR modules, including PETSc and hypre vectors, 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. In addition to the basic Krylov method modules, the IDA package also contains a preconditioner module called IDABBDPRE, which provides a band-block-diagonal preconditioner for use with the distributed memory parallel vector.
For use with Fortran applications, a set of Fortran/C interface routines, called FIDA, is also supplied. These are written in C, but assume that the user calling program and all user-supplied routines are in Fortran.
See Software page for download and documentation.