SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/bin/env bash | |
| 2 | # Automatizacion corrida WRF en area51 | |
| 3 | # export DISPLAY=":0.0" | |
| 4 | ||
| 5 | # 20100608: Incorporando PBS/Torque Resource Manager con Maui Scheduler para manejar recursos computacionales para las tareas en SPOA | |
| 6 | #PBS -N SPOA_WRF_Daily | |
| 7 | #PBS -l nodes=1:mainNode,walltime=8:00:00 | |
| 8 | #PBS -k o | |
| 9 | #PBS -q batch | |
| 10 | #PBS -M [email protected] | |
| 11 | #PBS -m abe | |
| 12 | #PBS -j oe | |
| 13 | #20100805: Guardando GFS DATA Ultimo! | |
| 14 | ARGS=($@) #cadena de argumentos | |
| 15 | NARGS=$# #numero de argumentos | |
| 16 | NOPREP="NO" | |
| 17 | DOM="1" #numero de dominios a computar | |
| 18 | ||
| 19 | - | TOTHST=5 |
| 19 | + | |
| 20 | - | CPUNUM=40 #2 CPU x Node |
| 20 | + | |
| 21 | SHAREHOST="dimarbtaweb19" | |
| 22 | # WRF_PATH="/spoa/WRFV33" | |
| 23 | WRF_PATH="/home/slonin/WRFV33" | |
| 24 | NFS_WRF_PATH="/mnt/nfs/wrf/car" | |
| 25 | NFS_WRF_EQUION="/mnt/nfs/wrf/equion" | |
| 26 | PNG_WRF_PATH="/spoa/data/wrf/png/car/$TODAY" | |
| 27 | WRFOUT_PATH="/spoa/data/wrf/out/car" | |
| 28 | WRFOUTP=$WRF_PATH/WRFV3/run | |
| 29 | WRFOUT_FNAME=$WRFOUTP/wrfout_d01_$WRFHOY'_00:00:00' | |
| 30 | WRFOUT_FSIZE=7225892912 | |
| 31 | # WRFOUT_FSIZE=2996122160 #48Hours | |
| 32 | hoy=$(date -u '+%b %e') | |
| 33 | # hoy=$(date -d yesterday '+%b %e') #fecha de ayer | |
| 34 | TOTHST=6 | |
| 35 | # TOTHST=4 | |
| 36 | # CPUNUM=48 #8 CPU x 6 Node (included Canete): Begin 20121109 | |
| 37 | # CPUNUM=40 #20130412: cruz node down for power suppy general failure! | |
| 38 | CPUNUM=44 #20130925: cruz node up but with 1 Intel Xeon QuadCore Processor enabled! | |
| 39 | ||
| 40 | # CPUNUM=24 | |
| 41 | # HPCHST=/home/slonin/.mpd.hosts | |
| 42 | # MACHINEFILE=/home/slonin/carhosts.mpich2 | |
| 43 | MACHINEFILE=/home/slonin/hosts.ompi | |
| 44 | ||
| 45 | # ayer=$(date -d '1 day ago' '+%Y%m%d') | |
| 46 | # mkdir /opt/spoa/data/gfs/$ayer | |
| 47 | # cp -a /opt/spoa/WRFV22/WPS/GFS_DATA/* /opt/spoa/data/gfs/$ayer | |
| 48 | ||
| 49 | #mover salida wrf_out netcdf file de ultima corrida a /opt/spoa/wrf/car | |
| 50 | # cd /opt/spoa/WRFV22/WRFV2/run | |
| 51 | # wrfout=`ls wrfout_d01_$(date -d '1 day ago' '+%Y-%m-%d')_00:00:00` | |
| 52 | - | mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca mpi_leave_pinned 1 --mca btl openib,self wrf.exe |
| 52 | + | # mv $wrfout $WRFOUT_PATH |
| 53 | # rm /opt/spoa/WRFV22/ARWPost/$wrfout #wrfout_d01_ symbolic link removal | |
| 54 | ||
| 55 | # ***************************** | |
| 56 | # * W R F - C A R I B B E A N * | |
| 57 | # ***************************** | |
| 58 | cd /spoa/scripts/python | |
| 59 | python gfsdown.py -type wrf #bajar datos GFS y preparar namelists | |
| 60 | ||
| 61 | #leer atributos-parametros: | |
| 62 | for i in "${ARGS[@]}"; do
| |
| 63 | if [ $i == '-noprep' ]; then | |
| 64 | NOPREP="SI" | |
| 65 | elif [ $i == '-dom=2' ]; then | |
| 66 | DOM="2" | |
| 67 | fi | |
| 68 | done | |
| 69 | ||
| 70 | cd $WRF_PATH/WRFV3/run | |
| 71 | if [ $NOPREP == "NO" ]; then | |
| 72 | cd ../../WPS | |
| 73 | ./link_grib.csh GFS_DATA/ | |
| 74 | ./geogrid.exe | |
| 75 | ./ungrib.exe | |
| 76 | ./metgrid.exe | |
| 77 | # arreglo con archivos metgrid generados | |
| 78 | metem=(`ls -l met_em*.nc | awk '/'"$hoy"'/ {print $9}'`)
| |
| 79 | - | python /spoa/scripts/python/gfsdown.py -type arwdom02 #20120127: Nuevo subdom para Cartagena y alrededores |
| 79 | + | |
| 80 | for i in "${metem[@]}"; do
| |
| 81 | ln -s ../../WPS/$i | |
| 82 | done | |
| 83 | fi | |
| 84 | - | python /spoa/scripts/python/gfsdown.py -type arwdom03 #20121019: Galerazamba |
| 84 | + | # mpdprocs=`ps -efH| grep -i mpd|sed 1d|wc -l` |
| 85 | # if [ $mpdprocs -eq 0 ]; then #no se ha iniciado anillo MPICH | |
| 86 | # mpdallexit | |
| 87 | # mpdboot -v --totalnum=$TOTHST --ncpus=8 --ifhn=10.0.1.1 -f $HPCHST | |
| 88 | # fi | |
| 89 | # sudo drbdadm --stacked disconnect drbd0-U | |
| 90 | # sudo drbdadm disconnect drbd0 | |
| 91 | echo "`date +%H:%M`" > wrfstart | |
| 92 | echo "Begin WRFCaribbean real.exe at `date +%H:%M:%S`" | |
| 93 | # time mpiexec -machinefile $MACHINEFILE -n $CPUNUM ./real.exe #MPICH2 | |
| 94 | # mpirun -np 8 --hostfile $MACHINEFILE --mca btl openib,self --mca mpi_leave_pinned 1 real.exe #OpenMPI | |
| 95 | # mpirun -np 8 --hostfile $MACHINEFILE --mca mpi_leave_pinned 0 --mca btl openib,self real.exe #OpenMPI | |
| 96 | ./real.exe | |
| 97 | rm rsl.* | |
| 98 | echo "End of WRFCaribbean real.exe at `date +%H:%M:%S`" | |
| 99 | sleep 4 | |
| 100 | echo "Begin WRFCaribbean wrf.exe at `date +%H:%M:%S`" | |
| 101 | # time mpiexec -machinefile $MACHINEFILE -n $CPUNUM ./wrf.exe | |
| 102 | # mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca btl openib,self --mca mpi_leave_pinned 1 wrf.exe | |
| 103 | # mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca mpi_leave_pinned 1 --mca btl openib,self wrf.exe | |
| 104 | # exit 1 | |
| 105 | - | python /spoa/scripts/python/smtp.py "WRF: Satisfactorio!" "Las graficas han sido enviadas al servidor web x publicacion." |
| 105 | + | time mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca mpi_leave_pinned 1 --mca btl openib,self ./wrf.exe |
| 106 | echo "End of WRFCaribbean wrf.exe at `date +%H:%M:%S`" | |
| 107 | ||
| 108 | WRFOUT_SIZE=`stat -c%s $WRFOUT_FNAME` | |
| 109 | if [ -f $WRFOUT_FNAME ] && [ $WRFOUT_SIZE -eq $WRFOUT_FSIZE ]; then | |
| 110 | echo "End WRFCaribbean wrf.exe at `date +%H:%M:%S`" | |
| 111 | echo "`date +%H:%M`" >> wrfstart | |
| 112 | sleep 10 | |
| 113 | cp rsl.out.0000 $WRFOUT_PATH/rsl.`date +%Y%m%d`.out | |
| 114 | rm rsl.* | |
| 115 | rm -f $WRF_PATH/WPS/met_em* | |
| 116 | rm -f $WRF_PATH/WPS/FILE* | |
| 117 | rm -f $WRF_PATH/WPS/GRIBFILE.AA? | |
| 118 | rm -f $WRF_PATH/WRFV3/run/met_em* | |
| 119 | rm -f $WRF_PATH/WRFV3/run/rsl* | |
| 120 | rm -f $WRF_PATH/WRFV3/run/{wrfinput_d02,wrfbdy_d01,wrfinput_d01}
| |
| 121 | # hoy=$(`date '+%Y_%m_%d') | |
| 122 | # wrfout=(`ls wrfout_{d01,d02,d03}_$(date '+%Y-%m-%d')_06:00:00`)
| |
| 123 | # Si quieres escoger un dia especial, ejemplo el dia de ayer: | |
| 124 | # wrfout=(`ls wrfout_d01_$(date -d '1 day ago' '+%Y-%m-%d')_00:00:00`) | |
| 125 | if [ $DOM == "2" ]; then | |
| 126 | wrfout=(`ls wrfout_{d01,d02}_"$WRFHOY"_00:00:00`)
| |
| 127 | else | |
| 128 | wrfout=(`ls wrfout_d01_"$WRFHOY"_00:00:00`) | |
| 129 | fi | |
| 130 | cd $WRF_PATH/ARWpost | |
| 131 | for i in "${wrfout[@]}"; do
| |
| 132 | ln -s ../WRFV3/run/$i | |
| 133 | done | |
| 134 | python /spoa/scripts/python/gfsdown.py -type arwdom01 | |
| 135 | ./ARWpost.exe | |
| 136 | if [ $DOM == "2" ]; then | |
| 137 | python /spoa/scripts/python/gfsdown.py -type arwdom02 #20120127: Nuevo subdom para Cartagena y alrededores | |
| 138 | ./ARWpost.exe | |
| 139 | # ../../scripts/bash/./arwpost120.sh -dom=2 | |
| 140 | /spoa/scripts/bash/./arwpost120.sh -dom=2 | |
| 141 | ||
| 142 | #EQUION WRF II Domain Generation | |
| 143 | python /spoa/scripts/python/gfsdown.py -type arwdom03 #20121019: Galerazamba | |
| 144 | ./ARWpost.exe | |
| 145 | /spoa/scripts/bash/./arwpost120equion.sh | |
| 146 | else | |
| 147 | # ../../scripts/bash/./arwpost120.sh | |
| 148 | /spoa/scripts/bash/./arwpost120.sh | |
| 149 | fi | |
| 150 | # Jan-07-10: Comment about GRADS & ARWPOST | |
| 151 | grads -l -b -c arwpst.gs | |
| 152 | hoy=$(date -u '+%b %e') | |
| 153 | grdspng=(`ls -l *.png | awk '/'"$hoy"'/ {print $9}'`)
| |
| 154 | val_=`ping -c 3 $SHAREHOST 2> /dev/null | grep " 0%"` #verify webserver is alive | |
| 155 | if [ ! -d $PNG_WRF_PATH ]; then | |
| 156 | mkdir $PNG_WRF_PATH | |
| 157 | fi | |
| 158 | if [ -n "${val_}" ]; then
| |
| 159 | for j in "${grdspng[@]}"; do
| |
| 160 | cp -a $j $NFS_WRF_PATH | |
| 161 | echo "cp -a $j to $NFS_WRF_PATH" | |
| 162 | cp -a $j $PNG_WRF_PATH | |
| 163 | rm -f $j | |
| 164 | done | |
| 165 | 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." | |
| 166 | else | |
| 167 | echo "WRF:" "Las graficas son enviadas localmente." | |
| 168 | for j in "${grdspng[@]}"; do
| |
| 169 | echo "cp -a $j to $PNG_WRF_PATH" | |
| 170 | cp -a $j $PNG_WRF_PATH | |
| 171 | rm -f $j | |
| 172 | done | |
| 173 | fi | |
| 174 | #20121019: EQUION Graphs | |
| 175 | grads -l -b -c arwpst_equion.gs | |
| 176 | tar cf - `ls *.png` | 7zr a -si /spoa/data/wrf/equion.png/$TODAY.png.tar.7z | |
| 177 | val_=`ping -c 3 $SHAREHOST 2> /dev/null | grep " 0%"` #verify webserver is alive | |
| 178 | if [ -n "${val_}" ]; then
| |
| 179 | ANHO=$(date -u '+%Y') | |
| 180 | MES=$(date -u '+%m') | |
| 181 | DIA=$(date -u '+%d') | |
| 182 | NFS_PNG=$NFS_WRF_EQUION/$ANHO/$MES/$DIA | |
| 183 | if [ ! -d $NFS_PNG ]; then | |
| 184 | mkdir -p $NFS_PNG | |
| 185 | fi | |
| 186 | echo "Graficos GRZ: presion_vientos, nubes_*, precipitacion_* a Webserver" | |
| 187 | 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
| |
| 188 | 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
| |
| 189 | cp -p `ls precipitacion_*.png` $NFS_PNG | |
| 190 | cp -p `ls *.png | egrep '*_(aerop|mapale1|mapale2)\.png$'` $NFS_PNG | |
| 191 | fi | |
| 192 | ||
| 193 | #eliminar ctl y dat generados por ARWPost | |
| 194 | grdsctl=(`ls -l *.ctl | awk '/'"$hoy"'/ {print substr($9,-4,9)}'| grep [[:digit:]]`)
| |
| 195 | for k in "${grdsctl[@]}"; do
| |
| 196 | rm -f $k.ctl $k.dat | |
| 197 | done | |
| 198 | rm -f *.png | |
| 199 | rm ${wrfout[0]} #elimina el link simbolico a wrfout del dia!
| |
| 200 | if [ $DOM == "2" ]; then | |
| 201 | rm ${wrfout[1]}
| |
| 202 | fi | |
| 203 | fi | |
| 204 | # sudo drbdadm connect drbd0 | |
| 205 | # sudo drbdadm --stacked connect drbd0-U | |
| 206 | exit 1 |