#!/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
# parámetros de superficie especificando grid 0.1/0.1

# Definición de parámetros.
CVH="28.128"
CVL="27.128"
LSM="172.128"
Z="129.128"
SD="141.128"

_2T="167.128"
CP="143.128"
LSP="142.128"
_10U="165.128"
_10V="166.128"
_10FG3="28.228"
_10FG6="123.128"
_2D="168.128"
FZRA="216.228"
CEIL="260109"
UVB="57.128"
HCC="188.128"
LCC="186.128"
MX2T3="26.228"
MX2T6="121.128"
MSL="151.128"
MCC="187.128"
MN2T3="228027"
MN2T6="122.128"
PTYPE="260015"
SF="144.128"
SP="134.128"
TCC="164.128"
VIS="20.3"
DEG0L="24.228"
CAPE="59.128"
CIN="1.228"
CBH="23.228"

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                        ###
###############################################################################

# Análisis.
  mars>fcout_an_ll_${anno}${mes}${dia}${pasada}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${CVH}/${CVL}/${LSM}/${Z}/${SD},
  stream=oper,
  time=${pasada},
  type=an,
  grid=0.1/0.1,
  target="FC_AN_LL_${anno}${mes}${dia}${pasada}.grb"
EOF

# 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 superficie.
  mars>fcout_sfc_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${_2T}/${CP}/${LSP}/${_10U}/${_10V}/${_10FG3}/${_2D}/${FZRA}/${CEIL}/${UVB}/${HCC}/${LCC}/${MX2T3}/${MSL}/${MCC}/${MN2T3}/${PTYPE}/${SF}/${SP}/${TCC}/${VIS}/${DEG0L}/${CAPE}/${CIN}/${CBH},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  grid=0.1/0.1,
  target="FC_SFC_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 superficie.
  mars>fcout_sfc_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${_2T}/${CP}/${LSP}/${_10U}/${_10V}/${_10FG3}/${_2D}/${FZRA}/${CEIL}/${UVB}/${HCC}/${LCC}/${MX2T3}/${MSL}/${MCC}/${MN2T3}/${PTYPE}/${SF}/${SP}/${TCC}/${VIS}/${DEG0L}/${CAPE}/${CIN}/${CBH},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  grid=0.1/0.1,
  target="FC_SFC_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 superficie.
  mars>fcout_sfc_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${_2T}/${CP}/${LSP}/${_10U}/${_10V}/${_10FG6}/${_2D}/${FZRA}/${CEIL}/${UVB}/${HCC}/${LCC}/${MX2T6}/${MSL}/${MCC}/${MN2T6}/${PTYPE}/${SF}/${SP}/${TCC}/${VIS}/${DEG0L}/${CAPE}/${CIN}/${CBH},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  grid=0.1/0.1,
  target="FC_SFC_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 superficie.
  mars>fcout_sfc_ll_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${_2T}/${CP}/${LSP}/${_10U}/${_10V}/${_10FG3}/${_10FG6}/${_2D}/${FZRA}/${CEIL}/${UVB}/${HCC}/${LCC}/${MX2T3}/${MX2T6}/${MSL}/${MCC}/${MN2T3}/${MN2T6}/${PTYPE}/${SF}/${SP}/${TCC}/${VIS}/${DEG0L}/${CAPE}/${CIN}/${CBH},
  step=${alcance},
  stream=enfo,
  time=${pasada},
  type=cf,
  grid=0.1/0.1,
  target="FC_SFC_LL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
done
