# 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