#!/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]]

  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.
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:" -o "hsn:m:i:d:" -n "$progname" -- "${@:4}")
eval set -- "$opts"

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

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
      ;;
    *) 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
&END
EOF
