#!/bin/env bash
# Automatizacion corrida WRF en area51
# export DISPLAY=":0.0"
# 20100608: Incorporando PBS/Torque Resource Manager con Maui Scheduler para manejar recursos computacionales para las tareas en SPOA
#PBS -N SPOA_WRF_Daily
#PBS -l nodes=1:mainNode,walltime=8:00:00
#PBS -k o
#PBS -q batch
#PBS -M [email protected]
#PBS -m abe
#PBS -j oe
#20100805: Guardando GFS DATA Ultimo!
ARGS=($@) #cadena de argumentos
NARGS=$# #numero de argumentos
NOPREP="NO"
DOM="1" #numero de dominios a computar
WRFHOY=$(date -u '+%Y-%m-%d')
TODAY=$(date -u '+%Y%m%d')
SHAREHOST="dimarbtaweb19"
# WRF_PATH="/spoa/WRFV33"
WRF_PATH="/home/slonin/WRFV33"
NFS_WRF_PATH="/mnt/nfs/wrf/car"
NFS_WRF_EQUION="/mnt/nfs/wrf/equion"
PNG_WRF_PATH="/spoa/data/wrf/png/car/$TODAY"
WRFOUT_PATH="/spoa/data/wrf/out/car"
WRFOUTP=$WRF_PATH/WRFV3/run
WRFOUT_FNAME=$WRFOUTP/wrfout_d01_$WRFHOY'_00:00:00'
WRFOUT_FSIZE=7225892912
# WRFOUT_FSIZE=2996122160 #48Hours
hoy=$(date -u '+%b %e')
# hoy=$(date -d yesterday '+%b %e') #fecha de ayer
TOTHST=6
# TOTHST=4
# CPUNUM=48 #8 CPU x 6 Node (included Canete): Begin 20121109
# CPUNUM=40 #20130412: cruz node down for power suppy general failure!
CPUNUM=44 #20130925: cruz node up but with 1 Intel Xeon QuadCore Processor enabled!
# CPUNUM=24
# HPCHST=/home/slonin/.mpd.hosts
# MACHINEFILE=/home/slonin/carhosts.mpich2
MACHINEFILE=/home/slonin/hosts.ompi
# ayer=$(date -d '1 day ago' '+%Y%m%d')
# mkdir /opt/spoa/data/gfs/$ayer
# cp -a /opt/spoa/WRFV22/WPS/GFS_DATA/* /opt/spoa/data/gfs/$ayer
#mover salida wrf_out netcdf file de ultima corrida a /opt/spoa/wrf/car
# cd /opt/spoa/WRFV22/WRFV2/run
# wrfout=`ls wrfout_d01_$(date -d '1 day ago' '+%Y-%m-%d')_00:00:00`
# mv $wrfout $WRFOUT_PATH
# rm /opt/spoa/WRFV22/ARWPost/$wrfout #wrfout_d01_ symbolic link removal
# *****************************
# * W R F - C A R I B B E A N *
# *****************************
cd /spoa/scripts/python
python gfsdown.py -type wrf #bajar datos GFS y preparar namelists
#leer atributos-parametros:
for i in "${ARGS[@]}"; do
if [ $i == '-noprep' ]; then
NOPREP="SI"
elif [ $i == '-dom=2' ]; then
DOM="2"
fi
done
cd $WRF_PATH/WRFV3/run
if [ $NOPREP == "NO" ]; then
cd ../../WPS
./link_grib.csh GFS_DATA/
./geogrid.exe
./ungrib.exe
./metgrid.exe
# arreglo con archivos metgrid generados
metem=(`ls -l met_em*.nc | awk '/'"$hoy"'/ {print $9}'`)
cd ../WRFV3/run
for i in "${metem[@]}"; do
ln -s ../../WPS/$i
done
fi
# mpdprocs=`ps -efH| grep -i mpd|sed 1d|wc -l`
# if [ $mpdprocs -eq 0 ]; then #no se ha iniciado anillo MPICH
# mpdallexit
# mpdboot -v --totalnum=$TOTHST --ncpus=8 --ifhn=10.0.1.1 -f $HPCHST
# fi
# sudo drbdadm --stacked disconnect drbd0-U
# sudo drbdadm disconnect drbd0
echo "`date +%H:%M`" > wrfstart
echo "Begin WRFCaribbean real.exe at `date +%H:%M:%S`"
# time mpiexec -machinefile $MACHINEFILE -n $CPUNUM ./real.exe #MPICH2
# mpirun -np 8 --hostfile $MACHINEFILE --mca btl openib,self --mca mpi_leave_pinned 1 real.exe #OpenMPI
# mpirun -np 8 --hostfile $MACHINEFILE --mca mpi_leave_pinned 0 --mca btl openib,self real.exe #OpenMPI
./real.exe
rm rsl.*
echo "End of WRFCaribbean real.exe at `date +%H:%M:%S`"
sleep 4
echo "Begin WRFCaribbean wrf.exe at `date +%H:%M:%S`"
# time mpiexec -machinefile $MACHINEFILE -n $CPUNUM ./wrf.exe
# mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca btl openib,self --mca mpi_leave_pinned 1 wrf.exe
# mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca mpi_leave_pinned 1 --mca btl openib,self wrf.exe
# exit 1
time mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca mpi_leave_pinned 1 --mca btl openib,self ./wrf.exe
echo "End of WRFCaribbean wrf.exe at `date +%H:%M:%S`"
WRFOUT_SIZE=`stat -c%s $WRFOUT_FNAME`
if [ -f $WRFOUT_FNAME ] && [ $WRFOUT_SIZE -eq $WRFOUT_FSIZE ]; then
echo "End WRFCaribbean wrf.exe at `date +%H:%M:%S`"
echo "`date +%H:%M`" >> wrfstart
sleep 10
cp rsl.out.0000 $WRFOUT_PATH/rsl.`date +%Y%m%d`.out
rm rsl.*
rm -f $WRF_PATH/WPS/met_em*
rm -f $WRF_PATH/WPS/FILE*
rm -f $WRF_PATH/WPS/GRIBFILE.AA?
rm -f $WRF_PATH/WRFV3/run/met_em*
rm -f $WRF_PATH/WRFV3/run/rsl*
rm -f $WRF_PATH/WRFV3/run/{wrfinput_d02,wrfbdy_d01,wrfinput_d01}
# hoy=$(`date '+%Y_%m_%d')
# wrfout=(`ls wrfout_{d01,d02,d03}_$(date '+%Y-%m-%d')_06:00:00`)
# Si quieres escoger un dia especial, ejemplo el dia de ayer:
# wrfout=(`ls wrfout_d01_$(date -d '1 day ago' '+%Y-%m-%d')_00:00:00`)
if [ $DOM == "2" ]; then
wrfout=(`ls wrfout_{d01,d02}_"$WRFHOY"_00:00:00`)
else
wrfout=(`ls wrfout_d01_"$WRFHOY"_00:00:00`)
fi
cd $WRF_PATH/ARWpost
for i in "${wrfout[@]}"; do
ln -s ../WRFV3/run/$i
done
python /spoa/scripts/python/gfsdown.py -type arwdom01
./ARWpost.exe
if [ $DOM == "2" ]; then
python /spoa/scripts/python/gfsdown.py -type arwdom02 #20120127: Nuevo subdom para Cartagena y alrededores
./ARWpost.exe
# ../../scripts/bash/./arwpost120.sh -dom=2
/spoa/scripts/bash/./arwpost120.sh -dom=2
#EQUION WRF II Domain Generation
python /spoa/scripts/python/gfsdown.py -type arwdom03 #20121019: Galerazamba
./ARWpost.exe
/spoa/scripts/bash/./arwpost120equion.sh
else
# ../../scripts/bash/./arwpost120.sh
/spoa/scripts/bash/./arwpost120.sh
fi
# Jan-07-10: Comment about GRADS & ARWPOST
grads -l -b -c arwpst.gs
hoy=$(date -u '+%b %e')
grdspng=(`ls -l *.png | awk '/'"$hoy"'/ {print $9}'`)
val_=`ping -c 3 $SHAREHOST 2> /dev/null | grep " 0%"` #verify webserver is alive
if [ ! -d $PNG_WRF_PATH ]; then
mkdir $PNG_WRF_PATH
fi
if [ -n "${val_}" ]; then
for j in "${grdspng[@]}"; do
cp -a $j $NFS_WRF_PATH
echo "cp -a $j to $NFS_WRF_PATH"
cp -a $j $PNG_WRF_PATH
rm -f $j
done
python /spoa/scripts/python/smtp.py "WRF: Satisfactorio!. http://www.cioh.org.co/meteorologia/wrf.php" "Las graficas han sido enviadas al servidor web x publicacion."
else
echo "WRF:" "Las graficas son enviadas localmente."
for j in "${grdspng[@]}"; do
echo "cp -a $j to $PNG_WRF_PATH"
cp -a $j $PNG_WRF_PATH
rm -f $j
done
fi
#20121019: EQUION Graphs
grads -l -b -c arwpst_equion.gs
tar cf - `ls *.png` | 7zr a -si /spoa/data/wrf/equion.png/$TODAY.png.tar.7z
val_=`ping -c 3 $SHAREHOST 2> /dev/null | grep " 0%"` #verify webserver is alive
if [ -n "${val_}" ]; then
ANHO=$(date -u '+%Y')
MES=$(date -u '+%m')
DIA=$(date -u '+%d')
NFS_PNG=$NFS_WRF_EQUION/$ANHO/$MES/$DIA
if [ ! -d $NFS_PNG ]; then
mkdir -p $NFS_PNG
fi
echo "Graficos GRZ: presion_vientos, nubes_*, precipitacion_* a Webserver"
cp -p `ls presion_vientos_grz*.png | egrep '(presion_vientos_grz_[0-9]{4}-[0-9]{2}-[0-9]{2}_(22|01|04|07|10|13|16|19)00R\.png$)'` $NFS_PNG
cp -p `ls nubes_*_grz*.png | egrep '(nubes_(bajas|medias|altas)_grz_[0-9]{4}-[0-9]{2}-[0-9]{2}_(22|01|04|07|10|13|16|19)00R\.png$)'` $NFS_PNG
cp -p `ls precipitacion_*.png` $NFS_PNG
cp -p `ls *.png | egrep '*_(aerop|mapale1|mapale2)\.png$'` $NFS_PNG
fi
#eliminar ctl y dat generados por ARWPost
grdsctl=(`ls -l *.ctl | awk '/'"$hoy"'/ {print substr($9,-4,9)}'| grep [[:digit:]]`)
for k in "${grdsctl[@]}"; do
rm -f $k.ctl $k.dat
done
rm -f *.png
rm ${wrfout[0]} #elimina el link simbolico a wrfout del dia!
if [ $DOM == "2" ]; then
rm ${wrfout[1]}
fi
fi
# sudo drbdadm connect drbd0
# sudo drbdadm --stacked connect drbd0-U
exit 1
Comments