DuMux aims to be a generic framework for the simulation of multiphase fluid flow and transport processes in porous media using continuum mechanical approaches. At the same time, DuMux aims to deliver reasonable computational performance, high flexibility, a sound software architecture and the ability to run on anything from single processor systems to parallel supercomputers. The means to achieve these somewhat contradictory goals are an object-oriented design in conjunction with template programming, employing C++ as the implementation language.
One of the more complex issues when dealing with parallel continuum models is managing the grids used for the spatial discretization of the computational domain. To this end, DuMux is built on top of DUNE, the Distributed and Unified Numerics Environment. DUNE provides a generic interface to several existing grid managers such as UG, ALUGrid. It extensively uses template programming in order to achieve minimal overhead when accessing the underlying grid libraries. In addition to the computational grids, DUNE also provides several state-of-the-art solvers for linear systems.
DuMux comes in form of an additional DUNE module dumux that depends on the DUNE core modules. The main intention of DuMux is to provide a framework for an easy and efficient implementation of new physical models for porous media flow problems, ranging from problem formulation and the selection of spatial and temporal discretization schemes as well as nonlinear solvers, to general concepts for model coupling. Moreover, DuMux includes ready to use numerical models and a few example applications.