MG 講習 #1

展開及びコンパイル

パッケージの展開

MG は開発中のプログラムのため、日々その内容が更新されています。 従って公開されているファイル名は MG_20091023.tar.gz のようにパッケージをまとめた日付がファイル名に記述されています。 このファイルを tar コマンドを用いて展開します。

$ tar zxvf MG_20091023.tar.gz

その結果、MG というディレクトリが作成されその下に展開されます。

コンパイル

configure.pl の実行

展開されたディレクトリに移動して実行ファイルを作成します。 本パッケージをコンパイルするためには

について設定をする必要があります。これらの設定を行う補助ツールとして 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 が作成されます。

make の実行

configre.pl で環境を正しく設定した場合、

$ make

のように make コマンドを実行することによりプログラムのコンパイルを 行います。コンパイルが成功した場合カレントディレクトリに

のプログラム(のシンボリックリンク)が作成されます。もし、うまく コンパイルが出来ない場合、configure.make をテキストエディタで 編集を行い、make し直します。configure.make の編集する箇所は 以下の通りとなります。

FCFortran90 コンパイラ
FCFLAGSFortran90 コンパイラオプション
INCLUDE-I. 以降に netCDF インクルードファイルのあるディレクトリを指定
LIBDIR-Llibmm5 以降に netCDF ライブラリのあるディレクトリを指定

RPN 式計算機プログラム(calc)の使い方 (RPN基礎)

RPN とは

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] を記録します。

RPN 式計算機 calc の使い方

起動と終了

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

として下さい。

以下演習問題。

  1. T=20℃、P=900hPa の時温位 ( ただし P0 = 1000hPa, R/Cp=0.2859 )
  2. U=15m/s, V=20m/s の時の風速
  3. U=15m/s, V=20m/s の時の風向 ( 北を0度として時計回り )

定数の定義

calc では定数を定義することが出来ます。定数 A に 15 を定義する場合

A 15 = DEF

のように

<定数名> <定数値> = DEF

とします。実際に利用する時には

[A] 2 MUL

のように定数名を [ ] で囲みます。定数値を修正したい場合はもう一度 同じ定数名で定義を行えば値が上書きされます。

式の定義

calc では定数と同様に数式を定義することが出来ます。定義方法は定数の場合と 同様に

<式名> = DEF

とします。ここで変数も利用可能です。例えば定数 U、定数 V をもとに 風速 WSPD を計算する式を定義する場合

WSPD [U] [V] R2 SQRT = DEF

とします。定数値 U, V は後から定義することも可能です。上記のように 式を定義した後

U 15 = DEF V 20 = DEF

のように定数をそれぞれ定義した後

[WSPD]

とすることにより定義した式 WSPD を実行します。このように定数の場合と同様に 式を利用する場合にも式名を [ ] で囲います。

定義済み定数及び式の確認

現在定義されている定数と式を確認したい場合には

PRINT

とします。


kato_at_rain_dot_hyarc_dot_nagoya-u_dot_ac_dot_jp