気象データ解析ツールであるGrADSについての情報をまとめています。

このwiki内では、グリッドファイル(GrADS 4byteバイナリ、特に断らなければdirect書き込み)を〜.bin、コントロールファイルを〜.ctl、変数名をvarと表記します。


ユーザ定義関数について(東北大のGrADSのページ)

OpenGrADS

略語
・udf : user defined functions(ユーザ定義関数)
・udct : user defined commands table(ユーザ定義コマンドテーブル)
・udxt : user defined extensions table(ユーザ定義機能拡張テーブル)



ユーザ定義関数


GrADSでは、ユーザによって作成・定義された関数を、
環境変数GAUDFTを設定することで使用することができるようになる。
これをユーザ定義関数udfという。

regrid2 水平解像度の変更(内挿)


NMC GrADS User-Defined Function #1 REGRID Version 2.0beta(.doc)

## GrADS2では実質的に同じ役割を果たすlterpコマンドが導入されたので、そちらを使えばよい。→GrADS2まとめ ##


使用例
regrid2(var, 2.0, 3.0, bl)

変数varについて、経度2.0、緯度3.0度間隔に線形内挿

ba : box averaging (the default does NOT have to be set)
vt : "vote" interpolation or box averaging with voting
bl : bi-linear interpolation
bs : 3rd order Bessel interpolation

※デフォルトでは730x380(~T225)以上の格子については扱えない。しかしregrid2.fの中のパラメータnimax,njmaxを書き換えれば可能。

使用例2
regrid2(var, 128, 64, gg_ig64_bl)

varを東西128x南北64(赤道上に格子の中心が無い座標)の格子に内挿

regrid2のインストール
wget ftp://cola.gmu.edu/grads/sprite/udf/regrid2.tar.gz

と打ちこみ、ファイルをダウンロードする。
gunzip regrid2.tar.gz
tar xvf regrid2.tar

でファイルを解凍し、作成されたudfディレクトリを、root権限でgradsディレクトリ(例えば/usr/local/grads-1.9b4/)に移動する。
※gradsのディレクトリは適宜読み替えて下さい
※一般ユーザの場合は、自身のホームディレクトリ等、適当な場所に置けば良いです。

udf/regrid2/に移動し、"Makefile"をviなどで開く。
REGRID_DIR = /usr/local/grads-1.9b4

にする。

CFT=
LDR=

の部分は、使用するコンパイラ意外を#でコメントアウトする。
※つまりFortranコンパイラが必要なのだが、f77とg95では動作確認済。ifortではエラーが出る。コンパイルオプションかライブラリの問題?未解決。
コンパイラが無い環境でも、他のマシンにてコンパイルしてから、実行ファイル regrid2.exe をコピーすればOK。
make -f Makefile

と打ち込み、実行ファイルを作成する。udf/に
"regrid2.exe"が作成されたことを確認する。
udf/regrid2/udft.regrid2をudf/以下にudft.txtという名前でコピーする。
cp /usr/local/grads-1.9b4/udf/regrid2/udft.regrid2 /usr/local/grads-1.9b4/udf/udft.txt

viでudft.txtの3行目を
/usr/local/grads-1.9b4/udf/regrid2.exe

に書き換える。
ホームディレクトリの".bashrc"に以下の行を書き加える。
export GAUDFT=/usr/local/grads-1.9b4/udf/udft.txt

環境設定を有効にする。
source .bashrc

gradsで適当なデータを開き、例えば
d regrid2(var, 2.0)

と打ち込んで図が表示されればO.K.

EOFの計算


IT memo/GrADS memo

EOFGRADS

EOFGRADSのダウンロード(linux)

http://www.atmos.umd.edu/~senya/EOF_GRADS/


使用例

ファイルを開き、

set x 1 144
set t 1 30
eof var

で、var_expres_eof.ctl,datというファイルとvar_expres_pc.ctl,datというファイルができる。
それぞれ固有ベクトルと標準化時係数を表す。


  • eofgradsで起こるエラー

   Writing data to transfer file...
   Executing eofudf binary ...

   EOFUDF Version XXX
Fatal ERROR in eorudf: (Error No.      -3).
Errir reading 2nd record from transfer.
FORTRAN STOP  1

のようなエラーが起こるとき、.bashrcなどで環境変数F_UFMTENDIANを誤って設定している可能性がある。
(例)F_UFMTENDIAN=bigをF_UFMTENDIAN=littleに変え、source .bashrcすると正常に動作する、など。



EOFGRADSのインストール

※下記ページはリンクが切れている。関連ページ:http://www.atmos.umd.edu/~senya/EOF_GRADS/

EOFGRADSのページに丁寧に書かれている。

root権限でバイナリを入手(32bitのLinuxマシンの場合)。

wget http://web.atmos.ucla.edu/~munnich/Grads/EOF/current/binaries/linux/eofudf_linux.tar.gz
tar xvf eofudf_linux.tar.gz

