m0n0lithic

wrf.sh

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