* GrADSメモ [#bf4d626d] #contents ** 注意点アレコレ [#ea5481a4] - sumを使うべし。 ave(var,t=1,t=10)*10 と sum(var,t=1,t=10) は同じではない!sumのほうが正確のようだ。原因不明。 - 時間平均→空間平均にすべし。 sum(aave(var,lon=0,lon=360,lat=-90,lat=90),t=1,t=10) と aave(sum(var,t=1,t=10),lon=0,lon=360,lat=-90,lat=90) も異なる。後者が正解。 - 2変数以上の積の変数を平均(もしくは積分)する際、変数の積→平均(積分)すること。 F=A*Bのとき (Fの平均)=(Aの平均)*(Bの平均)+(A及びBの偏差の共分散)。 相関が0のときは上の共分散もゼロ。共分散=(A,Bの相関)*(Aの標準偏差)*(Bの標準偏差) - 一方、2変数以上の和なら順序が逆でもOK。(まあ、当たり前) F=A+Bのとき (Fの平均)=(Aの平均)+(Bの平均) or (A+Bの平均) - 上記は、偏微分式でも適用可能。すなわち F=▽・(A,B)=∂A/∂x+∂B/∂yのとき (例えば収束) (Fの平均) = ∂(Aの平均)/∂x+∂(Bの平均)/∂y = (∂A/∂x+∂B/∂yの平均) - 鉛直積分収束量計算のとき: 数学的には ∫(∂(q*u)/∂x)dp と ∂(∫(q*u)dp)/∂x (鉛直積分⇔水平微分) は同値だが、GrADSにおいては地表面付近の∂(q*u)/∂x がおかしくなるため (欠損があるため)、∂(∫(q*u)dp)/∂x (鉛直積分→水平微分)を使ったほうが良い。 - 欠損値の取り扱い 変数同士の演算 → 全て欠損値を返す(要注意!) sum → 欠損値をゼロとして(欠損値を飛ばして)計算 ave → sumの結果を欠損値を除いた個数で割る。 ** 気圧重みづけ鉛直積分 [#bfb00b47] d vint(start pressure (hPa),var,end pressure (hPa)) **複数のctlファイルを開けて,それを選ぶ [#s8b27839] > set dfile 番号 **ある値以下{以上}をカットして表示. [#t0dc9ce8] > d maskout(var,{-}var {値}) **シェード{コンター}で表示 [#r8dfc3a3] > set gxout shaded {contour} ** 平均 [#i1efbb7b] > ave(var,t=1,t=24)など.ネスティングも可能 ** 演算 [#k48da11c] - 変数同士の四則計算,ave,sum,log,pow(x,y)なんかが使用可能. ** カラーバー表示 [#ifdadf20] > run cbar --> fg,bgなし > run cbarn --> fg,bgあり ** ヴェクター表示。 [#b6aef020] > d u;v 間引きしたいときは > d skip(u,2,2);skip(v,2,2) ** プリントアウト [#h478b559] > enable print hoge.gx > print > disable print > ! gxps -c -i hoge.gx -o hoge.ps -c -rで黒背景。 ** タイトルつける [#l2b308c5] > draw title xxxxxxxxxxx ** netCDFを読む [#v6427ef0] % gradsnc > sdfopen xxx.nc > q file など ** バイナリで保存。(データの切り出しなど。) [#yfd495b1] > set fwrite xxx.dat > set gxout fwrite > set x (y,z,t, etc.) x1 x2 ここで、xを設定しなおさないと、なぜかxmax+1まで保存されてしまう。 時系列に保存したい場合は>set t t1 t2 など。 > d var > disable fwrite ** 収束->ラクチン! [#a40ec129] > hdivg(x方向フラックス,y方向フラックス) 鉛直積分値があればそのまま使えるし、下のvintを使って各高度の値から鉛直積分を求めても使える。 ** 可降水量 [#nda794b2] > vint(地表気圧(mb単位), 変数(比湿等), 上がどこまで(定数)) 多分、ある層からある層までを区切る、なんてことはできない!? 気圧を重力加速度で割る、という作業はすでにされているようだ。 ** 背景を白に [#u0ae3517] > set display color white ** 中間の値に色を塗らない [#o3eb4be0] > set black -0.2 0.2 (-0.2から0.2は塗らない) ** (線の)凡例をつける。 [#wadc5e9d] - cbar_l.gs/cbar_lineが便利。http://www.iges.org/grads/gadoc/library.html - デフォルトの線種をそのまま使用したい場合は、 > cbar_l -t "line1" "line2" "line3" -p で、画面のクリックした位置にレジェンドを付加できる。線種をカスタマイズしたいときは > cbar_line -c 色 -m マーカ -l ライン -t "テキスト" -p として、各項目に番号を振る。ちなみにGrADS標準は下記の通り。 |CENTER:|CENTER:|CENTER:|CENTER:|c |Num|Color|Line|Mark|h |1|1|1|2| |2|3|1|3| |3|7|1|4| |4|2|1|5| |5|6|1|1| |6|9|1|2| |7|10|1|3| |8|11|1|4| |9|12|1|5| |10|15|1|1| ** アニメーション [#wa2e5324] 普通に set t 1 10 d var でできるが、コマ送りが早すぎなどという問題点がある。ftp://grads.iges.org/grads/scripts/xanim.gs を使うとさらに便利。 set t 1 10 # 同じ xanim -pause -grfill var # マウスクリックでコマ送り(かつgrfillで表示) xanim -skip 4 -repeat 5 var # 4コマ目ごと、5回繰り返し など。オプションは変数より前にないとダメらしい。 ** 画面内の分割 [#r45672ca] page.gs (ftp://ftp.cpc.ncep.noaa.gov/wd51we/grads/page.gs)が使える。 page q1 # 右上 d var1 page q2 # 左上 d var2 という具合。元に戻すには page reset ** 移動平均・図化 [#v1a0d530] set t 1 100 # 例えば。 define a=ave(var,t-0,t+9) # 前方10個平均。define省略可。第二引数はtだけだとダメ。 set missconn on # 欠損は無視してつなぐ。 d skip(a,10)