dcpam5 では入出力するファイルとして Gtool4 NetCDF 規約 に基づいた NetCDF データを扱います.
数値実験の結果を解析・可視化するためには, NetCDF データを取り扱うことのできる解析・可視化ツールが必要です. ここでは, 電脳 Ruby プロジェクト から提供される GUI (グラフィカルユーザインターフェース) 解析・可視化ツール GAVE を用いた例を紹介します. この他にも, より解析・可視化についてより自在に設定を行うことが CUI (キャラクターユーザインターフェース) ツール GPhys (チュートリアル) などもあるため, 実際に解析・可視化を行う際には, 適宜選んで使用してください.
なお, 上記のツール以外にも NetCDF を扱える可視化ツール (例えば, GrADS や IDL など) でも可視化が可能であるはずです.
電脳Ruby謹製品 インストールガイド を参照してください.
出力データの情報を参照する際には, NetCDF ライブラリに含まれる ncdump コマンドを使用します. これは dcpam5 をインストールするにあたり ビルドおよびインストール済みのはずです.
U.nc の情報を参照する場合には以下のようにコマンド入力して下さい. 表示される行数が多いため, 表示内容を パイプでページャ more に渡して います.
$ ncdump -h U.nc | more
表示内容を簡単に説明します.
データファイルに含まれる次元変数のリストです. 数値はその次元変数のデータ数です.
netcdf U { dimensions: lon = 64 ; lat = 32 ; sig = 20 ; sigm = 21 ; time = UNLIMITED ; // (11 currently)
データファイルに含まれる次元変数・従属変数に関するメタデータです. 'float' はそのデータが単精度実数であることを表します. 倍精度実数である場合は 'double', 整数である場合は 'int' となります. その後ろに 変数(依存する次元変数) が表示されます.
variables: float lon(lon) ; lon:long_name = "longitude" ; lon:units = "degree_east" ; lon:standard_name = "longitude" ; lon:gt_calc_weight = "lon_weight" ; : float time(time) ; time:long_name = "time" ; time:units = "day" ; : float U(time, sig, lat, lon) ; U:long_name = "eastward wind" ; U:units = "m s-1" ;
データファイル全体に付加される大域属性です. ファイルの規約 (Conventions) や表題, データソース, 作成日時などが 登録されています.
// global attributes: :Conventions = "http://www.gfd-dennou.org/library/gtool4/conventions/" ; :gt_version = "4.3" ; :title = "Held and Suarez (1994) benchmark test ..." ; :source = "dcpam5 (http://www.gfd-dennou.org/library/dcpam)" ; :institution = "GFD Dennou Club (http://www.gfd-dennou.org)" ; :history = "2008-11-29T22:01:10+09:00 unknown> gtool_history: HistoryCreate\n", "" ; }
データ本体を参照する場合は以下のようにコマンド入力してください.
$ ncdump Temp.nc | more
以下のようにデータが表示されます.
data: lon = 0, 5.625, 11.25, 16.875, 22.5, 28.125, 33.75, 39.375, 45, 50.625, 56.25, 61.875, 67.5, 73.125, 78.75, 84.375, 90, 95.625, 101.25, 106.875, 112.5, 118.125, 123.75, 129.375, 135, ... lat = -85.76059, -80.26878, -74.74454, -69.21297, -63.67863, -58.14296, -52.60653, -47.06964, -41.53246, -35.99508, -30.45755, -24.91993, -19.38223, -13.84448, -8.306703, ... : Temp = 249.9899, 249.9622, 249.9368, 249.9154, 249.8999, 249.8913, 249.8905, 249.8973, 249.9113, 249.9315, 249.9562, 249.9835, 250.0113, 250.0375, 250.0599, 250.0769, 250.0871, 250.0898, 250.0847, 250.0722, 250.0533, 250.0295, 250.0026, 249.9747, 249.948, 249.9245, 249.9062, 249.8943, 249.8899, 249.8932, 249.9041, 249.9217, 249.9899, 249.9658, 249.9432, 249.9233, 249.9073, 249.8962, 249.8905, 249.8907, 249.8967, 249.9081, 249.9244, 249.9445, 249.9672, 249.9913, 250.0153, 250.0378, 250.0575, 250.0732, 250.084, 250.0894, 250.0889, 250.0825, 250.0708, 250.0543, 250.034, 250.0112, 249.987, 249.9631, 249.9407, 249.9212, 249.9058, 249.8952,
得られたいくつかのデータを可視化してみます. 以下では, GAVE を用いた可視化の方法を例に挙げます. まず gave を起動してください.
$ gave
以下のようなウィンドウが表示されます.
[File] -> [Open] からデータファイルを選択します. ここでは TempEQHs94.nc を選択します. これは Held and Suarez (1994) で提案されるニュートン冷却に使用される 平衡温度です. ファイルがオープンされたら, 以下のように設定して, [draw] をクリックしてください.
以下のような図が表示されます. 地上の赤道で 300 K 強で, 高緯度に行くにつれ, また上空に行くにつれ温度が減少している分布となっていることが分かります.
次に, 東西風速の変化を見てみます. [File] -> [Open] から U.nc を読み込みます. 今度は以下のように設定し, [draw] をクリックしてください.
以下のような図が表示されます. これは最も地表面に近い層での 東西風速です. 初期には全領域で風速 0 m/s でしたが, 赤道および中緯度で徐々に西向きの風が生じていることが分かります. (U は東向きの風なので, 負の場合には西向きの風を表します).
最後に, 上空での東西風速を見てみます. [Tools] -> [Dimensions] から次元を設定するウィンドウを表示します. ここで, [sig] の値を 0.2 付近に設定し, 再度 [draw] をクリックしてください.
以下のような図が表示されます. これはおおよそ気圧 200 hPa での 東西風速です. 初期には全領域で風速 0 m/s でしたが, 緯度±40°を中心にで徐々に東向きの風が生じていることが分かります.