#!/bin/bash
###############################################################################
# Peticiones a MARS
###############################################################################

# Definición de fechas.
DATE="2017-01-01"
TIME="00:00:00"

# Definición de pasos temporales.
STEP_001_090_1="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/51/52/53/54/55/56/57/58/59/60/61/62/63/64/65/66/67/68/69/70/71/72/73/74/75/76/77/78/79/80/81/82/83/84/85/86/87/88/89/90"
STEP_093_144_3="93/96/99/102/105/108/111/114/117/120/123/126/129/132/135/138/141/144"
STEP_003_144_3="3/6/9/12/15/18/21/24/27/30/33/36/39/42/45/48/51/54/57/60/63/66/69/72/75/78/81/84/87/90/93/96/99/102/105/108/111/114/117/120/123/126/129/132/135/138/141/144"
STEP_150_240_6="150/156/162/168/174/180/186/192/198/204/210/216/222/228/234/240"
STEP_246_360_6="246/252/258/264/270/276/282/288/294/300/306/312/318/324/330/336/342/348/360"
STEP_006_360_6="6/12/18/24/30/36/42/48/54/60/66/72/78/84/90/96/102/108/114/120/126/132/138/144/150/156/162/168/174/180/186/192/198/204/210/216/222/228/234/240/246/252/258/264/270/276/282/288/294/300/306/312/318/324/330/336/342/348/354/360"

# 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="109.228"
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="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"

###############################################################################
#####                           Set I: HiRes                              #####
###############################################################################

########################## SingleLevel-Analysis ###############################
# CVH, CVL, LSM, Z, SD
cat > aux <<EOF
retrieve,
class=od,
date=${DATE},
expver=1,
levtype=sfc,
param=${CVH}/${CVL}/${LSM}/${Z}/${SD},
stream=oper,
time=${TIME},
type=an,
target="SetI_SingleLevel-Analysis"

EOF

####################### SingleLevel-Forecast-1H-3H-6H #########################
# 2T, CP, LSP
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
expver=1,
levtype=sfc,
param=${_2T}/${CP}/${LSP},
step=${STEP_001_090_1}/${STEP_093_144_3}/${STEP_150_240_6},
stream=oper,
time=${TIME},
type=fc,
target="SetI_SingleLevel-Forecast-1H-3H-6H"

EOF

####################### SingleLevel-Forecast-3H-6H ############################
# 10U, 10V, 10FG3, 10FG6, 2D, FZRA, CEIL, UVB, HCC, LCC, MX2T3, MX2T6, MSL, MCC, MN2T3, MN2T6, PTYPE, SF, SP, TCC, VIS, DEG0, CAPE, CIN, CBH
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
expver=1,
levtype=sfc,
param=${_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=${STEP_003_144_3}/${STEP_150_240_6},
stream=oper,
time=${TIME},
type=fc,
target="SetI_SingleLevel-Forecast-3H-6H"

EOF

####################### PressureLevel-Forecast-3H-6H ##########################
# GH, R, T, U, V en 150, 200, 300, 500, 700, 850, 925, 1000
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
expver=1,
levelist=${LEVELIST},
levtype=pl,
param=${GH}/${R}/${T}/${U}/${V},
step=${STEP_003_144_3}/${STEP_150_240_6},
stream=oper,
time=${TIME},
type=fc,
target="SetI_PressureLevel-Forecast-3H-6H"

EOF


###############################################################################
#####                   Set II: Ocean Wave Model                          #####
###############################################################################

########################## SingleLevel-Forecast-3H-6H #########################
# HMAX, MDTS, MDWW, MPTS, MPWW, MWD, MWP, SHTS, SHWW, SWH
cat >> aux <<EOF
retrieve,
class=od,
date=${TIME},
domain=g,
expver=1,
param=${HMAX}/${MDTS}/${MDWW}/${MPTS}/${MPWW}/${MWD}/${MWP}/${SHTS}/${SHWW}/${SWH},
step=${STEP_003_144_3}/${STEP_150_240_6},
stream=wave,
time=${DATE},
type=fc,
target="SetII_SingleLevel-Forecast-3H-6H"

EOF

###############################################################################
#####                   Set III: Ensemble                                 #####
###############################################################################

########################## SingleLevel-Control-6H #############################
# 10U, 10V, 10FG3, 2D, FZRA, CEIL, UVB, HCC, LCC, MX2T3, MX2T6, MSL, MCC, MN2T3, MN2T6, PTYPE, SF, SP, TCC, VIS, DEG0, CAPE, CIN, CBH
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
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=${STEP_246_360_6},
stream=enfo,
time=${TIME},
type=cf,
target="SetIII_SingleLevel-Control-6H"

EOF

####################### PressureLevel-Control-6H ##############################
# GH, R, T, U, V en 150, 200, 300, 500, 700, 850, 925, 1000
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
expver=1,
levelist=${LEVELIST},
levtype=pl,
param=${GH}/${R}/${T}/${U}/${V},
step=${STEP_246_360_6},
stream=enfo,
time=${TIME},
type=cf,
target="SetIII_PressureLevel-Control-6H"

EOF

####################### SingleLevel-Perturbed-3H-6H ##############################
# TP
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
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=${STEP_003_144_3}/${STEP_150_240_6}/${STEP_246_360_6},
stream=enfo,
time=${TIME},
type=pf
target="SetIII_SingleLevel-Perturbed-3H-6H"

EOF

####################### SingleLevel-EmpiricalDistribution-6H ##################
cat >> aux <<EOF
retrieve,
class=od,
date=${DATE},
expver=1,
levtype=sfc,
number=51,
param=164.128/167.128/207.128/228.128,
step=${STEP_006_360_6},
stream=enfo,
time=${TIME},
type=ed,
target="SetIII_SingleLevel-EmpiricalDistribution-6H"

EOF