#!/bin/bash
#################################################################################
# Script que se encarga de correr el postprocesado para todos los Guillerminios.
#
# Marcos Molina Cano - 16/06/2016
#################################################################################

# Definición de directorios necesarios.
TOP_DIR="${HOME}/WRF"
TOP_DOMINIO="${TOP_DIR}/domains"

# Antes de nada, se comprueba que el dominio ESP010 ya ha sido calculado. Si no es así,
# salimos.
DOMAIN_DIR="${TOP_DIR}/domains/ESP010"
UPP_FINISHED="${DOMAIN_DIR}/UPP_ESP010_`date +%Y%m%d`_00.FINALIZADO"
if test ! -e ${UPP_FINISHED} ; then
  exit
fi

# Definición del archivo de bloqueo y de finalización.
upp_run_padre_LOCKFILE=${TOP_DOMINIO}/upp_run_padre.lock
upp_run_padre_FINISHED=${TOP_DOMINIO}/upp_run_padre_`date -u +%Y%m%d_00`.FINISHED

# Comprobación de que no existe el archivo de finalización. Si existe, salimos pues
# el trabajo ya ha sido completado anteriormente.
if test -e ${upp_run_padre_FINISHED} ; then
  exit
fi

# Comprobación de que no existe el archivo de bloqueo. Si existe, salimos. Si no,
# lo creamos para empezar el trabajo.
if test -e ${upp_run_padre_LOCKFILE} ; then
  exit
else
  touch ${upp_run_padre_LOCKFILE}
fi

# Lista de dominios a estudiar.
dominio="AMN013 AMS013 AZO010 EUR010 MAG016 RUS015"

problemas=0
for DOMINIO in ${dominio} ; do
  DOMAIN_DIR="${TOP_DIR}/domains/${DOMINIO}"
  WPS_FINISHED="${DOMAIN_DIR}/WPS_${DOMINIO}_`date +%Y%m%d`_00.FINALIZADO"
  WRF_FINISHED="${DOMAIN_DIR}/WRF_${DOMINIO}_`date +%Y%m%d`_00.FINALIZADO"
  UPP_FINISHED="${DOMAIN_DIR}/UPP_${DOMINIO}_`date +%Y%m%d`_00.FINALIZADO"

  if test -e ${UPP_FINISHED} ; then
    echo "Ya existe ${UPP_FINISHED}"
    continue
  fi

  if test ! -e ${WPS_FINISHED} -o ! -e ${WRF_FINISHED}; then
    problemas=1
    echo "No existe ${WPS_FINISHED} o ${WRF_FINISHED}"
    continue
  fi

  ${HOME}/wrf_model/scripts/upp_run_gcc.sh ${DOMINIO}

  if test ! -e ${UPP_FINISHED} ; then
    problemas=1
    echo "Problemas con ${DOMINIO}"
  fi
done

if test ${problemas} -gt 0 ; then
  rm ${upp_run_padre_LOCKFILE}
else
  rm ${upp_run_padre_LOCKFILE}
  touch ${upp_run_padre_FINISHED}
fi
