The issue of how to develop reusable software in scientific computing is addressed. With object-oriented analysis and design, an extendable set of collaborating objects - a framework named COMPOSE - is suggested in the area of "PDE solvers", i.e., programs that numerically solve partial differential equations (PDEs).
Objects have several advantages. First, they represent abstractions from the problem domain, here the field of scientific computing. Second, with careful object-oriented analysis and design, these objects can be reused in different contexts. Third, the resulting programs are very flexible, and it is possible to change the mathematical problem or the numerical method, by only replacing a few objects. Fourth, new kinds of objects can be created via the object-oriented concept of inheritance. This is useful, e.g., when the numerical simulation of a new kind of PDE is addressed.
COMPOSE handles finite differences on three-dimensional overlapping grids, a variety of time stepping methods, and several types of PDEs, including hyperbolic, parabolic, and elliptic PDEs. In particular, COMPOSE offers a flexible coupling of PDEs, which increases reusability and encourages development of components separately. To this end, COMPOSE also supports a debugging technique for verification of new numerical components.
As an application of COMPOSE, the incompressible Navier-Stokes equations are solved in a two-dimensional domain. Comparisons with another fluid solver, developed in a more traditional way, show that solvers written with COMPOSE are competitive with respect to performance. In addition, they have a higher degree of flexibility and reusability.