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.
Documentation can be viewed at https://docs.fenicsproject.org.
To build and install the C++ core, in the cpp/
directory, run:
mkdir build
cd build
cmake ..
make install
To install the Python interface, first install the C++ core, and then in
the python/
directory run:
pip install -r build-requirements.txt
pip install --check-build-dependencies --no-build-isolation .
For detailed instructions, see https://docs.fenicsproject.org/dolfinx/main/python/installation.
Spack is recommended for building DOLFINx on HPC systems. 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 add fenics-dolfinx+adios2 py-fenics-dolfinx cflags="-O3" fflags="-O3"
spack install
See the Spack documentation for comprehensive instructions.
Recommendations
- macOS: conda.
- Linux: apt (Ubuntu/Debian), docker or conda. See also Spack.
- Windows: docker, or install WSL2 and use Ubuntu. conda packages in beta testing.
- 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 # Windows
Windows only: Windows conda packages are currently in beta testing. PETSc and
petsc4py are not available on Windows; as an alternative we recommend using
pyamg
following python/demo/demo_pyamg.py
. Because FEniCS uses just-in-time
compilation it 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 fenicsx
When 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:stable
To switch between real and complex builds of DOLFINx/PETSc.
source /usr/local/bin/dolfinx-complex-mode
source /usr/local/bin/dolfinx-real-mode
A Jupyter Lab environment with the latest release of DOLFINx:
docker run --init -ti -p 8888:8888 dolfinx/lab:stable # Access at http://localhost:8888
A Docker image with DOLFINx built nightly:
docker run -ti dolfinx/dolfinx:nightly
A development image with all of the dependencies required to build the latest release of the FEniCSx components:
docker run -ti dolfinx/dev-env:stable
A development image with all of the dependencies required
to build the main
branch of the FEniCSx components:
docker run -ti dolfinx/dev-env:current
The Docker images support arm64 and amd64 architectures. For a full list of tags, including versioned images, see https://hub.docker.com/u/dolfinx
Information 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/.
For questions about using DOLFINx, visit the FEniCS Discourse page:
https://fenicsproject.discourse.group/
or use the FEniCS Slack channel:
https://fenicsproject.slack.com/
(use https://join.slack.com/t/fenicsproject/shared_invite/zt-1lraknsp1-6_3Js5kueDIyWgF192d3nA to sign up)
For bug reports visit: