function main(args)をスクリプトの頭で定義する。
(example) function main(args) var1=subwrd(args,1) var2=subwrd(args,2) ...
ave(var,t=1,t=10)*10 と sum(var,t=1,t=10) は同じではない!原因は欠損値の取り扱い(下記参照)。
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) は異なる。後者が正解。
F=A*Bのとき (Fの平均)=(Aの平均)*(Bの平均)+(A及びBの偏差の共分散)。 相関が0のときは上の共分散もゼロ。共分散=(A,Bの相関)*(Aの標準偏差)*(Bの標準偏差)
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の結果を欠損値を除いた個数で割る。
d vint(start pressure (hPa),var,end pressure (hPa))
> set dfile 番号
> d maskout(var,{-}var {値})
> set gxout shaded {contour}
> ave(var,t=1,t=24)など.ネスティングも可能
> run cbar --> fg,bgなし > run cbarn --> fg,bgあり
> d u;v 間引きしたいときは > d skip(u,2,2);skip(v,2,2)
> enable print hoge.gx > print > disable print > ! gxps -c -i hoge.gx -o hoge.ps -c -rで黒背景。
> draw title xxxxxxxxxxx
% gradsnc > sdfopen xxx.nc > q file など
> 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
> hdivg(x方向フラックス,y方向フラックス) 鉛直積分値があればそのまま使えるし、下のvintを使って各高度の値から鉛直積分を求めても使える。
> vint(地表気圧(mb単位), 変数(比湿等), 上がどこまで(定数)) 多分、ある層からある層までを区切る、なんてことはできない!? 気圧を重力加速度で割る、という作業はすでにされているようだ。
> set display color white
> set black -0.2 0.2 (-0.2から0.2は塗らない)
> cbar_l -t "line1" "line2" "line3" -pで、画面のクリックした位置にレジェンドを付加できる。線種をカスタマイズしたいときは
> cbar_line -c 色 -m マーカ -l ライン -t "テキスト" -pとして、各項目に番号を振る。ちなみにGrADS標準は下記の通り。
Num | Color | Line | Mark |
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 |
普通に
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回繰り返し
など。オプションは変数より前にないとダメらしい。
page.gs (ftp://ftp.cpc.ncep.noaa.gov/wd51we/grads/page.gs)が使える。
page q1 # 右上 d var1 page q2 # 左上 d var2
という具合。元に戻すには
page reset
set t 1 100 # 例えば。 define a=ave(var,t-0,t+9) # 前方10個平均。define省略可。第二引数はtだけだとダメ。 set missconn on # 欠損は無視してつなぐ。 d skip(a,10)
set t 1 100 define a=aave(var,lon=-180,lon=180,lat=-90,lat=90) # 面積重みつき全球平均 set x 1 # Lineを書くため、Xを固定(値は何でも良い) d a
追記:tloopを使うとdefineする必要はない。
set x 1 set y 1 d tloop(aave(var,lon=-180,lon=180,lat=-90,lat=90)
set gxout stat d var 欠損値の数や和、標準偏差、分散などが表示される。 sublin, subwrdなどで取り出して使用するのが基本。
ある時間軸一次元のデータの、領域全体の時系列変化に対する相関係数を計算する。
set t 1 100 define tmp=aave(var,lon=-180,lon=180,lat=-90,lat=90) set t 1 d tcorr(tmp,var,t=1,t=100) # 全球平均値tmpの変動に対しての、全グリッドの時間変動の相関を表示
同領域2変数の空間相関係数を計算する。
d scorr(var1,var2,lon=-180,lon=180,lat=-90,lat=90) # var1とvar2の全球空間分布の一致度(相関)を表示
同様に、回帰直線の傾きは以下のようにして求められる。
d sregr(var1,var2,lon=-180,lon=180,lat=-90,lat=90)