gradsで、あるシミュレーションデータとあるシミュレーションデータを引き算したい。
でも、格子数が違うからできない!
みたいな経験はないでしょうか。
私の場合は、何かの手違い(初期値作成時だと思われますが)で
格子点が一つだけずれてることがありました。
そんなときに、outputデータからその一部を取り出すことができます。
以下はgrads2dから、viqciのデータのみを取り出す例。
(gradsスクリプトに書いてね)
'open grads2d.ctl' ctlファイルを開く。
'set fwrite new.grd' new.grdはoutputファイル名
'set gxout fwrite' gxoutで設定
'set x 1 395' x方向の格子を1~395まで設定
'set y 1 402' y方向の格子
'set z 1' 鉛直層数
'set t 1 90' t size
'd viqci' 出力する要素
'disable fwrite' 出力を閉じる
また、鉛直層が一層だけじゃない場合は、ループを使いましょう。
t sizeについてもループが使えます。
dの前後に↓を追加しましょう。
t=1
tmax=90
while(t<=tmax)
'set t 't''
z=1
zmax=36
while(z<=zmax)
'set z 'z''
'd ver'
z=z+1
endwhile
t=t+1
endwhile
また、開くファイルはnetcdfでも可なので、netcdfから取り出したい時にも便利。↓
'sdfopen netcdf.nc'
でも、格子数が違うからできない!
みたいな経験はないでしょうか。
私の場合は、何かの手違い(初期値作成時だと思われますが)で
格子点が一つだけずれてることがありました。
そんなときに、outputデータからその一部を取り出すことができます。
以下はgrads2dから、viqciのデータのみを取り出す例。
(gradsスクリプトに書いてね)
'open grads2d.ctl' ctlファイルを開く。
'set fwrite new.grd' new.grdはoutputファイル名
'set gxout fwrite' gxoutで設定
'set x 1 395' x方向の格子を1~395まで設定
'set y 1 402' y方向の格子
'set z 1' 鉛直層数
'set t 1 90' t size
'd viqci' 出力する要素
'disable fwrite' 出力を閉じる
また、鉛直層が一層だけじゃない場合は、ループを使いましょう。
t sizeについてもループが使えます。
dの前後に↓を追加しましょう。
t=1
tmax=90
while(t<=tmax)
'set t 't''
z=1
zmax=36
while(z<=zmax)
'set z 'z''
'd ver'
z=z+1
endwhile
t=t+1
endwhile
また、開くファイルはnetcdfでも可なので、netcdfから取り出したい時にも便利。↓
'sdfopen netcdf.nc'