#!/bin/sh # # # 02map_TIGGE_data.sh # # Mio MATSUEDA (University of Tsukuba and University of Oxford) # # Modified on 12th October, 2011 # Revised on 19th July, 2012 # Revised on 28th September, 2019 # # This program is available in GrADS version 2.0.a0 and later. # You can download them from the following site: # http://www.iges.org/grads/downloads.html # # cbarn.gs is also required. You can download cbarn.gs from the following site: # ftp://grads.iges.org/grads/scripts/cbarn.gs # # #centre=ECMWF ; nmem=51 #centre=JMA ; nmem=51 #centre=UKMO ; nmem=24 centre=NCEP ; nmem=21 # yy=2011 ; mm=09 ; dd=30 ; hh=12 ; ymdh=${yy}${mm}${dd}${hh} # fvar=T2m ; var=t2m ; unit=K ; ylabel="Temperature at 2m [K]" ; tmax=19 # # for stamp map clevs1="250 258 266 274 282 290 298 306" # # for ensemble spread clevs2="1 2 3 4 5 6 7 8" # # for spaghetti diagram cont1=260 ; cont2=275 ; cont3=290 # # for timeseries lat=40 ; lon=140 ; vmin=282 ; vmax=294 # GRADS_COMMAND=grads # cat > map.gs << EOF * ensemble forecast up to +216hr (12hrly) 'open ${fvar}_${centre}_i${ymdh}.ctl' * 'set rgb 50 0 125 0' * ************** * Stamp map ************** 'c' 'set grads off' 'set lat 20 90' 'set mproj nps' 'set frame circle' * 'set strsiz 0.20' 'set string 1 c 8' 'draw string 5.5 7.6 ${centre} ${var} stamp map' * init=get_date(1) valid=get_date(${tmax}) 'set strsiz 0.18' 'set string 1 c 6' 'draw string 5.5 7.2 Init: 'init'UTC, Valid: 'valid'UTC' * 'set strsiz 0.15' 'set string 1 c 5' 'draw string 9.9 0.95 [${unit}]' * mem=1 * y=1 while(y<=6) yt=7.0-(y-1)*1.1 yb=yt-1.1 x=1 while(x<=9) xl=0.55+(x-1)*1.1 xr=xl+1.1 * if(mem<=${nmem}) ; stamp(xl,xr,yb,yt,mem) ; endif * mem=mem+1 x=x+1 endwhile y=y+1 endwhile * 'gxprint sample1.eps white' '!convert -trim -density 120 -rotate 90 sample1.eps sample1.png' '!rm sample1.eps' * say 'Press Enter Key' ; pull x * ***************************** * Ensemble mean and spread ***************************** 'c' 'set grads off' 'set parea 1.0 10.0 1.0 7.0' 'set lon -30 330' 'set lat -90 90' 'set mproj latlon' * 'set strsiz 0.20' 'set string 1 c 8' 'draw string 5.5 7.4 ${centre} ${var} ensemble mean and spread' * init=get_date(1) valid=get_date(${tmax}) 'set strsiz 0.18' 'set string 1 c 6' 'draw string 5.5 7.0 Init: 'init'UTC, Valid: 'valid'UTC' * 'set strsiz 0.15' 'set string 1 c 5' 'draw string 9.5 0.5 [${unit}]' * 'set xlopts 1 2 0.17' 'set ylopts 1 2 0.17' * 'set gxout shaded' 'mean=ave(${var},e=1,e=${nmem})' 'set clevs ${clevs2}' 'set ccols 0 9 14 4 11 7 8 2 6' 'd sqrt(ave((${var}-mean)*(${var}-mean),e=1,e=${nmem}))' 'cbarn 1 0 5.5 0.6' * 'set gxout contour' 'set cint 10' 'd ave(${var},e=1,e=${nmem})' * 'gxprint sample2.eps white' '!convert -trim -density 120 -rotate 90 sample2.eps sample2.png' '!rm sample2.eps' * say 'Press Enter Key' ; pull x * ********************** * Spaghetti Diagram ********************** 'c' 'set grads off' 'set parea 1.0 10.0 1.0 7.0' * 'set strsiz 0.20' 'set string 1 c 8' 'draw string 5.5 7.8 ${centre} ${var} spaghetti diagram' * init=get_date(1) valid=get_date(${tmax}) 'set strsiz 0.18' 'set string 1 c 6' 'draw string 5.5 7.4 Init: 'init'UTC, Valid: 'valid'UTC' * 'set string 5 c 6' ; 'draw string 4.5 7.0 ${cont1}${unit}' 'set string 8 c 6' ; 'draw string 5.5 7.0 ${cont2}${unit}' 'set string 2 c 6' ; 'draw string 6.5 7.0 ${cont3}${unit}' * mem=1 while(mem<=${nmem}) 'set clevs ${cont1}' 'set ccols 5' 'set cthick 1' 'set clab off' 'd ${var}(e='mem')' 'set clevs ${cont2}' 'set ccols 8' 'set cthick 1' 'set clab off' 'd ${var}(e='mem')' 'set clevs ${cont3}' 'set ccols 2' 'set cthick 1' 'set clab off' 'd ${var}(e='mem')' mem=mem+1 endwhile * 'gxprint sample3.eps white' '!convert -trim -density 120 -rotate 90 sample3.eps sample3.png' '!rm sample3.eps' * say 'Press Enter Key' ; pull x * ******************** * Probability map ******************** 'c' 'set grads off' 'set parea 1.0 10.0 1.0 7.0' * 'set strsiz 0.20' 'set string 1 c 8' 'draw string 5.5 7.6 Probability exceeding control analysis (${centre})' 'set strsiz 0.13' 'set string 1 c 5' 'draw string 8.6 6.9 contour: ensemble mean' * init=get_date(1) valid=get_date(${tmax}) 'set strsiz 0.18' 'set string 1 c 6' 'draw string 5.5 7.2 Init: 'init'UTC, Valid: 'valid'UTC' 'set strsiz 0.15' 'set string 1 c 5' 'draw string 8.3 0.5 [%]' 'draw string 5.5 0.2 Probability' * 'threshold=${var}(e=1,t=1)' * mem=1 while(mem<=${nmem}) 'set e 'mem if(mem=1) 'prob=const(const(maskout(${var},${var}-threshold),1),0,-u)' endif if(mem>1) 'prob=prob+const(const(maskout(${var},${var}-threshold),1),0,-u)' endif mem=mem+1 endwhile * 'set gxout grfill' 'set clevs 10 30 50 70 90' 'set ccols 0 4 5 7 8 2' 'd prob/${nmem}*100' 'cbarn 1 0 5.5 0.6' * 'set gxout contour' 'set cint 10' 'd ave(${var},e=1,e=${nmem})' * 'gxprint sample4.eps white' '!convert -trim -density 120 -rotate 90 sample4.eps sample4.png' '!rm sample4.eps' * say 'Press Enter Key' ; pull x * ****************** * Plume Diagram ****************** 'c' 'set grads off' 'set parea 1.0 10.0 1.0 7.0' * 'set strsiz 0.20' 'set string 1 c 8' 'draw string 5.5 7.7 ${centre} ${var} plume diagram (${lat}\`3.\`0N,${lon}\`3.\`0E)' * init=get_date(1) 'set strsiz 0.18' 'set string 1 c 6' 'draw string 5.5 7.3 Init: 'init'UTC' * 'set strsiz 0.11' 'set string 2 l 3' ; 'draw string 8.1 7.4 red: control run' 'set string 1 l 3' ; 'draw string 8.1 7.2 black: perturbed run' * 'set lon ${lon}' 'set lat ${lat}' 'set t 0.5 ${tmax}.5' 'set vrange ${vmin} ${vmax}' mem=${nmem} while(mem>=1) 'set cmark 0' 'set cthick 1' 'set ccolor 1' if(mem=1) 'set cthick 8' 'set ccolor 2' endif 'd ${var}(e='mem')' mem=mem-1 endwhile * 'draw ylab ${ylabel}' * 'gxprint sample5.eps white' '!convert -trim -density 120 -rotate 90 sample5.eps sample5.png' '!rm sample5.eps' * say 'Press Enter Key' ; pull x * ******************** * Boxplot Diagram ******************** 'c' 'set grads off' 'set parea 1.0 10.0 1.0 7.0' * 'set strsiz 0.20' 'set string 1 c 8' 'draw string 5.5 7.7 ${centre} ${var} boxplot diagram (${lat}\`3.\`0N,${lon}\`3.\`0E)' * init=get_date(1) 'set strsiz 0.18' 'set string 1 c 6' 'draw string 5.5 7.3 Init: 'init'UTC' * 'set lon ${lon}' 'set lat ${lat}' 'set t 1 ${tmax}' 'mean=tloop(ave(${var},e=1,e=${nmem}))' 'max=tloop(max(${var},e=1,e=${nmem}))' 'min=tloop(min(${var},e=1,e=${nmem}))' 'std=tloop(sqrt(ave(pow(${var}-mean,2),e=1,e=${nmem})))' * 'set t 0.5 ${tmax}.5' 'set vrange ${vmin} ${vmax}' * 'set gxout errbar' 'set bargap 20' 'set ccolor 1' 'd max;min' * 'set gxout bar' 'set bargap 20' 'set ccolor 50' 'd mean+std;mean-std' * 'set gxout line' 'set ccolor 2' 'set cmark 2' 'set cthick 5' 'd mean' * 'draw ylab ${ylabel}' * 'gxprint sample6.eps white' '!convert -trim -density 120 -rotate 90 sample6.eps sample6.png' '!rm sample6.eps' * say 'Press Enter Key' ; pull x * 'quit' * *************************** * * * User Defined Function * * * *************************** function get_date(time) 'set t 'time 'q dim' tmp=sublin(result,5) tmp2=subwrd(tmp,6) yy=substr(tmp2,9,4) mon=substr(tmp2,6,3) dd=substr(tmp2,4,2) hh=substr(tmp2,1,2) if(mon=JAN) ; mm=01 ; endif if(mon=FEB) ; mm=02 ; endif if(mon=MAR) ; mm=03 ; endif if(mon=APR) ; mm=04 ; endif if(mon=MAY) ; mm=05 ; endif if(mon=JUN) ; mm=06 ; endif if(mon=JUL) ; mm=07 ; endif if(mon=AUG) ; mm=08 ; endif if(mon=SEP) ; mm=09 ; endif if(mon=OCT) ; mm=10 ; endif if(mon=NOV) ; mm=11 ; endif if(mon=DEC) ; mm=12 ; endif * date=yy'.'mm'.'dd'.'hh * return date * *************************** * * * User Defined Function * * * *************************** function stamp(xl,xr,yb,yt,mem) 'set parea 'xl' 'xr' 'yb' 'yt * 'set e 'mem * 'set gxout shaded' 'set clevs 0' 'set ccols 0 0' 'd ${var}' 'set gxout contour' 'set clevs ${clevs1}' 'set ccols 9 14 4 11 7 8 2 6' 'set clab off' 'd ${var}' * return EOF # ${GRADS_COMMAND} -lc map.gs rm -rf map.gs # exit