#!/bin/bash
#################################################################################
# Script que se encarga de correr el modelo WRF para todos los dominios.
#
# Marcos Molina Cano - 14/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"
WRF_FINISHED="${DOMAIN_DIR}/WRF_ESP010_`date +%Y%m%d`_00.FINALIZADO"
if test ! -e ${WRF_FINISHED} ; then
  exit
fi

# Definición del archivo de bloqueo y de finalización.
wrf_run_padre_LOCKFILE=${TOP_DOMINIO}/wrf_run_padre.lock
wrf_run_padre_FINISHED=${TOP_DOMINIO}/wrf_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 ${wrf_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 ${wrf_run_padre_LOCKFILE} ; then
  exit
else
  touch ${wrf_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"

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

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

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

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

if test ${problemas} -gt 0 ; then
  rm ${wrf_run_padre_LOCKFILE}
else
  rm ${wrf_run_padre_LOCKFILE}
  touch ${wrf_run_padre_FINISHED}
fi
