Grads Tips

渡部@北大・地球環境さんのGrADSの使い方授業資料
吉田@北大・理・気象さん提供GrADSコマンド概説

こうするには

contourの色を変える set ccolor 色番号
Gradsで計算したデータをファイルに出力 set gxout fwrite; set fwrite file名
line plotで線を引かずにマークだけにする set cstyle 0
line plotで線の色を変える set ccolor 色番号
line plotでマークの色を変える set ccolor 色番号
line plotの上限・下限を変える set vrange -180 180
mapの色を変える(例,灰色・太線) 'set map auto color style thickness'
'set map 15 1 3'
gxout=grid で表示される数値の大きさをかえる. set digsize <size>単位はinch.0.10-0.15が適当.
gxout=grid で表示される数値の小数点以下桁数を変える. set dignum <number><number> が小数点以下桁数.
画面をgif file に出力 wi gif-file名
draw string で書かれる文字の属性を変える set string color <justification <thickness <rotation>>>
EPS file で任意の大きさにする gxps -c -i input.gmf -o output.ps としてから,Corel Drawで読み込み.
サイズを変更してファイル→エキスポート.Corel Drawではレターサイズを選択しないと図がゆがむ.
移動平均を求める 'define ta=ave(t1,t-3,t+3)'
'd ta'
のようにしてdefineで移動平均を求めることができる。直接
'd ave(t1,t-3,t+3)'
とするとエラーとなるので、注意が必要。
gif, jpeb, bmp での出力 図を表示して
wi filename.gif/jpeg/bmp
変数への代入の’のくくり はあってもなくても良い.たとえば
mth1='jan'; yr1='1997'
mth1=jan; yr1=1997
は上下の行で結果が同じ.
気候値の計算 たとえばNCEP/NCAR再解析データのSST気候値を求めるには
'open //Elnino/datagrid/NN_reanl/original/mth_npl.org/flx.gau.grib.mean.y1949-cur.ctl'
'set time jan1960 dec1969';* # 12ヵ月分の時間配列をとる
'define SSTclm=ave(TMPsfc,t+0,t=641,1yr)';* # 気候値
偏差の計算 上で気候値を求めた後に
'modify SSTclm seasonal';* これで偏差を求める際に用いた特定の時間でなくとも気候値が利用できる
'set time jan1998 may2002';*
'd TMPsfc-SSTclm';* # 偏差を描画(アニメーション)

手の込んだこと

文字ファイルに読み込んだ変数をスクリプトで使う方法

2002/5/15
テキストファイルに出力したデータをGradsで読みたいという需要は大きいだろう.例えば,EOFのexplained variance とかは,目でも読めるテキストデータにするのが,いろいろと楽だ.しかし,Gradsでは変数に2種類あって,データの表示につかえる変数(display で表示される変数)と,スクリプト言語の中で使える変数があり,データ表示変数にテキストファイルから読み込むのは簡単なのだが,スクリプト変数にそのまま読み込むことはできない.そのためには,次のような手立てが必要なようである.

test.gs の中身:

  'open dummy.ctl';*                  なんでもいいからopenしておかないとだめ.
  'exec setpara.gs':*                 データ表示変数に設定
  'd para1'; val=subwrd(result,4);*   


上付き下付き、ギリシャ文字

上付き下付きやギリシャ文字を文字列中で利用するには、エスケープ文字"`" で始まる命令を使う。

例えば、

'draw string 1 4 1.0`3.`1C'
'draw string 1 3 10`a-2'
'draw string 1 2 `3t`1`ax`n'
'draw string 1 1 `3t`1`bx`n'

で、1℃, 10^-2, τ^x, τ_y (^は上付き、_は下付き)の文字が書かれる。

鉛直方向に増える座標(例えば深度)を正しく表示する方法

下のようにコントロールファイルに,鉛直方向のデータ読みこみ順を変える'OPTIONS ZREV'と,ZDEFを逆に指定したやれば良い.

DSET  ^t0_400.grd
TITLE JEDAC Monthly Anomalies of Temperature at 80 m in Deg. C
OPTIONS ZREV
UNDEF  -1.e+10
XDEF    73 LINEAR  30 5
YDEF    61 LINEAR -60 2
ZDEF   11 LEVELS 400 300 240 200 160 120 80 60 40 20 0
TDEF   552 LINEAR JAN1955 1MO
VARS    1
v  11 99 JEDAC Temperature at 0 m in Deg. C
ENDVARS

こうしておけば,例えば下図のように表示できる.

Grads でAnimation gif を作る方法

