Install FEniCS and Firedrake on non Ubuntu cluster - QwertyJack/tmp GitHub Wiki

Install Miniforge

Install FEnisCS

$ cat >fenics.yaml <<EOF
name: fenics
channels:
  - conda-forge
dependencies:
  - python=3
  - ipython
  - fenics
  - fenics-dolfin
  - mshr
EOF
$ conda env create -f fenics.yaml

Install Firedrake

Prepare dependencies:

$ cat >firedrake.yaml <<EOF
# firedrake dependencies
name: firedrake
channels:
    - conda-forge
dependencies:
    - gxx_linux-64
    - gfortran_linux-64
    - openblas
    - git
    - python=3.8
    - autoconf
    - automake
    - libtool
    - cmake
    - zlib
    - flex
    - bison=3.0.4
    - binutils
    - tk
    - boost
    - libhwloc
    - mpich
EOF
$ conda env create -f firedrake.yaml

Install Firedrake:

$ cd $WORKON_HOME
$ curl -O https://raw.githubusercontent.com/firedrakeproject/firedrake/master/scripts/firedrake-install
$ conda activate firedrake
(firedrake) $ export LD_LIBRARY_PATH=$CONDA_PREFIX/lib
(firedrake) $ python firedrake-install --mpiexec=mpiexec --mpicc=mpicc --mpicxx=mpicxx --mpif90=mpif90 --no-package-manager

Post-install:

(firedrake) $ cat >$CONDA_PREFIX/etc/conda/activate.d/venv.sh <<EOF
export OMP_NUM_THREADS=1

# source from venv
. $WORKON_HOME/firedrake/bin/activate
EOF
(firedrake) $ cd $CONDA_PREFIX/bin
(firedrake) $ for i in `ls x86_64-conda-linux-gnu-*`; do ln -s $i ${i/x86_64-conda-linux-gnu-/}; done

Install defcon:

$ cd $WORKON_HOME/firedrake/src
$ git clone https://bitbucket.org/pefarrell/defcon.git
$ cd defcon
$ conda activate firedrake
(firedrake) $ pip install -e .