#!/bin/bash

########################################################################################################################
# Script que ejecuta el postproceso de los datos que arroja el WRF y empaqueta los datos finales en formato *.grib.
# Se añaden, además, líneas para pintar mapas.
#
# Marcos Molina Cano - 02/12/2015
########################################################################################################################

#-------------------------------------------------------------------------------
# Uso:
#     upp_run.sh DOMRES
#
# Siendo:
#     DOM: Dominio que queremos estudiar, e.g., ESP, MUR, etc.
#     RES: Resolución a la que queremos estudiar el dominio. (RES<0.25º)
#-------------------------------------------------------------------------------

if test ${#} -eq 0 ; then
  echo "Error de uso en ${0} "
  exit
fi

# Definición de directorios a utilizar.
TOP_DIR="${HOME}/WRF"
DOMAIN_DIR="${TOP_DIR}/domains/${1}"
PARM_UPP="${TOP_DIR}/UPPV3.0/parm"
WRFPRD="${DOMAIN_DIR}/wrfprd"
PARM="${DOMAIN_DIR}/parm"
POSTPRD="${DOMAIN_DIR}/postprd"
SHARE="${HOME}/wrf_model/share"
SCRIPTS="${HOME}/wrf_model/scripts"
WRF_PRD="${HOME}/WRF_PRD"
gribs="${WRF_PRD}/${1}/gribs"
maps="${WRF_PRD}/${1}/maps"

# Comprobación de que ya se han terminado las tareas de WRF y WPS.
WPS_FINISHED=${DOMAIN_DIR}/WPS_${1}_`date +%Y%m%d`_00.FINALIZADO
WRF_FINISHED=${DOMAIN_DIR}/WRF_${1}_`date +%Y%m%d`_00.FINALIZADO
if test ! -e ${WPS_FINISHED} -o ! -e ${WRF_FINISHED} ; then
  echo "[`date +%Y-%m-%d_%H:%M:%S`] - Aún no ha finalizado WPS ni WRF."
  exit
fi

# Comprobación de que las tareas no han sido ya realizadas.
UPP_FINISHED=${DOMAIN_DIR}/UPP_${1}_`date +%Y%m%d`_00.FINALIZADO
if test -e ${UPP_FINISHED} ; then
  echo "[`date +%Y-%m-%d_%H:%M:%S`] - La pasada ya ha sido finalizada anteriormente. Saliendo."
  exit
fi

# Comprobación de que no se están ejecutando ya las tareas. De ser así, salimos.
UPP_LOCKFILE=${DOMAIN_DIR}/UPP_${1}_`date +%Y%m%d`_00.lock
if test -e ${UPP_LOCKFILE} ; then
  echo "[`date +%Y-%m-%d_%H:%M:%S`] - Ya está trabajando upp_run.sh ${1}"
  exit
else
  touch ${UPP_LOCKFILE}
fi

# Comprobación de que existen los directorios oportunos del dominio para las
# tareas de UPP.
if ! -d ${WRFPRD} ; then
  mkdir ${WRFPRD}
fi
if ! -d ${PARM} ; then
  mkdir ${PARM}
fi
if ! -d ${POSTPRD} ; then
  mkdir ${POSTPRD}
fi

# Comprobación de que existe wrf_cntrl.parm en la carpeta parm/ del dominio.
parmFile=${PARM}/wrf_cntrl.parm
if test ! -s ${parmFile} ; then
  cp ${PARM_UPP}/wrf_cntrl.parm ${PARM}/
fi

# Comprobación de que existen los directorios apropiados en $WRF_PRD para guardar datos.
if test ! -d ${WRF_PRD}/${1} ; then
  mkdir ${WRF_PRD}/${1}
  mkdir ${gribs} ${maps}
fi

# Ejecución del postprocesado UPP, borrando previamente todo lo que haya en postprd/ .
# --> (16/06/2016) Parche para lanzar la fase de postprocesado para diferentes marcos
# temporales dependiendo de si son los Guillerminios o no.
rm ${POSTPRD}/*
if test ${1} = 'ESP010' ; then
  lastfhr=24
else
  lastfhr=03
fi
${SCRIPTS}/run_unipost_gcc ${1} ${lastfhr}

# Copio los archivos wrfprs* en formato grib a la carpeta.
cp ${POSTPRD}/wrfprs* ${gribs}
rm ${POSTPRD}/*
#rm ${WRFPRD}/*

# --> (16/06/2016) Parche para que los mapas se creen únicamente para el dominio ESP010
# y no par alos Guillerminios.
if test ${1} = 'ESP010' ; then
  # Lanzo los scripts que generan los mapas y crean enlaces en el directorio web.
  ${SHARE}/Mapa_Temp2m+GLOBE.sh ${1}
  ${SHARE}/Mapa_Nubes.sh ${1}
  ${SHARE}/Mapa_PresyViento.sh ${1}
  ${SHARE}/mapa_temperatura_2m.sh
fi

# Borrado de los mapas anteriores a una semana. También los enlaces para web.
for dia in 7 8 9 10 11 12 13 14 15 ; do
  fecha=`date +%Y%m%d --date="$dia days ago"`
  rm ${maps}/*${fecha}*
done

# Acabadas las tareas de UPP, borro $UPP_LOCKFILE y creo $UPP_FINISHED.
rm ${UPP_LOCKFILE}
touch ${UPP_FINISHED}
echo "[`date +%Y-%m-%d_%H:%M:%S`] - Tareas de upp_run_gcc.sh ${1} finalizadas."
