The IFISS toolbox can be used to compute numerical solutions of partial differential equations (PDEs) that are used to model steady incompressible fluid flow. It includes algorithms for discretisation by finite element methods, fast iterative solution of the algebraic systems that arise from discretisation, and a posteriori error analysis of the computed discrete solutions. The package was designed to be used in conjunction with the monograph Finite Elements and Fast Iterative Solvers and was used to perform the computational experiments described therein. It is structured as a stand-alone package for studying discretisation algorithms for PDEs and for exploring and developing algorithms in numerical linear and nonlinear algebra for solving the associated discrete systems. It can also be used as a pedagogical tool for studying these issues, or more elementary ones such as the properties of Krylov subspace iterative methods.

There are currently twenty-eight built-in test problems based on common PDEs. Seventeen of them involve the Poisson equation and steady-state versions of the convection-diffusion equation, the Stokes equations and the Navier-Stokes equations. The first two of these equations are ubiquitous in scientific computing, and the latter two constitute the basis for computational modelling of the flow of an incompressible Newtonian fluid. The remaining eleven test problems are associated with the heat equation (which models variation in temperature), and time-dependent versions of the convection-diffusion equation, the Navier-Stokes equations and their Boussinesq flow combination.

The first main feature of the package concerns problem specification and finite element discretisation. For each of the equations listed above, IFISS offers a choice of two-dimensional domains on which the problem can be posed, along with boundary conditions and other aspects of the problem, and a choice of finite element approximation on a quadrilateral or rectangular element mesh. The package allows the study of accuracy of finite element solutions, different choices of elements, and a posteriori error analysis. In addition, special features associated with individual problems can be explored. These include the effects of boundary layers on solution quality for the convection-diffusion equation, and the effects of discrete inf-sup stability on accuracy for the Stokes and Navier-Stokes equations.

The second main feature of the package concerns iterative solution of the discrete algebraic systems that arise: either at every time step when solving an unsteady problem, or in the generation of a steady-state solution. The focus is on Krylov subspace methods that are chosen to match the underlying problem. For example, the discrete Poisson equation, which has a symmetric positive definite coefficient matrix, can be treated by the conjugate gradient method (CG) whereas the discrete convection-diffusion and Navier-Stokes equations require a method such as the generalized minimum residual method (GMRES), which is designed for nonsymmetric systems. The key for fast solution lies in the choice of effective preconditioning strategies. The package offers a range of options, including algebraic methods such as incomplete LU factorisations, as well as more sophisticated and state-of-the-art multigrid methods designed to take advantage of the structure of the discrete linearised Navier-Stokes equations. In addition, there is a choice of iterative strategies, Picard iteration or Newton's method, for solving the nonlinear algebraic systems arising from the latter problem.

A unique feature of the IFISS package is its comprehensive nature, where for each problem it addresses, it enables the study of both discretisation and iterative solution algorithms as well as the interaction between the two and the resulting effect on solution cost. It is organised in a modular fashion, with separate program units (typically Matlab functions) for individual tasks such as discretisation, error analysis and iterative solution, and other aspects such as problem definition and visualisation tools grouped in separate subdirectories. The package provides a convenient starting point for research projects that require the construction of new problem classes, discretisations or solution algorithms. A detailed description of how new problems can be incorporated into IFISS is given in the IFISS Installation & Software Guide.