#!/bin/sh
cd "${0%/*}" || exit 1  # Run from case directory

# ----------------------------------------------------------------- #
#  Allrun - per case script                                          #
#  Works for both Base_case and Bleed cases                         #
#  Bleed cases are detected by presence of 0.orig/                  #
# ----------------------------------------------------------------- #

# Number of parallel cores (match decomposeParDict)
NP=4

# ---------- restore initial conditions (bleed cases only) ----------
if [ -d "0.orig" ]; then
    echo ">>> Detected bleed case: restoring 0/ from 0.orig/"
    rm -rf 0
    cp -r 0.orig 0
fi

# ---------- mesh --------------------------------------------------
echo ">>> Running blockMesh"
blockMesh > log.blockMesh 2>&1
if [ $? -ne 0 ]; then
    echo "ERROR: blockMesh failed. Check log.blockMesh"
    exit 1
fi

echo ">>> Running checkMesh"
checkMesh > log.checkMesh 2>&1

# ---------- setFields (bleed cases only) --------------------------
if [ -f "system/setFieldsDict" ] && [ -d "0.orig" ]; then
    echo ">>> Running setFields"
    setFields > log.setFields 2>&1
    if [ $? -ne 0 ]; then
        echo "ERROR: setFields failed. Check log.setFields"
        exit 1
    fi
fi

# ---------- decompose ---------------------------------------------
echo ">>> Running decomposePar"
decomposePar > log.decomposePar 2>&1
if [ $? -ne 0 ]; then
    echo "ERROR: decomposePar failed. Check log.decomposePar"
    exit 1
fi

# ---------- solve -------------------------------------------------
echo ">>> Running rhoCentralFoam on $NP cores"
mpirun -np $NP rhoCentralFoam -parallel > log.rhoCentralFoam 2>&1
if [ $? -ne 0 ]; then
    echo "ERROR: rhoCentralFoam failed. Check log.rhoCentralFoam"
    exit 1
fi

# ---------- reconstruct -------------------------------------------
echo ">>> Running reconstructPar"
reconstructPar > log.reconstructPar 2>&1
if [ $? -ne 0 ]; then
    echo "ERROR: reconstructPar failed. Check log.reconstructPar"
    exit 1
fi

echo ">>> Done"
