SHOW:
|
|
- or go back to the newest paste.
| 1 | - | #!/bin/env bash |
| 1 | + | #!/bin/bash |
| 2 | - | # Automatizacion corrida WRF en area51 |
| 2 | + | # Corrida diaria Modelos y rutinas SPOA |
| 3 | - | # export DISPLAY=":0.0" |
| 3 | + | # |
| 4 | CLOGFILE=/opt/spoa/log/caribbean.log | |
| 5 | - | # 20100608: Incorporando PBS/Torque Resource Manager con Maui Scheduler para manejar recursos computacionales para las tareas en SPOA |
| 5 | + | GFS_NFILES=21 |
| 6 | - | #PBS -N SPOA_WRF_Daily |
| 6 | + | #Cantidad de archivos a descargar |
| 7 | - | #PBS -l nodes=1:mainNode,walltime=8:00:00 |
| 7 | + | # GFS_DATAP=/spoa/WRFV33/WPS/GFS_DATA |
| 8 | - | #PBS -k o |
| 8 | + | GFS_DATAP=/home/slonin/WRFV33/WPS/GFS_DATA |
| 9 | - | #PBS -q batch |
| 9 | + | GFS_FTP=/spoa/data/gfs/$(date '+%Y%m%d') |
| 10 | - | #PBS -M [email protected] |
| 10 | + | LOGFILE=/opt/spoa/log/caribbean.log |
| 11 | - | #PBS -m abe |
| 11 | + | # WRF_PATH=/spoa/WRFV33/WRFV3/run |
| 12 | - | #PBS -j oe |
| 12 | + | WRF_PATH=/home/slonin/WRFV33/WRFV3/run |
| 13 | - | #20100805: Guardando GFS DATA Ultimo! |
| 13 | + | GFSFTPP=gfs.$(date '+%Y%m%d')00 # "gfs.2011121600" |
| 14 | - | ARGS=($@) #cadena de argumentos |
| 14 | + | DOM="1" |
| 15 | - | NARGS=$# #numero de argumentos |
| 15 | + | HOST=1 |
| 16 | - | NOPREP="NO" |
| 16 | + | # 201208278: Eliminar log anterior si existe! |
| 17 | - | DOM="1" #numero de dominios a computar |
| 17 | + | # if [ -f "$CLOGFILE" ]; then |
| 18 | # rm $CLOGFILE | |
| 19 | - | WRFHOY=$(date -u '+%Y-%m-%d') |
| 19 | + | |
| 20 | - | TODAY=$(date -u '+%Y%m%d') |
| 20 | + | #2012: leer la cantidad de dominios a procesar |
| 21 | - | SHAREHOST="dimarbtaweb19" |
| 21 | + | for i in "$@"; do |
| 22 | - | WRF_PATH="/spoa/WRFV33" |
| 22 | + | if [ $i == '-dom=2' ]; then |
| 23 | - | NFS_WRF_PATH="/mnt/nfs/wrf/car" |
| 23 | + | |
| 24 | - | PNG_WRF_PATH="/spoa/data/wrf/png/car/$TODAY" |
| 24 | + | |
| 25 | - | WRFOUT_PATH="/spoa/data/wrf/out/car" |
| 25 | + | if [ $i == '-host=2' ]; then |
| 26 | - | WRFOUTP=$WRF_PATH/WRFV3/run |
| 26 | + | HOST=2 |
| 27 | - | WRFOUT_FNAME=$WRFOUTP/wrfout_d01_$WRFHOY'_00:00:00' |
| 27 | + | |
| 28 | - | WRFOUT_FSIZE=7225892912 |
| 28 | + | |
| 29 | - | # WRFOUT_FSIZE=7225892368 |
| 29 | + | ftpstat=`ncftpget -r1 ftpprd.ncep.noaa.gov . /pub/data/nccf/com/gfs/prod/$GFSFTPP 2>&1 > /dev/null | grep 'Connection timed out'` |
| 30 | - | hoy=$(date -u '+%b %e') |
| 30 | + | # ftpstat=`ncftpget -r1 ftpprd.ncep.noaa.gov . /pub/data/nccf/com/gfs/prod/$GFSFTPP 2>&1 > /dev/null | grep 'Not a regular file'` |
| 31 | - | # hoy=$(date -d yesterday '+%b %e') #fecha de ayer |
| 31 | + | # if [ $ftpstat == "Connection timed out" ]; then exit 1; fi |
| 32 | - | TOTHST=5 |
| 32 | + | if [ -n "${ftpstat}" ]; then
|
| 33 | - | # TOTHST=4 |
| 33 | + | echo "No hay acceso al servidor FTP en este momento!, Finalizando script!!!" |
| 34 | - | CPUNUM=40 #2 CPU x Node |
| 34 | + | exit 1 |
| 35 | - | # CPUNUM=24 |
| 35 | + | |
| 36 | - | # HPCHST=/home/slonin/.mpd.hosts |
| 36 | + | # echo "Disabling DRBD Peers on Canete & Copiapo" |
| 37 | - | # MACHINEFILE=/home/slonin/carhosts.mpich2 |
| 37 | + | # sudo /sbin/drbdadm --stacked disconnect drbd0-U |
| 38 | - | MACHINEFILE=/home/slonin/hosts.ompi |
| 38 | + | # sudo /sbin/drbdadm -- disconnect drbd0 |
| 39 | echo "Now is time for Download GFS data `date +%H:%M:%S`" | |
| 40 | - | # ayer=$(date -d '1 day ago' '+%Y%m%d') |
| 40 | + | cd /spoa/scripts/python |
| 41 | - | # mkdir /opt/spoa/data/gfs/$ayer |
| 41 | + | if [ $HOST -eq 1 ]; then |
| 42 | - | # cp -a /opt/spoa/WRFV22/WPS/GFS_DATA/* /opt/spoa/data/gfs/$ayer |
| 42 | + | # python gfsdown.py -type wrf #bajar datos GFS y preparar namelists WRFCaribbean |
| 43 | python gfsdown.py -type wrf -dom=$DOM | |
| 44 | - | #mover salida wrf_out netcdf file de ultima corrida a /opt/spoa/wrf/car |
| 44 | + | else |
| 45 | - | # cd /opt/spoa/WRFV22/WRFV2/run |
| 45 | + | python gfsdown.py -type wrf -dom=$DOM -host=$HOST |
| 46 | - | # wrfout=`ls wrfout_d01_$(date -d '1 day ago' '+%Y-%m-%d')_00:00:00` |
| 46 | + | |
| 47 | - | # mv $wrfout $WRFOUT_PATH |
| 47 | + | #20120210: bajar datos GFS y preparar namelists WRFCaribbean para dominio y subdom Cartagena |
| 48 | - | # rm /opt/spoa/WRFV22/ARWPost/$wrfout #wrfout_d01_ symbolic link removal |
| 48 | + | # python gfsdown.py -type wrf >> $LOGFILE #bajar datos GFS y preparar namelists WRFCaribbean |
| 49 | ||
| 50 | # 20100930: VALIDACION DE TAMANO PROMEDIO ACEPTABLE DE LOS DATOS GFS DESCARGADOS | |
| 51 | - | # ***************************** |
| 51 | + | # DE ELLO DEPENDERA SI LOS MODELOS SE EJECUTARAN |
| 52 | - | # * W R F - C A R I B B E A N * |
| 52 | + | cd $GFS_DATAP |
| 53 | - | # ***************************** |
| 53 | + | countgfs=`ls -l|awk '/'"$(date '+%b %e')"'/ {print $9}'|wc -l`
|
| 54 | - | # cd /opt/spoa/scripts/python |
| 54 | + | #Cuenta la cantidad de ficheros descargados a la fecha, deben ser igual a GFS_NFILES |
| 55 | - | # python gfsdown.py -type wrf #bajar datos GFS y preparar namelists |
| 55 | + | if [ $countgfs -eq $GFS_NFILES ]; then |
| 56 | mkdir $GFS_FTP # crea folder para guardar GFS data del dia | |
| 57 | - | #leer atributos-parametros: |
| 57 | + | ## 20130920: Disable GFS file size validation |
| 58 | - | for i in "${ARGS[@]}"; do
|
| 58 | + | ## 20131030: Enable GFS file local copy |
| 59 | - | if [ $i == '-noprep' ]; then |
| 59 | + | gfsvectr=(`ls -l|awk '/'"$(date '+%b %e')"'/ {print $9}'`)
|
| 60 | - | NOPREP="SI" |
| 60 | + | # gfsintgr=1 |
| 61 | - | elif [ $i == '-dom=2' ]; then |
| 61 | + | for gfsf in "${gfsvectr[@]}"; do
|
| 62 | # gfsze=`stat -c%s $gfsf` | |
| 63 | # echo -e "$gfsf\\t$gfsze" >> $LOGFILE | |
| 64 | # if [ $gfsf = "gfs.t00z.pgrb2f00" ]; then | |
| 65 | # if [ $gfsze -gt 43000000 ]; then | |
| 66 | - | cd $WRF_PATH/WRFV3/run |
| 66 | + | cp -a $gfsf $GFS_FTP |
| 67 | - | if [ $NOPREP == "NO" ]; then |
| 67 | + | # continue |
| 68 | - | cd ../../WPS |
| 68 | + | # else |
| 69 | - | ./link_grib.csh GFS_DATA/ |
| 69 | + | # gfsintgr=0 |
| 70 | - | ./geogrid.exe |
| 70 | + | # break |
| 71 | - | ./ungrib.exe |
| 71 | + | # fi |
| 72 | - | ./metgrid.exe |
| 72 | + | # else |
| 73 | - | # arreglo con archivos metgrid generados |
| 73 | + | # if [ $gfsze -gt 47000000 ]; then |
| 74 | - | metem=(`ls -l met_em*.nc | awk '/'"$hoy"'/ {print $9}'`)
|
| 74 | + | # cp -a $gfsf $GFS_FTP |
| 75 | - | cd ../WRFV3/run |
| 75 | + | # continue |
| 76 | - | for i in "${metem[@]}"; do
|
| 76 | + | # else |
| 77 | - | ln -s ../../WPS/$i |
| 77 | + | # gfsintgr=0 |
| 78 | - | done |
| 78 | + | # break |
| 79 | # fi | |
| 80 | - | # mpdprocs=`ps -efH| grep -i mpd|sed 1d|wc -l` |
| 80 | + | # fi |
| 81 | - | # if [ $mpdprocs -eq 0 ]; then #no se ha iniciado anillo MPICH |
| 81 | + | |
| 82 | - | # mpdallexit |
| 82 | + | #if [ $gfsintgr -eq 1 ]; then |
| 83 | - | # mpdboot -v --totalnum=$TOTHST --ncpus=8 --ifhn=10.0.1.1 -f $HPCHST |
| 83 | + | echo "Ejecutando SPOA Caribbean" |
| 84 | echo "1" > ~/gfsready | |
| 85 | - | # sudo drbdadm --stacked disconnect drbd0-U |
| 85 | + | # enviando 1 a ~/gfsready para ejecutar WRFPacific! |
| 86 | - | # sudo drbdadm disconnect drbd0 |
| 86 | + | |
| 87 | - | echo "`date +%H:%M`" > wrfstart |
| 87 | + | cd /spoa/scripts/bash |
| 88 | - | echo "Begin WRFCaribbean real.exe at `date +%H:%M:%S`" |
| 88 | + | echo "Time for SPOA Caribbean at `date +%H:%M:%S`" |
| 89 | - | # time mpiexec -machinefile $MACHINEFILE -n $CPUNUM ./real.exe #MPICH2 |
| 89 | + | # ./caribbean.sh < /dev/null 2>&1 #1 domain |
| 90 | - | # mpirun -np 8 --hostfile $MACHINEFILE --mca btl openib,self --mca mpi_leave_pinned 1 real.exe #OpenMPI |
| 90 | + | ./caribbean.sh -dom=$DOM < /dev/null 2>&1 |
| 91 | - | # mpirun -np 8 --hostfile $MACHINEFILE --mca mpi_leave_pinned 0 --mca btl openib,self real.exe #OpenMPI |
| 91 | + | # 20120830: resetear estado de gfsready a 0 |
| 92 | - | ./real.exe |
| 92 | + | # echo "0" > ~/gfsready |
| 93 | - | rm rsl.* |
| 93 | + | |
| 94 | - | echo "End of WRFCaribbean real.exe at `date +%H:%M:%S`" |
| 94 | + | # echo "Copia de Ficheros GFS a ODESSA:$GFS_DATAP" |
| 95 | - | sleep 4 |
| 95 | + | # scp -p $GFS_DATAP/* root@odessa:$GFS_DATAP |
| 96 | - | echo "Begin WRFCaribbean wrf.exe at `date +%H:%M:%S`" |
| 96 | + | # echo "Lanzando tarea remota caribbean.sh en ODESSA!" |
| 97 | - | # time mpiexec -machinefile $MACHINEFILE -n $CPUNUM ./wrf.exe |
| 97 | + | # pdsh -w root@odessa "/spoa/scripts/bash/caribbean.sh -dom=2 < /dev/null 2>&1 > /tmp/caribbean.out&"& |
| 98 | - | # mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca btl openib,self --mca mpi_leave_pinned 1 wrf.exe |
| 98 | + | # ./caribbean02.sh -dom=2 < /dev/null 2>&1 #SPOA for generate domain & subdomain |
| 99 | - | # mpirun -np $CPUNUM --hostfile $MACHINEFILE --mca mpi_leave_pinned 1 --mca btl openib,self wrf.exe |
| 99 | + | # echo "Time for SPOA Pacific at `date +%H:%M:%S`" |
| 100 | - | # exit 1 |
| 100 | + | #./pacific.sh |
| 101 | - | mpirun -np 5 --hostfile $MACHINEFILE --mca mpi_leave_pinned 0 --mca btl openib,self wrf.exe |
| 101 | + | #else |
| 102 | ## echo "0" > ~/gfsready | |
| 103 | - | WRFOUT_SIZE=`stat -c%s $WRFOUT_FNAME` |
| 103 | + | ## # enviando 0 a ~/gfsready NO ejecutara WRFPacific! |
| 104 | - | if [ -f $WRFOUT_FNAME ] && [ $WRFOUT_SIZE -eq $WRFOUT_FSIZE ]; then |
| 104 | + | ## echo "La descarga de datos GFS no es correcta, reintente manualmente mas tarde!" |
| 105 | - | echo "End WRFCaribbean wrf.exe at `date +%H:%M:%S`" |
| 105 | + | ## # 20120828: Enviar un correo notificando la novedad! |
| 106 | - | echo "`date +%H:%M`" >> wrfstart |
| 106 | + | ## python /spoa/scripts/python/smtp.py "GFS Download Failed" "La descarga de datos GFS no es correcta, reintente mas tarde!" |
| 107 | - | sleep 10 |
| 107 | + | #fi |
| 108 | - | rm rsl.* |
| 108 | + | else |
| 109 | - | rm -f $WRF_PATH/WPS/met_em* |
| 109 | + | echo "0" > ~/gfsready |
| 110 | - | rm -f $WRF_PATH/WPS/FILE* |
| 110 | + | # enviando 0 a ~/gfsready NO ejecutara WRFPacific! |
| 111 | - | rm -f $WRF_PATH/WPS/GRIBFILE.AA? |
| 111 | + | echo " No cumple con los $GFS_NFILES necesarios!, reintente mas tarde" |
| 112 | - | rm -f $WRF_PATH/WRFV3/run/met_em* |
| 112 | + | python /spoa/scripts/python/smtp.py "GFS Download Failed" "No cumple con los $GFS_NFILES necesarios! reintente mas tarde" |
| 113 | - | rm -f $WRF_PATH/WRFV3/run/rsl* |
| 113 | + | |
| 114 | - | rm -f $WRF_PATH/WRFV3/run/{wrfinput_d02,wrfbdy_d01,wrfinput_d01}
|
| 114 | + |