DOLFINx is the computational environment of FEniCSx and implements the FEniCS Problem Solving Environment in C++ and Python. DOLFINx is a new version of DOLFIN and is actively developed.
For questions about using DOLFINx, visit the FEniCS Discourse page or use the FEniCS Slack channel (use this link to sign up to the Slack channel).
Documentation can be viewed here.
DOLFINx can be installed from binary packages or source.
Recommendations
- Most users: conda or pip (beta) on Linux, macOS and Windows. pip does not include PETSc yet, and conda does not include PETSc on Windows.
- With PETSc: conda (Linux and macOS), Ubuntu/Debian packages or Docker. On Windows, install WSL2 and use Ubuntu.
- High performance computers: Spack or from source, both using system-provided MPI.
To install the latest release of the Python interface, including pyvista for visualisation, using conda:
conda create -n fenicsx-env
conda activate fenicsx-env
conda install -c conda-forge fenics-dolfinx mpich pyvista # Linux and macOS
conda install -c conda-forge fenics-dolfinx pyvista pyamg # WindowsWindows only: PETSc and petsc4py are not available on Windows. Because FEniCS uses just-in-time compilation it is necessary to install Microsoft Visual Studio.
conda is distributed with Anaconda and Miniconda. The recipe is hosted on conda-forge.
| Name | Downloads | Version | Platforms |
|---|---|---|---|
The Ubuntu PPA provides FEniCSx packages. To install:
add-apt-repository ppa:fenics-packages/fenics
apt update
apt install fenicsxWhen a version of DOLFINx is released we aim to provide a package for the most recent LTS version of Ubuntu. All other versions are provided on a best-effort basis.
DOLFINx is included
with various
versions
of Debian. Install with apt-get install fenicsx.
To run a Docker image with the latest release of DOLFINx:
docker run -ti dolfinx/dolfinx:stableTo switch between real and complex builds of DOLFINx/PETSc.
source /usr/local/bin/dolfinx-complex-mode
source /usr/local/bin/dolfinx-real-modeA Jupyter Lab environment with the latest release of DOLFINx:
docker run --init -ti -p 8888:8888 dolfinx/lab:stable # Access at http://localhost:8888A Docker image with DOLFINx built nightly:
docker run -ti dolfinx/dolfinx:nightlyA development image with all of the dependencies required to build the latest release of the FEniCSx components:
docker run -ti dolfinx/dev-env:stableA development image with all of the dependencies required
to build the main branch of the FEniCSx components:
docker run -ti dolfinx/dev-env:currentThe Docker images support arm64 and amd64 architectures. For a full list of tags, including versioned images, see https://hub.docker.com/u/dolfinx
Beta binary wheels of main are built twice a week and available from
Test PyPI for Python 3.12+. They are built without
PETSc and with SuperLU_DIST for sparse direct solves.
Linux (x86_64 and aarch64):
python3 -m venv fenicsx-env
source fenicsx-env/bin/activate
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ "fenics-dolfinx>=0.12.0.dev0" mpichThe Linux wheels need glibc 2.34 or later, e.g. RHEL 9 or Ubuntu 22.04. Check
with ldd --version. On older systems pip reports from versions: none.
macOS (Apple silicon and Intel), with the Xcode Command Line Tools:
python3 -m venv fenicsx-env
source fenicsx-env/bin/activate
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ "fenics-dolfinx>=0.12.0.dev0" openmpiThe macOS wheels need macOS 15 or later. Check with sw_vers -productVersion.
On older systems pip reports from versions: none.
Windows (x86_64), in PowerShell:
# Or install Python 3.12 or later and the Visual Studio C++ build tools manually
winget install -e --id Python.Python.3.13
winget install -e --id Microsoft.VisualStudio.2022.BuildTools --override "--quiet --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"Then in a new PowerShell:
py -3 -m venv fenicsx-env
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned -Force
fenicsx-env\Scripts\Activate.ps1
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ "fenics-dolfinx>=0.12.0.dev0" impi-rt
# Put mpiexec from impi-rt on the PATH, in each new session
$env:Path = "$env:VIRTUAL_ENV\Library\bin;$env:Path"Check that mpiexec comes from fenicsx-env, since another MPI on the PATH,
e.g. from Homebrew, can shadow it. which -a mpiexec on Linux and macOS, or
Get-Command -All mpiexec on Windows, should list the virtual environment's
mpiexec first.
With uv pip install, also pass --index-strategy unsafe-best-match.
For detailed instructions and a list of dependencies, see here.
To build and install the C++ core, in the cpp/ directory, run:
mkdir build
cd build
cmake ..
make installTo install the Python interface, first install the C++ core, and then in
the python/ directory run:
pip install --group pyproject.toml:build
pip install --check-build-dependencies --no-build-isolation .To build the most recent release using Spack (assuming a bash-compatible shell):
git clone https://github.com/spack/spack.git
. ./spack/share/spack/setup-env.sh
spack env create fenicsx-env
spack env activate fenicsx-env
spack install --add py-fenics-dolfinx+petsc4py+slepc4pySpack is the recommended approach for HPC systems.
Although Spack already contains FEniCS Project packages, we also maintain a separate overlay package repository which may contain bug fixes and package specs for newer releases of the FEniCS Project components, particularly after a recent release.
spack repo add https://github.com/fenics/spack-fenics
spack repo ls # shows fenics above builtinInformation about how to contribute to DOLFINx can be found here.
DOLFINx is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
DOLFINx is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with DOLFINx. If not, see https://www.gnu.org/licenses/.