#!/bin/sh
#
# The exit status of this script is read by Mentat.
# Normal exit status is 0.
#

DIR=%INSTALLDIR%/marc%VERSION%
if test $MARCDIR1
then
 DIR=$MARCDIR1
fi

if test -z "$DIR"; then
  REALCOM="`ls -l $0 |awk '{ print $NF; }'`"
  DIRSCRIPT=`dirname $REALCOM`
  case $DIRSCRIPT in
    \/*)
    ;;
    *)
      DIRSCRIPT=`pwd`/$DIRSCRIPT
      ;;
  esac
  . $DIRSCRIPT/getarch

  DIR="$MENTAT_MARCDIR"
fi

SRCEXT=.f
SRCEXTC=.F
RSTEXT=.t08
PSTEXT=.t19
PSTEXTB=.t16
VWFCEXT=.vfs

slv=$1
version=$2
ndom_fea_solver=$3
ndom_preprocessor=$4
hostfile=$5
compat=$6
job=$7
srcfile=$8
srcmeth=$9
shift 9       # cannot use $10, $11, ...
restart=$1
postfile=$2
viewfactorsfile=$3
autorst=$4
copy_datfile="-ci $5"
copy_postfile="-cr $6"
scr_dir=$7
dcoup=$8
assem_recov_nthread=$9
shift 9       # cannot use $10, $11, ...
nthread=$1
nsolver=$2
mode=$3
gpu=$4

if [ "$slv" != "" -a "$slv" != "marc" ]; then
  slv="-iam sfm"
else
  slv=""
fi

if [ "$ndom_fea_solver" != "" -a "$ndom_fea_solver" != "1" ]; then
  nprocds="-nprocds $ndom_fea_solver"
else
  nprocd=""
  if [ "$ndom_preprocessor" != "" -a "$ndom_preprocessor" != "1" ]; then
    nprocd="-nprocd $ndom_preprocessor"
  else
    nprocd=""
  fi
fi

if [ "$srcfile" != "" -a "$srcfile" != "-" ]; then
  srcfile=`echo $srcfile | sed "s/$SRCEXT$//" | sed "s/$SRCEXTC$//"`
  case "$srcmeth" in
    -)
      srcfile="-u $srcfile"
      ;;
    compsave)
      srcfile="-u $srcfile -save y"
      ;;
    runsaved)
      srcfile=${srcfile%.*}".marc"
      srcfile="-prog $srcfile"
      ;;
  esac
else
  srcfile=""
fi

if [ "$restart" != "" -a "$restart" != "-" ]; then
  restart=`echo $restart | sed "s/$RSTEXT$//"`
  restart="-r $restart"
else
  restart=""
fi

if [ "$postfile" != "" -a "$postfile" != "-" ]; then
  postfile=`echo $postfile | sed "s/$PSTEXT$//"`
  postfile=`echo $postfile | sed "s/$PSTEXTB$//"`
  postfile="-pid $postfile"
else
  postfile=""
fi

if [ "$viewfactorsfile" != "" -a "$viewfactorsfile" != "-" ]; then
  viewfactorsfile=`echo $viewfactorsfile | sed "s/$VWFCEXT$//"`
  viewfactorsfile="-vf $viewfactorsfile"
else
  viewfactorsfile=""
fi

if [ "$hostfile" != "" -a "$hostfile" != "-" ]; then
  hostfile="-ho $hostfile"
else
  hostfile=""
fi

if [ "$compat" != "" -a "$compat" != "-" ]; then
  compat="-co $compat"
else
  compat=""
fi

if [ "$scr_dir" != "" -a "$scr_dir" != "-" ]; then
  scr_dir="-sd $scr_dir"
else
  scr_dir=""
fi

if [ "$dcoup" != "" -a "$dcoup" != "0" ]; then
  dcoup="-dcoup $dcoup"
else
  dcoup=""
fi

if [ "$assem_recov_nthread" != "" -a "$assem_recov_nthread" != "1" ]; then
  assem_recov_nthread="-nthread_elem $assem_recov_nthread"
else
  assem_recov_nthread=""
fi

if [ "$nthread" != "" -a "$nthread" != "0" -a "$nthread" != "1" ]; then
  nthread="-nthread $nthread"
else
  nthread=""
fi

if [ "$nsolver" != "" -a "$nsolver" != "0" ]; then
  nsolver="-nsolver $nsolver"
else
  nsolver=""
fi

case "$mode" in
 4) mode="-mo i4" ;;
 8) mode="-mo i8" ;;
 *) mode= ;;
esac

if [ "$gpu" != "" -a "$gpu" != "-" ]; then
 gpu="-gpu $gpu"
else
 gpu=""
fi

rm -f $job.cnt
rm -f $job.sts
rm -f $job.out
rm -f $job.log

# To prevent a mismatch with the python version used by the solver
#  do *not* prepend $MENTAT_INSTALL_DIR/python/bin to environment variable PATH
#  unset environment variables PYTHONHOME and PYTHONPATH
unset PYTHONHOME
unset PYTHONPATH

"${DIR}/tools/run_damask_hmp" $slv -j $job -v n -b y $nprocds $nprocd -autorst $autorst \
                        $srcfile $restart $postfile $viewfactorsfile $hostfile \
                        $compat $copy_datfile $copy_postfile $scr_dir $dcoup \
                        $assem_recov_nthread $nthread $nsolver $mode $gpu > /dev/null 2>&1
sleep 1
exit 0
