#!/bin/bash
###script to submit multiple jobs on palmetto

echo ""
echo ""
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "+                                                               +"
echo "+                     parallel delphi                           +"
echo "+                                                               +"
echo "+                       August 2011                             +"
echo "+                                                               +"
echo "+                      Maintained by                            +"
echo "+                                                               +"
echo "+                  Delphi Development Team                      +"
echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo ""

###--------------------specify default parameter values:
codebase=`pwd`
rundir="run"
exampledir="examples"
example="barstar6"
yesno="n" 
param="param.txt"
pdbfile="barstar.pdb"
sizfile="amber.siz"
crgfile="amber.crg"
nruns="y"
username="chuanli"

while [ "$nruns" == "y"  ]; do

###--------------------set parameter values:
  echo ""
  echo ">>>>>>>>>>>>>>>>>>>>creating a dir to run the job: "
  echo ""  
  echo ">>>default dir = $codebase/$rundir"
  echo -n "-->will create it? (y/n) "
  read yesno
  echo ""

  if [ "$yesno" == "n" ]; then  
    echo -n "--> enter a new dir name for this run: "
    read rundir 
  fi

  echo ">>>user speicified run dir = $codebase/$rundir"

###--------------------create the run dir 
  spec=`ls | grep -w $rundir`
  while [ "$rundir" == "$spec" ]; do
    echo -n ">>>dir exists. clean current dir? (y/n) "
    read yesno

    if [ "$yesno" == "y" ]; then
      spec=""
      rm -rf $rundir
    else
      echo -n "--> enter a new dir name for this run: "
      read rundir
      spec=`ls | grep -w $rundir`
    fi
  done

  echo ""
  echo ">>>ok... will mkdir $rundir ..."
  mkdir $rundir

  echo "" 
  echo ">>>examples available are: "
  ls $exampledir
  echo "" 
  echo -n "-->pick one example to run (default=barstar6):"
  read example

  if [ "$example" == "" ]; then
    example="barstar6"
    spec="barstar6"
  else
    spec=`ls $codebase/$exampledir | grep -w $example`
  fi  
    
  while [ "$example" != "$spec"  ]; do
    echo ">>>need to pick an example from above list to run. Retry..."
    example="barstar6"
    echo -n "-->pick an example to run (default=$example):"
    read example
    spec=`ls $codebase/$exampledir | grep -w $example`
  done

  echo ""
  echo ">>>ok... will run $example ..."

  param=`ls $exampledir/$example | grep txt`
  pdbfile=`ls $exampledir/$example | grep pdb`
  sizfile=`ls $exampledir/$example | grep siz`
  crgfile=`ls $exampledir/$example | grep crg`

  ln -s $codebase/$exampledir/$example/$pdbfile $codebase/$rundir/$pdbfile
  ln -s $codebase/$exampledir/$example/$sizfile $codebase/$rundir/$sizfile
  ln -s $codebase/$exampledir/$example/$crgfile $codebase/$rundir/$crgfile
  cp $codebase/$exampledir/$example/$param $codebase/$rundir/param.txt

  ln -s $codebase/makefile $codebase/$rundir/makefile
  ln -s $codebase/pdelphi95 $codebase/$rundir/pdelphi95
  cp $codebase/PBStemplate $codebase/$rundir/PBSscript
  cp $codebase/PBSzeus $codebase/$rundir/PBSzeus

  echo ""
  echo ">>>following files are created in $rundir for this run: "
  ls -a $codebase/$rundir

###--------------------ready for a run
  echo ""
  echo -n "-->check the parameter file? (y/n) "
  read yesno
  
  if [ "$yesno" == "y" ]; then
    vi $codebase/$rundir/$param
  fi
 
  echo ""
  echo -n "-->last chance: will \"make pdb\"? (y/n) " 
  read yesno
  
  if [ "$yesno" == "y" ]; then
    vi $codebase/$rundir/PBSscript 
    cd $codebase/$rundir;make pbs
    cd $codebase

    echo ">>>job is submitted..."
    qstat -u $username
    echo -n ">>>continue...."
  fi

  echo ">>>-----------------------------------------------------------<<<"
  echo ""
  echo -n ">>>will make another run? (y/n) "   
  read yesno
  echo ""
  
  if [ "$yesno" == "n" ]; then
    nruns="n"
    echo ""
    echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
    echo "+                                                               +"
    echo "+                 Thanks for using delphi, bye-bye!             +"
    echo "+                                                               +"
    echo "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
    echo ""
    echo ""
  fi
done


