MG は開発中のプログラムのため、日々その内容が更新されています。 従って公開されているファイル名は MG_20091023.tar.gz のようにパッケージをまとめた日付がファイル名に記述されています。 このファイルを tar コマンドを用いて展開します。
$ tar zxvf MG_20091023.tar.gz
その結果、MG というディレクトリが作成されその下に展開されます。
展開されたディレクトリに移動して実行ファイルを作成します。 本パッケージをコンパイルするためには
について設定をする必要があります。これらの設定を行う補助ツールとして configure.pl が用意されていますので、これを実行します。
$ ./configure.pl PATH: (パス情報の表示) check FC ... [Fortran90コンパイラ]: check FCFLAGS ... [Fortran90 コンパイラオプション]: check AR ... [アーカイバ]: check CDFINC ... [netCDF インクルードファイルのあるディレクトリ]: check CDFLIB ... [netCDF ライブラリのあるディレクトリ]:
それぞれのチェック内容に対して推定が出来た場合には [ ] 内に値が 表示されます。もし、その内容が正しい場合はそのままエンターキーを 押して下さい。そうでない場合には正しい内容を指定して下さい。 本プログラムは netCDF ライブラリがなくてもコンパイル・実行可能 ですが、このスクリプトでは指定する必要がありますので CDFINC, CDFLIB には適当な存在するディレクトリを指定して下さい。
正常に終了すると Makefile, configure.make が作成されます。
configre.pl で環境を正しく設定した場合、
$ make
のように make コマンドを実行することによりプログラムのコンパイルを 行います。コンパイルが成功した場合カレントディレクトリに
のプログラム(のシンボリックリンク)が作成されます。もし、うまく コンパイルが出来ない場合、configure.make をテキストエディタで 編集を行い、make し直します。configure.make の編集する箇所は 以下の通りとなります。
FC | Fortran90 コンパイラ |
FCFLAGS | Fortran90 コンパイラオプション |
INCLUDE | -I. 以降に netCDF インクルードファイルのあるディレクトリを指定 |
LIBDIR | -Llibmm5 以降に netCDF ライブラリのあるディレクトリを指定 |
MG ではユーザーが計算を行うことが出来ます。その際に計算式を 逆ポーランド記法(Reverse Polish Notation, RPN) に従って記述する 必要があります。この記法を用いたものの例としては(昔の)HP の電卓や プリンタ記述言語である PostScript などがあります。 簡単な例として
1 + 2
のような2つの和を RPN で表現すると
1 2 +
となります。演算子(上の例では +)が与えられるまで数字は「スタック」 に記録されます。そして演算子が与えられた場合、その演算を行うのに 必要なスタックを新しい順に取り出し演算を行いその結果を再び スタックに記録します。
もう少し複雑な例として
( 1 + 2 ) / ( 4 - 5 )
を考えます。これを RPN で記述すると
1 2 + 4 5 - /
となります。最初の演算子(+)の前で [1,2] のようにスタックに記録されます。 ここで左側の数字の方が古いスタックを表します。+ の演算後、スタックは [3] となります。次に、演算子(-)の前でスタックは [3,4,5] と3つになります。 そして - の演算により最新の2つのスタックをもとに差の演算(4-5)が行われ スタックは [3,-1] となります。最後にこの2つのスタックをもとに演算 / を行い、結果をスタックに [-3] を記録します。
calc を起動するには
$ ./calc
とします。画面には利用できる演算一覧とその他簡単な説明が表示されます。 プログラムを終了するには
quit
とします。
RPN とはの例で挙げました2番目の演算
( 1 + 2 ) / ( 4 - 5 )
の計算を行います。calc では加減乗除演算に対して +, -, *, / ではなく ADD, SUB, MUL, DIV を用います。したがって上の演算を calc で処理できる RPN で記述すると
1 2 ADD 4 5 SUB DIV
となります。演算子は大文字小文字の区別はしませんので演算子は小文字で 書いても構いません。以上の入力後エンターキーを押すと
***RESULT*** 1 2 ADD 4 5 SUB DIV = -3.000000 Equations written in RPN ( or help ) (STACK) 1 -3.000000
のように演算の結果と現在のスタック状況が表示されます。この結果に4を かけたい場合は、スタックにすでに -3 が残っていますので
4 MUL
とします。スタック情報を消して計算を1からやり直したい場合には
CLS
として下さい。
以下演習問題。
calc では定数を定義することが出来ます。定数 A に 15 を定義する場合
A 15 = DEF
のように
<定数名> <定数値> = DEF
とします。実際に利用する時には
[A] 2 MUL
のように定数名を [ ] で囲みます。定数値を修正したい場合はもう一度 同じ定数名で定義を行えば値が上書きされます。
calc では定数と同様に数式を定義することが出来ます。定義方法は定数の場合と 同様に
<式名>
とします。ここで変数も利用可能です。例えば定数 U、定数 V をもとに 風速 WSPD を計算する式を定義する場合
WSPD [U] [V] R2 SQRT = DEF
とします。定数値 U, V は後から定義することも可能です。上記のように 式を定義した後
U 15 = DEF V 20 = DEF
のように定数をそれぞれ定義した後
[WSPD]
とすることにより定義した式 WSPD を実行します。このように定数の場合と同様に 式を利用する場合にも式名を [ ] で囲います。
現在定義されている定数と式を確認したい場合には
とします。