212 1998 Krister Åhlander krister@tdb.uu.se Rapid Development of PDE Solvers
Abstract
--------
A framework, Compose, for rapid development of ``PDE solvers'' is presented.
PDE solvers are programs that solve PDEs (partial differential equations) numerically.
Inheritance hierarchies are used for Compose's key abstractions. Thus, it is
possible to extend the framework with, for instance, new equations or new time
stepping methods.
The implementation of two solvers for the incompressible Navier--Stokes
equations demonstrates the feasibility of our approach. The second solver
is an evolvement of the first. This stepwise development illustrates how
Compose supports the iterative nature of software development. Moreover,
each equation is developed individually as a component. For each new
component, the framework encourages a verification methodology, based
on a technique of analytical solution forcing.
Compose solvers are put together by assembling different components.
Each component, including initial conditions and boundary conditions,
is visible on the highest programming level. It is therefore easy to
experiment with different solver set-ups just by changing a few
lines in the main program. A GUI is used to inspect the set-up and to
change parameters interactively. A Compose solver may be attached with
``monitors'', that can be tailored to control and steer the numerical
experiment without changing the core of the solver.
The solvers for the incompressible
Navier--Stokes equations and a solver implemented with a more traditional
design are compared. We find that the modest overhead of using our high level
framework is compensated by the following advantages: It is easier to
extend our solver with new equations; and it is easier to reuse the
individual pieces in other solvers.