Getting started¶
This section is for users who know C++ and numerical methods, but are new to DUNE. It is also written for users coming from frameworks like FEniCS, deal.II, Firedrake, or MFEM.
What you need to understand first¶
DUNE is not one monolithic package. It is a collection of modules. For core C++ workflows, the key modules are:
dune-commondune-geometrydune-griddune-istldune-localfunctions
Most source-based workflows are built around:
dunecontrolfor configuring/building module sets,dune.modulemetadata for dependency resolution,- CMake targets (for example
Dune::Grid) in your own module or project.
Installation paths¶
There are three common ways to start:
- Distribution packages (fastest for trying DUNE).
- Build from source (most flexible for development and extensions).
- Python-focused installation (if your main workflow is Python bindings).
For this tutorial, we use a source-based setup so examples stay reproducible and editable.
Tutorial-specific convenience¶
Use the repository script:
./setup-env.sh
source _env/activate.sh
This prepares a local _env/ with core modules, opts files, and activation helpers.
It is convenient for this tutorial, but the concepts transfer directly to a general DUNE setup.
What to read next¶
- Installation for concise setup guidance and official references.
- First program and example build layout for building and running your first standalone DUNE examples.
Summary and next steps¶
You now have the overview of how to start with DUNE in this tutorial. Continue with Installation to create a working environment.