DuMux — DUNE for Multi-{Phase, Component, Scale, Physics, …} flow and transport in porous media
DuMux is a simulation framework with a focus on finite volume discretization methods, model coupling for multi-physics applications, and flow and transport applications in porous media.
I am one of the main developers of the open-source simulator DuMux.
Visit the DuMux website or the official DuMux GitLab repository to learn more.
Recent ideas and concepts behind DuMux are described in our recent publication: T. Koch, D. Gläser, K. Weishaupt et al (2021) “DuMux 3 – an open-source simulator for solving flow and transport problems in porous media with a focus on model coupling”. Computers & Mathematics in Applications.
In brief: DuMux is based on the DUNE framework from which it uses the versatile grid interface, vector and matrix types, geometry and local basis functions, and linear solvers. DuMux then provides
- Finite volume discretizations (Tpfa, Mpfa, Staggered) and control-volume finite element discretization schemes
- A flexible system matrix assembler and approximation of the Jacobian matrix by numeric differentation
- A customizable Newton method implementation including line search and various stopping criteria
- Many preimplemented models (Darcy-scale porous media flow, Navier-Stokes, Geomechanics, Pore network models, Shallow water equations) and constitutive models
- A multi-domain framework for model coupling suited to couple subproblems with different discretizations/domains/physics/dimensions and create monolithic solvers
Distributed Unified Numerics Environment (DUNE)
DUNE is a great modular C++ toolbox for numerics and in particular famous for its versatile grid interface. I am a core developer of DUNE, the Distributed Unified Numerics Environment.
Check out the DUNE project website or the official DUNE GitLab repositories to learn more.
dune-foamgrid
Dune::FoamGrid
implements the DUNE grid interface for surface and network grids embedded in higher dimensional space.
I am one of the maintainers of the library.
Visit the official GitLab repository to learn more.
The ideas, concepts, and the interface of Dune::FoamGrid are described in our publication: O. Sander, T. Koch, N. Schröder, B. Flemisch (2017) “The Dune FoamGrid implementation for surface and network grids.” Archive of Numerical Software 5 (1), 217-244
dune-testtools
dune-testtools
is a library that helps to create system tests. It implementes a parser
for an extended Dune INI format called meta ini, a domain-specific language for specifying parameter combinations.
In particular these can be both runtime and compile time parameterizations.
Visit the official GitLab repository to learn more.
The concepts are described in our publication: D. Kempf, T. Koch (2017) “System testing in scientific numerical software frameworks using the example of DUNE.” Archive of Numerical Software 5 (1), 151-168
fieldcompare
fieldcompare
is a Python package with command-line interface (CLI) and Python API that can be used to compare
datasets for (fuzzy) equality. It helps to realize regression tests for in software testing.
The focus is particularly research software that deals with numerical simulations on meshes.
In regression tests, the output of a software is compared to reference data that was produced by
the same software at an earlier time, in order to detect if changes to the code cause unexpected
changes to the behavior of the software.
I am a contributor to the project whose main developer is Dennis Gläser (University of Stuttgart). Visit the official GitLab repository to learn more.
The ideas, concepts, and the interface of fieldcompare are described in our publication: D. Gläser, T. Koch, S. Peters, S. Marcus, B. Flemisch (2023). fieldcompare: A Python package for regression testing simulation results. Journal of Open Source Software, 8(81), 4905