Files
firedrake-conda/environment.yml
2026-02-08 21:04:59 -06:00

99 lines
2.3 KiB
YAML
Executable File

# Firedrake + icepack conda environment
#
# This provides all the compiled/native dependencies (PETSc, MPI, compilers,
# etc.) from conda-forge so that no system packages are needed beyond conda
# itself. Firedrake's own Python packages are then pip-installed on top.
#
# Usage:
# conda env create -f environment.yml
# conda activate firedrake
# bash setup.sh
#
# Tested on: Linux x86_64, macOS ARM64 (Apple Silicon)
name: firedrake
channels:
- conda-forge
- nodefaults
dependencies:
# ── Python ──
- python >=3.11,<3.13
# ── Compilers (needed at runtime for Firedrake JIT) ──
# The `compilers` metapackage provides gcc/gfortran on Linux and
# clang/gfortran on macOS, all targeting the conda env's sysroot.
- compilers
- cmake
- make
# ── MPI ──
# mpich is more portable across platforms in conda-forge than openmpi.
# All MPI-linked packages below will be built against this same mpich.
- mpich
# ── PETSc ecosystem ──
# conda-forge PETSc includes: MUMPS, hypre, SuperLU, SuperLU_dist,
# METIS, ParMETIS, ScaLAPACK, SuiteSparse, pt-scotch.
- petsc =*=real*
- petsc4py
- slepc
- slepc4py
# ── HDF5 with MPI support ──
- hdf5 =*=mpi_mpich_*
- h5py =*=mpi_mpich_*
# ── Linear algebra ──
- libopenblas
- libblas =*=*openblas*
- liblapack =*=*openblas*
- scalapack
# ── Other compiled libs Firedrake needs ──
- patchelf # [linux]
- libspatialindex
- gmsh
# ── Core Python dependencies ──
- numpy
- scipy
- cython
- mpi4py
- sympy
- cachetools
- packaging
- decorator
- requests
- setuptools
- pip
- wheel
- meson
- meson-python
- pkgconfig
- scikit-build-core
- ninja
- pybind11
- hatchling
- flit-core
# ── islpy / loopy code generation stack ──
- islpy
# ── Visualization (optional but useful) ──
- matplotlib
# ── Pip-installed packages ──
# These are the Firedrake-specific packages that are NOT on conda-forge.
# They're installed in the setup script, listed here for documentation.
# - pip:
# - fenics-ufl (from git, Firedrake-compatible version)
# - firedrake-fiat (Firedrake's FIAT fork)
# - FInAT
# - loopy (latest, for code generation)
# - tsfc
# - pyop2
# - libsupermesh
# - firedrake
# - icepack