DuMux features compositional and immiscible, isothermal and non-isothermal, equilibrium and non-equlibrium models for multi-phase multi-component flow and transport in porous media with preimplemented but easily extensible constitutive relations, fluid properties.
DuMux can be used to solve systems of Advection-Diffusion-Reaction equations in both porous and pure media. Reactive transport models including phase separation models such as the Cahn-Hilliard equations are also within the DuMux feature set.
DuMux can solve laminar and turbulent flow problems (DNS and RANS with various turbulence models). The free flow solver can be coupled to porous media or pore network models.
DuMux can solve Richards equation for flow in the unsaturated zone as well as extensions of Richards equation considering multiple components or adding vapor diffusion in the gas phase.
DuMux can be used to solve solid mechanics problems including linear elasticity, hyperelasticity, and poro-elasticity (Biot-like), also in combination with fluid flow models.
DuMux can solve the 2D shallow-water equations including different bottom-friction models, basic turbulence models, and surface drying/wetting on structured and unstructured grids. Typical applications include river modelling and surface runoff.
DuMux features single and multi-phase pore-network models. Its specialty is dynamic and implicit pore-network models. The local rules are easily customizable. A dual network model allows to couple fluid flow and solid skeleton network models (e.g. heat transfer, phase change).
DuMux can be used to solve systems with embedded transport networks such as capillary-tissue coupling, root-soil interaction, discrete fracture models.
DuMux can couple problems posed on different domains. The domains can touch or overlap, model different physics, have different dimensions, different grids, different discretization methods. The full system Jacobian is approximated by numeric differentiation.
DuMux offers a range of finite volume schemes (FV), such as the cell-centered Tpfa and Mpfa methods, or the vertex-centered Box method and other control-volume finite element schemes (CVFE).
DuMux is written in modern C++17 using generic programming techniques. This makes the code fast and flexible. DuMux is a DUNE (Distributed and Unified Numerics Environment) module.
DuMux supports parallel simulations using a distributed memory parallelism based on MPI and shared memory parallelism with several backends (OpenMP, TBB, Kokkos) out-of-the-box for many models.
DuMux supports output to VTK-based file formats that are readily visualised e.g. using the open-source software ParaView.
DuMux offers various scripts simplying the creation of self-contained modules, installation scripts, and Docker images to improve reproducibility (also see dumux-pub). We also support simulation meta data extraction.
DuMux has Python bindings. The current state is experimental and only a few features are accessible from Python (see tests). Reach out to us if you have a use case.