m0n0lithic icon

wrf.sh

m0n0lithic | PRO | 05/12/14 01:22:16 PM UTC | 0 ⭐ | 552 👁️ | Never ⏰ | []
Bash |

7.78 KB

|

None

|

0 👍

/

0 👎

#!/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