#!/bin/bash

# The job name
#SBATCH --job-name=mars_new_job
# Set the error and output files
#SBATCH --output=mars_new-%J.out
#SBATCH --error=mars_new-%J.out
# Set the initial working directory
#SBATCH --workdir=/scratch/ms/es/sp2b
# Choose the queue
#SBATCH --qos=long
# Wall clock time limit
##SBATCH --time=00:05:00
# Send an email on failure
##SBATCH -mail-type=FAIL

# Peticiones a MARS siendo un fichero por alcance para los niveles de presión.

# Definición de parámetros.
GH="129.128" #"156.128" # Geopotential height.
R="157.128"  # Relative humidity.
T="130.128"  # Temperature.
U="131.128"  # U component of wind.
V="132.128"  # V component of wind.

# Definición de niveles de presión.
LEVELIST="150/200/300/500/700/850/925/1000"


# Fechas de los datos.
anno="2017"
mes="01"
dia="01"
pasada="00"

###############################################################################
###                                      HiRes & Ens                        ###
###############################################################################

# Intervalos horarios de 1 a 90 horas.
for (( t=1; t<=90; t++ )) ; do
  if test ${t} -lt 10 ; then
    alcance="00${t}"
  elif test ${t} -lt 100 ; then
    alcance="0${t}"
  else
    alcance="${t}"
  fi
  # Parámetros en niveles de presión.
  mars>fcout_pl_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH}/${R}/${T}/${U}/${V},
  step=${alcance},
  stream=oper,
  time=${pasada},
  grid=0.1/0.1,
  type=fc,
  target="FC_PL_LL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
done


# Intervalos 3-horarios de 93 a 144.
for (( t=93; t<=144; t+=3 )) ; do
  if test ${t} -lt 10 ; then
    alcance="00${t}"
  elif test ${t} -lt 100 ; then
    alcance="0${t}"
  else
    alcance="${t}"
  fi
  # Parámetros en niveles de presión.
  mars>fcout_pl_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH}/${R}/${T}/${U}/${V},
  step=${alcance},
  stream=oper,
  time=${pasada},
  grid=0.1/0.1,
  type=fc,
  target="FC_PL_LL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
done

# Intervalos 6-horarios de 150 a 240.
for (( t=150; t<=240; t+=6 )) ; do
  if test ${t} -lt 10 ; then
    alcance="00${t}"
  elif test ${t} -lt 100 ; then
    alcance="0${t}"
  else
    alcance="${t}"
  fi
  # Parámetros en niveles de presión.
  mars>fcout_pl_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH}/${R}/${T}/${U}/${V},
  step=${alcance},
  stream=oper,
  time=${pasada},
  grid=0.1/0.1,
  type=fc,
  target="FC_PL_LL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
done

# Intervalos 6-horarios de 246 a 360.
for (( t=246; t<=360; t+=6 )) ; do
  if test ${t} -lt 10 ; then
    alcance="00${t}"
  elif test ${t} -lt 100 ; then
    alcance="0${t}"
  else
    alcance="${t}"
  fi
  # Parámetros en niveles de presión.
  mars>fcout_pl_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH}/${R}/${T}/${U}/${V},
  step=${alcance},
  stream=enfo,
  time=${pasada},
  grid=0.1/0.1,
  type=cf,
  target="FC_PL_LL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
done
