この文書は, dcpam5-plane を用いて手軽に実験を行うためのチュートリアルです.
dcpam5-plane インストールガイド を参考に, dcpam5-plane のビルドを行ってください. 「ビルドの手引き」の「ソースコードのコンパイル」まで行ってください.
ビルドが完了すると, "src/main" ディレクトリ以下に, dcpam_main, init_data, sst_data といった実行ファイルが作成されます. またこのディレクトリには, いくつかのサンプル NAMELIST ファイル (拡張子が .nml のファイル) が "src/sample_nml"_files" に用意されています.
$ ls src/sample_nml dcpam_ape_P21Q21L16.nml dcpam_hz08_P29Q29L24.nml dcpam_p04_P21Q21L20.nml dcpam_p04_P42Q42L20.nml init_data_P21Q21L16.nml init_data_P29Q29L24.nml init_data_p04_P21Q21L20.nml init_data_p04_P42Q42L20.nml sst_data_P21Q21.nml sst_data_P29Q29.nml
Polvani et al. (2004) で行われた, 傾圧不安定波動の実験の f 平面版を実行する方法を説明します.
本実験は海表面温度等の実験用データを用いないため, 以下の 3 つのステップで行います.
init_data と init_data_p04_P42Q42L20.conf を用いて初期値ファイル init_P42Q42L20.nc を作成します.
$ ./init_data -N=init_data_p04_P42Q42L20.nml ... *** MESSAGE [initial_data] *** ----- Initialization Messages ----- *** MESSAGE [initial_data] *** Pattern = polvani et al. (2004) *** MESSAGE [initial_data] *** TempAvr = 0. *** MESSAGE [initial_data] *** PsAvr = *** 100000.0000000000000000000000000000000001 *** MESSAGE [initial_data] *** QVapAvr = 0. *** MESSAGE [initial_data] *** Ueq = 0. *** MESSAGE [initial_data] *** *** MESSAGE [initial_data] *** -- version = $Name: $$Id: *** initial_data.f90,v 1.9 2011-06-19 11:01:57 yot Exp $ *** MESSAGE [HistoryClose] *** "init_P42Q42L20.nc" is closed ####### CPU TIME SUMMARY #### [rank=000000] #### others 0.151977E+00 ------------------------------------------------ TOTAL TIME = 0.151977E+00
実行ファイル "dcpam_plane_main" と NAMELIST ファイル dcpam_p04_P42Q42L20.nml を用いて, 以下のように dcpam_plane_main を実行してください. プログラム終了には数分〜数十分かかります.
(なお, クロスコンパイル環境では以下の方法でプログラムを 実行することはできないので注意してください. その場合の実行方法 に関しては, その環境でのプログラム実行マニュアルなどを参照ください. )
$ ./dcpam_plane_main -N=dcpam_p04_P42Q42L20.nml | tee p04.log ... ########## PREDICTION OF CALCULATION ########### Start Date 2014-07-04T07:12:24+09:00 Current Date 2014-07-04T07:13:19+09:00 Progress 12.40% [*** ] Remaining CPU TIME 0.366000E+03 (6.10 minutes) Completion Date 2014-07-04T07:19:25+09:00 ########## PREDICTION OF CALCULATION ########### Start Date 2014-07-04T07:12:24+09:00 Current Date 2014-07-04T07:14:11+09:00 Progress 24.89% [****** ] Remaining CPU TIME 0.313000E+03 (5.22 minutes) Completion Date 2014-07-04T07:19:24+09:00 ... ... ########## PREDICTION OF CALCULATION ########### Start Date 2014-07-04T07:12:24+09:00 Current Date 2014-07-04T07:19:26+09:00 Progress 99.83% [************************ ] Remaining CPU TIME 0.100000E+01 Completion Date 2014-07-04T07:19:27+09:00 *** MESSAGE [HistoryClose] *** "rst.nc" is closed *** MESSAGE [HistoryClose] *** "U.nc" is closed *** MESSAGE [HistoryClose] *** "V.nc" is closed *** MESSAGE [HistoryClose] *** "Temp.nc" is closed *** MESSAGE [HistoryClose] *** "Ps.nc" is closed *** MESSAGE [HistoryClose] *** "QVap.nc" is closed *** MESSAGE [HistoryClose] *** "Vor.nc" is closed *** MESSAGE [HistoryClose] *** "Div.nc" is closed *** MESSAGE [HistoryClose] *** "SigDot.nc" is closed *** MESSAGE [HistoryClose] *** "Mass.nc" is closed *** MESSAGE [HistoryClose] *** "KinEngy.nc" is closed *** MESSAGE [HistoryClose] *** "IntEngy.nc" is closed *** MESSAGE [HistoryClose] *** "PotEngy.nc" is closed *** MESSAGE [HistoryClose] *** "LatEngy.nc" is closed *** MESSAGE [HistoryClose] *** "TotEngy.nc" is closed *** MESSAGE [HistoryClose] *** "Enstro.nc" is closed ############## CPU TIME SUMMARY ################ surface_properties 0.366471E-02 dynamics_hdfourier 0.403186E+03 (6.72 minutes) mass_fixer 0.841738E+01 check_prog_vars 0.261569E+01 timefilter_asselin19 0.389625E+01 others 0.187256E+01 ------------------------------------------------ TOTAL TIME = 0.419991E+03 (7.00 minutes)
この場合, 8 日分の時間積分が行われます. 計算結果は U.nc や Temp.nc として出力されます. また, リスタートファイルが rst.nc として出力されます.
dcpam5-plane では入出力するファイルとして Gtool4 NetCDF 規約 に基づいた NetCDF データを扱います.
数値実験の結果を解析・可視化するためには, NetCDF データを取り扱うことのできる解析・可視化ツールが必要です. ここでは, 電脳 Ruby プロジェクト から提供される Gphys を使った可視化の例を紹介します.
電脳Ruby謹製品 インストールガイド を参照してください.
ここでは, データを GPhys 付属の gp コマンドを用いて可視化してみることにします. 温度のデータを読み取り図示するには,
% gpview Temp.nc@Temp
と入力します. これは Temp.nc というファイルの中の Temp という変数を読み込み, 図示せよというコマンドです.
Temp は経度・緯度・圧力(高度)・時間の 4 次元データですが, なにも指定しなければ後者 2 つの次元に関しては自動的に 1 番目の要素が選択されます. したがってこの図は最下層の初期時刻での緯度経度面の温度を示していることになります. 断面を変えて, 時刻 7.5 日後の最下層の図にしたければ
% gpview Temp.nc@Temp,time=7.5,sig=1
と, カンマで区切って断面を指定することができます.
時間の代わりに子午面断面などを描きたければ
% gpview Temp.nc@Temp,lon=0,time=7.5
経度平均操作もできます.
% gpview Temp.nc@Temp,time=7.5 --mean lon
アニメーションも簡単に見ることができます. --Gaw オプションをつければページ送りが自動的に行われます. 以下は最下層の温度分布の時間発展を見るコマンドです.
% gpview Temp.nc@Temp,sig=1,lat=0:1e7 --anim time % gpview Temp.nc@Temp,sig=1,lat=0:1e7 --anim time --Gaw --aspect 1 --wsn 4
lat=0:1e7 は緯度範囲を 0 から 1e7 までに限定するオプションです. --wsn 4 は DCL の装置番号を指定するオプションです(4 は GTK).
座標を 3 つ指定して 1 次元データにすると折れ線グラフを描けます.
% gpview Temp.nc@Temp,lon=0,lat=0,time=0 --exch
--exch オプションは縦軸と横軸を入れ換える操作を指示するものです.
gpview には他にもいろいろなオプションがあります. gpview --help とするとオプションと使い方の例が表示されます. gp コマンドシリーズには他にもいろいろなものが用意されています. 主なものは以下の通りです.
gp コマンドシリーズは 1 行入力ですぐに結果を表示できるのが特徴です. そのためクイックルックや計算の途中でのデータチェック等に便利です. しかしながら複数の変数を組み合わせた解析や可視化はできません. 本格的なデータ解析と可視化を行うには, "GPhys/GGraph" による解析と可視化が適しているでしょう.