展開されるファイルは以下の4つ。
readme.html eof.gs eofudf libcxa.so.3

eof.gsをGrADSスクリプトライブラリのディレクトリ(export GASCRP= で指定している場所)に置く。
mv eof.gs /usr/local/grads-1.9b4/lib/

実行ファイルeofudfを他のユーザ定義関数の実行ファイルと同じ場所に置く。
mv eofudf /usr/local/grads-1.9b4/udf/

ユーザ定義関数テーブル(export GAUDFT= で指定しているテキストファイル)にeofudfの実行ファイルの場所を書く。
vi /usr/local/grads-1.9b4/udf/udft.txt

以下を追加

eofudf 2 6 expr value value value value char
sequential
/usr/local/grads-1.9b4/udf/eofudf
eofudf.in
eofudf.out

ライブラリとして参照されるディレクトリに、libcxa.so.3を置く。
mv libcxa.so.3 /usr/local/


ユーザ定義機能拡張


OpenGrADSによるGrADSとextensionsをインストールすることで、ユーザ定義コマンドやユーザ定義機能拡張を使用することができる。

ここではそれらのインストールとユーザ定義機能拡張の一つである流線関数の計算方法を紹介する。

※IGES/COLAからインストールしたGrADSの中では(今のところ)使用できないので、udxtを使用するときだけ、OpenGrADSによるGrADSを使用する。

OpenGrADS のインストール


例えばLinuxであれば、
http://sourceforge.net/project/showfiles.php?group...
の、grads-1.9.0-rc1-bin-i686-pc-linux-gnu.tar.gzをダウンロード。
root権限になって
gunzip grads-1.9.0-rc1-bin-i686-pc-linux-gnu.tar.gz
tar xvf grads-1.9.0-rc1-bin-i686-pc-linux-gnu.tar

として作成されたgrads-1.9.0-rc1/を、既に置いているgrads-1.9b4等/と同じ場所(例えば/usr/local/)に置く。

/usr/local/grads-1.9.0-rc1/に、/usr/local/grads-1.9b4/にあったdata/, doc/, lib/, udf/等をコピーする。
または/usr/local/grads-1.9b4/data/等へのリンクを貼ってもよい。

udxtライブラリのインストール


今度はextensionsをダウンロード、解凍し、grads-1.9.0-rc1/bin/の中のgex/を、
/usr/local/grads-1.9.0-rc1/bin/
以下に置く。

.bashrc(または/etc/bashrc等)に

#set OpenGrADS
export GRADSHOME=/usr/local/grads-1.9.0-rc1
export GADDIR=${GRADSHOME}/data
export GASCRP=${GRADSHOME}/lib
export PATH=${PATH}:${GRADSHOME}/bin
export GAUDFT=${GRADSHOME}/udf/udft.txt
export GABIN=${GRADSHOME}/bin
export GAUDXT=${GRADSHOME}/bin/gex/udxt
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${GRADSHOME}/bin/gex
alias opengrads=${GRADSHOME}/bin/gradsnc

を書き加え、
source .bashrc

等で設定を有効にする。
opengrads

で起動したGrADSで

ga-> q udct
ga-> q udft

で、定義したコマンド、関数が表示され、
ga-> hello

で"Hello, World"が表示されれば成功。

流線関数・速度ポテンシャルの計算


詳細はこちらを参照のこと → fish.gex

子午面流線関数の算出:GrADSで気象要素を算出

東西風データと南北風データの二つを用意する。ただし
・等間隔格子
・X軸 LINEAR の始点が0.0
でないとエラーが起こる。

Error from fish: rc = 1
Operation Error: Error from fish function

というエラーが出る時は、lonとlatの間隔を揃えると解決する。re関数やlterpを使って格子間隔を揃えよう。

それぞれua.ctl, va.ctlで読むとする。
opengrads

でユーザ定義機能拡張が実行できるgradsを起動する。
流線関数の計算

open ua.ctl
open va.ctl
set lon 0 360
set lat -90 90
set t 1 ??
set z 6
a=fish(hcurl(ua,va.2))
(または a=fish_psi(ua,va.2))
set gxout fwrite
set fwrite -le test.bin
d a
disable fwrite

で、全球指定した期間指定した気圧面の流線関数がtest.binに書き出される。
流線関数:fish(hcurl(u, v))
速度ポテンシャル:fish(hdivg(u, v))

速度ポテンシャル、流線関数の値は、全球平均値からの偏差を描画するとよい

http://opengrads.org/doc/udxt/fish/fish.html#fish_...



fish(UEXPR,VEXPR[,MBDCND]) - ポアソン解法
fish_psi(UEXPR,VEXPR[,MBDCND]) - 流線関数の算出
fish_chi(UEXPR,VEXPR[,MBDCND]) - 速度ポテンシャルの算出
fish_vor(UEXPR,VEXPR[,MBDCND]) - 相対渦度の算出
fish_div(UEXPR,VEXPR[,MBDCND]) - 発散の算出









コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます