#!/bin/sh
#or try
##!/bin/ksh
#
# $Id: linsh,v 1.10 2002/07/23 10:26:37 ne12 Exp $

echo " ***  LINSH   ---  LINSH   ---  LINSH              ***"
echo " ***  is a UNIX wrapper for LINSOL setting the     ***"
echo " ***  environment for the FORTRAN program          ***"
echo " ***  LINSOL and starting it                       ***"

usage()
{
    echo "usage: $0 [-b] [-c <jobclass>] [-T <time limit>] [-M <mem limit>]" 1>&2
    echo "          [-p <procs>] [-n <nodes>]" 1>&2
    exit 1
}

# Parse optional arguments

NPROC=1
JOBCLASS=""
MEMLIMIT="500"
TIMELIMIT="60"
BATCH=0

while getopts :bc:p:n:T:M:f: option
do
    case $option in
	p)
	    NPROC=$OPTARG
	    ;;
	f)
	    HOSTFILE=$OPTARG
	    ;;
	n)
	    NODES=$OPTARG
	    ;;
	b)
    	    BATCH=1
	    ;;
        c)
            JOBCLASS=$OPTARG
	    ;;
        T)
            TIMELIMIT=$OPTARG
	    ;;
        M)
	    MEMLIMIT=$OPTARG
	    ;;
	*)
	    echo "ERROR: unknown option $OPTARG"
	    usage
	    ;;
    esac
done
shift $(( $OPTIND - 1 ))


if [ $NPROC -gt 1 ]
then
  EXNAME=$LINSOL_EXE_DIR/plinsol
else
  EXNAME=$LINSOL_EXE_DIR/linsol
fi

cd $LINSOL_FILES_DIR
if [ $BATCH -eq 0 ]
 then
  if [ $NPROC -gt 1 ]
   then
    echo " ***  Starting parallel version of LINSOL          ***"
    echo " ***  with command ....                            ***"
#   poe $EXNAME -procs $NPROC -nodes $NODES
    if [ "x$HOSTFILE" != "x" ]
     then
      echo mpirun -np $NPROC -machinefile $HOSTFILE $EXNAME
      mpirun -np $NPROC -machinefile $HOSTFILE $EXNAME
    else
      echo mpirun -np $NPROC $EXNAME
      mpirun -np $NPROC $EXNAME
    fi
  else
    echo " ***  Starting one-processor version of LINSOL ... ***"
    $EXNAME
  fi
else
  if [ $NPROC -gt 1 ]
   then
    echo " ***  Submitting LINSOL job to batch queue ....    ***"
#   echo " ***  not allowed!!!                               ***"
#   job_submit $TIMELIMITOPT $TIMELIMIT \
#              $MEMLIMITOPT $MEMLIMIT \
#              -c $JOBCLASS $SPSMPOPTS -p $NPROC -a poe $EXNAME
    sed -e "s/\\\$TIMELIMIT/$TIMELIMIT/" -e "s/\\\$MEMLIMIT/$MEMLIMIT/" \
        -e "s/\\\$NPROC/$NPROC/" -e "s#\\\$EXNAME#$EXNAME#" \
        $LINNOX_EXE_DIR/shscript_template > $WORK/shscript
    qsub $WORK/shscript
  else
    echo " ***  Submitting LINSOL job to batch queue ....    ***"
#   echo " ***  not allowed!!!                               ***"
#   job_submit $TIMELIMITOPT $TIMELIMIT \
#              $MEMLIMITOPT $MEMLIMIT \
#              -c $JOBCLASS $SPSMPOPTS $EXNAME
    sed -e "s/\\\$TIMELIMIT/$TIMELIMIT/" -e "s/\\\$MEMLIMIT/$MEMLIMIT/" \
        -e "s#\\\$EXNAME#$EXNAME#" \
        $LINNOX_EXE_DIR/shscript_template1 > $WORK/shscript
    qsub $WORK/shscript
  fi
fi
