version 3.10-dev
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
Directory Structure

Top Level

DuMux has the following folder structure, which is similar to other DUNE modules.

  • bin: executable scripts (Python/Bash) and helper tools, e.g. used for the automatic testing, post-processing, installation
  • cmake: the configuration options and build system files
  • doc: files necessary for the Doxygen documentation and various logos
  • dumux: the main folder, containing the source files. See below for more details.
  • examples: well-documented examples of applying DuMux to typical simulation scenarios of different complexity. The example documentation is best viewed with a browser via GitLab. In the README.md file of each example, the setup is explained and the code is presented and described in detail.
  • test: unit tests, integration tests and systems tests for each numerical model. The folder structure mimics the structure of the dumux folder (see below), the references folder contains solutions for the automatic testing. Each system (end user) test describes a full simulation. The setup usually consists of a main file (main.cc), the problem definition (problem.hh) specifying initial and boundary conditions, and a runtime parameter input file params.input. Often spatially-dependent parameters are defined in a separate header (spatialparams.hh).

The Folder dumux

  • adaptive: Data transfer between grid views, adaptation indicators.
  • assembly: Matrix assembler and residual calculation for all discretization methods.
  • common: Property system, base classes, boundary conditions, time stepping, splines, dimensionless numbers, type traits, ...
  • discretization: Infrastructure for discretizations (box, cell-centered, staggered, ...).
  • experimental: New features, may undergo disruptive changes.
  • flux: Calculation of advective and diffusive fluxes for different discretization schemes.
  • freeflow: Single-phase free flow models using Navier-Stokes and eddy-viscosity based Reynolds-averaged Navier-Stokes turbulence models, and shallow water equation model.
  • geomechanics: Elastic and poro-elastic geomechanics models.
  • geometry: Bounding boxes, intersections, distances, ...
  • io: In-/output functionalities such as restart files, gnuplot interface, VTKWriter extensions and grid managers.
  • linear: Linear solver backends.
  • material: Constitutive relations and their parameters, definition of components and fluid/solid phases.
  • multidomain: Common infrastructure to couple multiple domains of possibly different physics, dimensions and/or locations.
  • nonlinear: Newton's method.
  • parallel: Helper files for parallel simulations.
  • porenetwork: Models describing a porous medium as a set of pore bodies interconnected by pore throats.
  • porousmediumflow: Models for describing flow and mass/momentum/energy transport in a porous medium on the Darcy scale.
  • python: Definition of Python bindings for C++ functionalities.

🛠 Edit above doc on GitLab