#!/usr/bin/env sh
export cas="$1"
export inp_of="of_$cas"
export out_of="out_of_$cas"
export out_post="out_post_$cas"

if [[ ! -d $inp_of ]]
then echo $inp_of not found
	exit 1
fi

if [[ -d $out_of ]]
then echo $out_of already exists
	mv $out_of "$out_of.bak"
fi

if [[ -d $out_post ]]
then echo $out_post already exists
	mv $out_post "$out_post.bak"
fi

echo START
cp -r --reflink of $out_of
if [[ $2 ]]
then cp -r --reflink of_$2/* $out_of
fi
cp -r --reflink $inp_of/* $out_of
pushd $out_of
source /opt/OpenFOAM/OpenFOAM-9/etc/bashrc
mkdir log
echo Generating mesh
blockMesh > log/blockMesh.log
echo Refining mesh
snappyHexMesh -overwrite > log/snappyHexMesh.log
cp -r 0.org 0
echo Setting initial fields
setFields > log/setFields.log

popd
echo Converting swash output to initial condition
python -m processing.sws_ola -o $out_of > $out_of/log/sws_ola.log
echo Converting swash output to boundary condition
python -m processing.sws_wavedict_paddle -o $out_of > $out_of/log/sws_wave.log
pushd $out_of

echo Generating parallel cases
decomposePar > log/decomposePar.log
echo Running model
mpirun --use-hwthread-cpus -np 6 olaFlow -parallel > log/olaFlow.log
echo Merging parallel cases
reconstructPar > log/reconstructPar.log
#echo Removing parallel cases
#rm -r processor*

echo Running Openfoam post-process
postProcess -func graphUniform > log/postProcess.log
postProcess -func graphUniform2 > log/postProcess2.log

popd
echo Pickling Olaflow output
python -m processing.pickle -i $out_of -o $out_post > $out_of/log/pickle.log

echo END
