#!/bin/bash
#SBATCH --job-name=prop_fix
#SBATCH --time=00:40:00
#SBATCH --nodes=1
#SBATCH --ntasks=48
#SBATCH --mem-per-cpu=2G
#SBATCH --output=fix_%j.out
#SBATCH --error=fix_%j.out
set -u
source /cluster/apps/local/env2lmod.sh 2>/dev/null || true
module purge 2>/dev/null || true
module load stack/2024-06 gcc/12.2.0 openmpi/4.1.6 openfoam/2306
cd $SLURM_SUBMIT_DIR/case || exit 1
rm -rf processor*
sed -i "s/^numberOfSubdomains.*/numberOfSubdomains 48;/" system/decomposeParDict
# keep the AMI faceZone coherent across the decomposition
grep -q preserveFaceZones system/decomposeParDict || cat >> system/decomposeParDict <<"DEOF"

constraints
{
    amiZone
    {
        type        preserveFaceZones;
        zones       (AMI_rot);
        enabled     true;
    }
}
DEOF
decomposePar -force -latestTime > log.dec.fix 2>&1; echo "decompose rc=$?"
srun -n 48 pimpleFoam -parallel > log.t.fix 2>&1; echo "solver rc=$?"
echo "steps: $(grep -c \"^Time = \" log.t.fix)  last: $(grep \"^Time = \" log.t.fix | tail -1)"
grep "Patch target sum" log.t.fix | tail -3
