FEniCS / dolfinx

Next generation FEniCS problem solving environment
https://fenicsproject.org
GNU Lesser General Public License v3.0
787 stars 182 forks source link
fenicsx finite-element-methods parallel-computing partial-differential-equations

DOLFINx

DOLFINx CI Actions Docker images Actions Spack build Actions Conda install Actions macOS/Homebrew install Actions Windows/vcpkg install

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

Documentation can be viewed at https://docs.fenicsproject.org.

Installation

From source

C++ core

To build and install the C++ core, in the cpp/ directory, run:

mkdir build
cd build
cmake ..
make install

Python interface

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

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.

Binary

Recommendations

conda

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
Conda Recipe Conda Downloads Conda Version Conda Platforms

Ubuntu packages

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.

Debian packages

DOLFINx is included with various versions of Debian. Install with apt-get install fenicsx.

Docker images

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

Contributing

Information about how to contribute to DOLFINx can be found here.

License

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/.

Contact

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:

https://github.com/FEniCS/dolfinx