.. DOLFINx installation docs Installation ============ DOLFINx can be installed using various packages managers, run using containers, or built manually from source. Binaries -------- See the `README.md `_ for recommendations and instructions. Source ------ Installation of DOLFINx requires installation of the C++ core. Most users will also want the Python interface. Dependencies ^^^^^^^^^^^^ C++ *** .. rubric:: Required - C++ compiler (supporting the C++20 standard) - `Basix `_ (C++ interface) - `Boost `_ - `CMake `_ [build dependency] - HDF5 (with MPI support enabled) - MPI (MPI-3 or later) - `pkg-config `_ [build dependency via CMake] - `pugixml `_ - `spdlog `_ - UFCx [``ufcx.h``, provided by FFCx Python package or FFCx UFCx CMake install at ``ffcx/cmake/*``] - At least one of ParMETIS [2]_, KaHIP or PT-SCOTCH [2]_ From ParMETIS, KaHIP or PT-SCOTCH, ParMETIS is recommended. .. rubric:: Optional - `ADIOS2 `_ (additional parallel IO support) - `PETSc `_ [1]_ (linear and non-linear problems) - `SLEPc `_ (eigenvalue problems) - `SuperLU_DIST `_ [2]_ (linear problems with ``dolfinx::la::MatrixCSR``). .. rubric:: Optional for demos - FFCx PETSc and FFCx are optional but recommended. Python interface **************** Requirements for the Python interface. Please see ``python/pyproject.toml`` for precise specification. Below we use the `pypi `_ package names. .. rubric:: Build system requirements - Python - DOLFINx C++ interface and all requirements - `scikit-build-core[pyproject] `_ - `mpi4py `_ - `nanobind `_ (static linking) - petsc4py (recommended, optional) .. rubric:: Required runtime dependencies - Python - fenics-basix, fenics-ffcx and fenics-ufl - `cffi `_ - `mpi4py `_ - `numpy `_ .. rubric:: Optional runtime dependencies - petsc4py (linear and non-linear problems, recommended) - numba (custom kernels and assemblers) - `pyamg `_ + scipy (serial linear problems) .. rubric:: Optional for demos - gmsh - networkx - numba - matplotlib - petsc4py - pyamg - pyvista - scipy - slepc4py Building and installing ^^^^^^^^^^^^^^^^^^^^^^^ C++ *** The C++ library is built using CMake. Create a build directory in ``cpp/``, e.g. ``mkdir -p build/`` and in the build run directory:: cmake ../ make install To set the installation prefix:: cmake -DCMAKE_INSTALL_PREFIX= ../ make install Python ****** After installation of the C++ interface, from the ``python/`` directory the Python interface can be installed using:: python -m scikit_build_core.build requires | python -c "import sys, json; print(' '.join(json.load(sys.stdin)))" | xargs pip install pip install --check-build-dependencies --no-build-isolation . .. rubric:: Footnotes .. [1] Its is recommended to configure with ParMETIS, PT-SCOTCH, MUMPS and Hypre using ``--download-parmetis --download-ptscotch --download-suitesparse --download-mumps --download-hypre``. macOS users should additionally configure MUMPS via PETSc with ``--download-mumps-avoid-mpi-in-place``. .. [2] PETSc can also download, configure and build these libraries.