#!/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 slonin@area51.cioh.org.co #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