Grads でAnimation gif を作る方法が、ここにあります。Linux でも Windows でもできるようです。 手順を和文解説すると、 Gradsスクリプト with Image Magick によるによるanimation gif file の作成。
t=1
'set display color white'
'clear'
while ( t<100 )
   'set t 't
   'd expr'
   if (t<10)
     'wi im-0't
   else
     'wi im-'t
   endif
   t=t+1
endwhile
'!convert -delay 20 im-*.gif anim.gif'
'!rm im-*.gif'

こうやって、convert されたanim.gif を通常のgif fileと同様に, WWWページの任意の場所に張りつければ良い。 そのページが表示されると、アニメーションが動く。 実用的には、アニメーションは常に表示するには重いし嫌がる人もいるので、アニメーションは説明文のページとは別なページに置き、説明文のページにはそこへのリンクを張っておけば良いだろう. たとえばサンプルのアニメーションがここで見れます.(まだこのページはそうなっていないけれど)。以下は参考ポイント。

編集モードでのエディット

過去に打ったコマンドを編集する場合に、左右の矢印キーはうまく働かない場合がある。このような場合には、mule like な次のキーを使うとよい。
     ^B        一文字後退                   backward one character
     ^C        一文字前進                   forward  one character
     ^D        一文字削除                   delete current character
     ^P (↑)   記憶されている前の行へ       previous command in history list
     ^N (↓)   記憶されている次の行へ       next     command in history list
     ^L        コマンド編集モードを閉じる   clear command window

Script files のパスの設定

特定のディレクトリにある Grads script file を、任意のGrads session から読み出すためには、 gascrp という環境変数を設定する。たとえば、e:\myprog\grads.pth というディレクトリに、 script file を置いておくのであれば、c:\autoexec.bat に次の一行を加える。

set gascrp=d:/myprog/grads.pth

この設定を行わなくてもインストールディレクトリ(通常は c:\pcgrads) の\lib のスクリプトは読み出せる。 またこれを設定するとデフォルトのlibディレクトリの読み出しは利かなくなる。おすすめは、c:\pcgrads\lib のファイルを自作の適当な(c ドライブ以外の時々はバックアップを取る)ディレクトリにコピーして、そこに自作のgrads scriptも入れておくというものである。こうすることで効率よくバックアップを取ることができる。

cbarn.gs

cbar.gs よりも強力なカラーバー。使い方は
run cbarn siz  h/v  xmid ymid
で、指定するパラメータは以下のとおり
siz: サイズの指定
h/v: 横なら0, 縦なら1
xmid: バーのx方向の中心位置
ymid: バーのy方向の中心位置

Grads のスクリプト実行でエラーが大量に出てしまって、最初のエラーが画面で確認できない時には

grads -pcb なんとか.gs > x.x
としてリダイレクトしてエラーメッセージをファイルに格納して、そのファイルを見ましょう。(Fortranのエラーメッセージはリダイレクトが有効ではない(標準出力に出ていないだめ)が、Grads のエラーメッセージは大丈夫)

Exec コマンド

Execコマンドには単にGradsのコマンドを書いておけば良い。より複雑な処理は、.gs ファイルで記述される関数を用いる。

異なるファイルの関数の利用

たとえば、次のファイルを"test1.gs"という名前で、Pathの通っているところにおいておけば、
function nanndemo(cargin)
arg1=subwrd(cargin,1)
arg2=subwrd(cargin,2)
say arg1
say arg2
output=test2('internal')
say ouput
return

function test2(cstring)
say cstring
return cstring' output'
Gradsのコマンドラインから、 ga-> test1 input1 input2
とすると、次の結果が得られる。
input1
input2
internal
ouput

script function でのsqrt,sin,cos等

★新しいversion のGradsでは,数学関数(Grads document のmath_function参照のこと)がサポートされているので,以下のトリックは使う必要がありません.例えば,math_sin, math_cos, math_mod などが利用できます.

GradsのScript language では、sqrt, sin, cos などが support されていない。 しかし、Grads のdisplay command では support されている。このことを利用して、これらの関数をscript langauge を用いた function として定義することが可能である。 例えば、sqrt であれば、

function sqrt(args)
gvnvalue=subwrd(args,1)
'd sqrt('gvnvalue')'
sqrtvalue=subwrd(result,4)
return sqrtvalue

というファイルを script.gs という名前にして、Grads の Script のディレクトリ に置いておいて、

'run sqrt 2'
a=result

とすれば、aに1.414が格納される。この sqrt.gs は内部で display command を使うので、 その実行には、すでにgrads ctl file が open されていることが必要である。類似の有用な 関数として、log10,logn (natural log), sin, cos を用意した。

研究用ソフトウェア に戻る