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

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

HMAX="140218" # Maximun individual wave height.
MDTS="140238" # Mean direction of total swell.
MDWW="140235" # Mean direction of wind waves.
MPTS="140239" # Mean period of total swell.
MPWW="140236" # Mean period of wind waves.
MWD="140230"  # Mean wave direction.
MWP="140232"  # Mean wave period.
SHTS="140237" # Significant height of total swell.
SHWW="140234" # Significant height of wind waves.
SWH="140229"  # Significant height of combined wind waves and swell.

# 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_${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,
#  target="FC_AN_${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_${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,
#  target="FC_SFC_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
  # Parámetros en niveles de presión.
#  mars>fcout_pl_${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},
#  type=fc,
#  target="FC_PL_${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_${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,
#  target="FC_SFC_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
  # Parámetros en niveles de presión.
#  mars>fcout_pl_${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},
#  type=fc,
#  target="FC_PL_${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_${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,
#  target="FC_SFC_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
  # Parámetros en niveles de presión.
#  mars>fcout_pl_${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},
#  type=fc,
#  target="FC_PL_${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_${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,
#  target="FC_SFC_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
  # Parámetros en niveles de presión.
#  mars>fcout_pl_${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},
#  type=cf,
#  target="FC_PL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
#done

###############################################################################
###                       Modelo marítimo                                   ###
###############################################################################

# Intervalos 3-horarios de 3 a 144.
#for (( t=3; 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
#  mars>fcout_wm_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
#retrieve,
#  class=od,
#  date=${anno}${mes}${dia},
#  domain=g,
#  expver=1,
#  param=${HMAX}/${MDTS}/${MDWW}/${MPTS}/${MPWW}/${MWD}/${MWP}/${SHTS}/${SHWW}/${SWH},
#  step=${alcance},
#  stream=wave,
#  time=${pasada},
#  type=fc,
#  target="FC_WM_${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
#  mars>fcout_wm_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
#retrieve,
#  class=od,
#  date=${anno}${mes}${dia},
#  domain=g,
#  expver=1,
#  param=${HMAX}/${MDTS}/${MDWW}/${MPTS}/${MPWW}/${MWD}/${MWP}/${SHTS}/${SHWW}/${SWH},
#  step=${alcance},
#  stream=wave,
#  time=${pasada},
#  type=fc,
#  target="FC_WM_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
#done

###############################################################################
###                                   OTROS                                 ###
###############################################################################

# TP en todos los perturbed.
############################

# Intervalos 3-horarios de 3 a 144.
#for (( t=3; 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
#  mars>fcout_pf_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
#retrieve,
#  class=od,
#  date=${anno}${mes}${dia},
#  expver=1,
#  levtype=sfc,
#  number=1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50,
#  param=228.128,
#  step=${alcance},
#  stream=enfo,
#  time=${pasada},
#  type=pf,
#  target="FC_PF_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
#done

# Intervalos 6-horarios de 150 a 360.
#for (( t=150; 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
#  mars>fcout_pf_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
#retrieve,
#  class=od,
#  date=${anno}${mes}${dia},
#  expver=1,
#  levtype=sfc,
#  number=1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20/21/22/23/24/25/26/27/28/29/30/31/32/33/34/35/36/37/38/39/40/41/42/43/44/45/46/47/48/49/50,
#  param=228.128,
#  step=${alcance},
#  stream=enfo,
#  time=${pasada},
#  type=pf,
#  target="FC_PF_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
#done

# Empirical distribution
########################

# Intervalos 6-horarios de 150 a 360.
#for (( t=6; 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
#  mars>fcout_ed_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
#retrieve,
#  class=od,
#  date=${anno}${mes}${dia},
#  expver=1,
#  levtype=sfc,
#  number=51,
#  param=164.128/167.128/207.128/228.128,
#  step=${alcance},
#  stream=enfo,
#  time=${pasada},
#  type=ed,
#  target="FC_ED_${anno}${mes}${dia}${pasada}_${alcance}.grb"
#EOF
#done

##############################################
# CEIL en sfc hasta 240 y GH en pl hasta 360 #
##############################################

# 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_ceil_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${CEIL},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  target="FC_SFC_CEIL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
#   Parámetros en niveles de presión.
  mars>fcout_pl_gh_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  target="FC_PL_GH_${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_ceil_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${CEIL},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  target="FC_SFC_CEIL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
  # Parámetros en niveles de presión.
  mars>fcout_pl_gh_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  target="FC_PL_GH_${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_ceil_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levtype=sfc,
  param=${CEIL},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  target="FC_SFC_CEIL_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
  # Parámetros en niveles de presión.
  mars>fcout_pl_gh_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH},
  step=${alcance},
  stream=oper,
  time=${pasada},
  type=fc,
  target="FC_PL_GH_${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_gh_${anno}${mes}${dia}${pasada}_${alcance}<<EOF
retrieve,
  class=od,
  date=${anno}${mes}${dia},
  expver=1,
  levelist=${LEVELIST},
  levtype=pl,
  param=${GH},
  step=${alcance},
  stream=enfo,
  time=${pasada},
  type=cf,
  target="FC_PL_GH_${anno}${mes}${dia}${pasada}_${alcance}.grb"
EOF
done