#!/bin/bash
progname=$0
function usage() {
  cat <<END

  Usage: $progname T L [outFilePrefix [--help --skipIfComputed
             --nSeeds NSEEDS --mcTot MCTOT --mcIni MCINI --mcD MCD
             --initialSeed INITIALSEED --saveFinalConf]]

  the output file will be saved at "data_out/{{outFilePrefix}}"

  optional arguments:
    -h, --help            show this help message and exit.
    -s, --skipIfComputed  skip if the output file already exists.
    -n, --nSeeds          number of seeds which will be used for the
                          simulation.
    -m, --mcTot           number of iterations which will be performed
                          in the simulation for each seed.
    -i, --mcIni           number of iterations before the program
                          starts measuring physical properties of the
                          system.
    -d, --mcD             the program will measure the physical
                          properties when iteration % MCD == 0.
    --initialSeed         initial seed for the Monte Carlo algorithm.
    --saveFinalConf       save a file with the configuration which
                          belongs to the last Montecarlo iteration.
END
}

if (( "$#" < 2 )); then
  usage
  exit 1
fi

T="$1"
L="$2"
defaultOutFilePrefix="L$L-T$T"
outFilePrefix="${3:-$defaultOutFilePrefix}"

opts=$(getopt -l "help,skipIfComputed,nSeeds:,mcTot:,mcIni:,mcD:,initialSeed:,saveFinalConf" -o "hsn:m:i:d:" -n "$progname" -- "${@:4}")
eval set -- "$opts"

skipIfComputed=false
nSeeds=150
mcTot=40000
mcIni=2000
mcD=20
initialSeed=117654
saveFinalConf=F

while true; do
  case "$1" in
    -h | --help)
      usage
      exit
      ;;
    -s | --skipIfComputed)
      skipIfComputed=true
      shift
      ;;
    -n | --nSeeds)
      nSeeds="$2"
      shift 2
      ;;
    -m | --mcTot)
      mcTot="$2"
      shift 2
      ;;
    -i | --mcIni)
      mcIni="$2"
      shift 2
      ;;
    -d | --mcD)
      mcD="$2"
      shift 2
      ;;
    --initialSeed)
      initialSeed="$2"
      shift 2
      ;;
    --saveFinalConf)
      saveFinalConf=T
      shift
      ;;
    *) break ;;
  esac
done

if [ "$skipIfComputed" == "true" ] && [ -f "data_out/${outFilePrefix}.res" ]; then
  echo "Skipping computation for L=$L, T=$T (.res file already exists)"
  exit
fi

echo "Starting computation for L=$L, T=$T"

cat <<EOF | ./out/mc2
&DADES
L=$L,
NOM="$outFilePrefix",
TEMP=$T,
NSEED=$nSeeds,
SEED0=$initialSeed,
MCTOT=$mcTot,
MCINI=$mcIni,
MCD=$mcD
SAVEFINALCONF=$saveFinalConf
&END
EOF
