4set -u # Treat unset variables as errors
7export MOFEM_INSTALL_DIR=$HOME/mofem_install
8export SPACK_ROOT=$MOFEM_INSTALL_DIR/spack
9export MOFEM_REPO=$MOFEM_INSTALL_DIR/mofem-cephas
10export MOFEM_SRC_DIR=$MOFEM_REPO
11export MOFEM_BRANCH=Version0.15.0
12export TZ=Europe/London
13export DEBIAN_FRONTEND=noninteractive
15# === CREATE DIRECTORIES ===
16mkdir -p "$MOFEM_INSTALL_DIR"
19# === INSTALL SYSTEM PACKAGES ===
21sudo apt-get install -y \
57sudo locale-gen en_US.UTF-8
59# === INSTALL SPACK ===
60if [ ! -d "$SPACK_ROOT" ]; then
61 curl -L https://github.com/spack/spack/archive/refs/tags/v0.23.1.tar.gz | \
62 tar -xz -C "$MOFEM_INSTALL_DIR" && \
63 mv "$MOFEM_INSTALL_DIR/spack-0.23.1" "$SPACK_ROOT"
66# === SETUP SHELL ENV ===
67export PATH="$SPACK_ROOT/bin:$PATH"
68. "$SPACK_ROOT/share/spack/setup-env.sh"
70# === ADD TO BASHRC ===
71SPACK_ENV_LINE=". $SPACK_ROOT/share/spack/setup-env.sh"
72grep -qxF "$SPACK_ENV_LINE" ~/.bashrc || echo "$SPACK_ENV_LINE" >> ~/.bashrc
74# === SETUP SPACK ENVIRONMENT ===
77spack config add "packages:all:target:[x86_64]"
78spack config add "packages:all:variants:build_type=Release"
80# === CLONE MoFEM SOURCES ===
81git clone -b "$MOFEM_BRANCH" https://bitbucket.org/mofem/mofem-cephas.git "$MOFEM_SRC_DIR"
83# === REGISTER MoFEM REPO ===
84spack repo add "$MOFEM_REPO"
86# === CREATE SPACK ENV ===
88spack env activate mofem
90spack add py-numpy ^python
91spack add boost+python+numpy ^python ^py-numpy
92spack add mofem-cephas@0.15.0+adol-c+med+mgis~shared+slepc+tetgen install_id=0 ^petsc+X
93spack develop -p "$MOFEM_SRC_DIR" mofem-cephas@0.15.0
95spack install -v --test=root mofem-cephas@0.15.0+adol-c+med+mgis~shared+slepc+tetgen install_id=0 ^petsc+X
99spack env view enable $HOME/mofem_view
101# === FINAL MESSAGE ===
103echo "✅ MoFEM installed successfully"
104echo "🔁 You can activate the Spack environment with:"
105echo " spack env activate mofem"
106echo " Access MoFEM executables in the view directory:"
107echo " $HOME/mofem_view"