ごくらく dcpam5-plane

はじめに

この文書は, dcpam5-plane を用いて手軽に実験を行うためのチュートリアルです.

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 平面版

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コマンドによる可視化

ここでは, データを GPhys 付属の gp コマンドを用いて可視化してみることにします. 温度のデータを読み取り図示するには,

% gpview Temp.nc@Temp 

と入力します. これは Temp.nc というファイルの中の Temp という変数を読み込み, 図示せよというコマンドです.

images/p04_gpview_temp_sig1_time00day.png

Temp は経度・緯度・圧力(高度)・時間の 4 次元データですが, なにも指定しなければ後者 2 つの次元に関しては自動的に 1 番目の要素が選択されます. したがってこの図は最下層の初期時刻での緯度経度面の温度を示していることになります. 断面を変えて, 時刻 7.5 日後の最下層の図にしたければ

% gpview Temp.nc@Temp,time=7.5,sig=1

と, カンマで区切って断面を指定することができます.

images/p04_gpview_temp_sig1_time7.5day.png

時間の代わりに子午面断面などを描きたければ

% gpview Temp.nc@Temp,lon=0,time=7.5

images/p04_gpview_temp_lon0_time7.5day.png

経度平均操作もできます.

% gpview Temp.nc@Temp,time=7.5 --mean lon

images/p04_gpview_temp_meanlon_time7.5day.png

アニメーションも簡単に見ることができます. --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 オプションは縦軸と横軸を入れ換える操作を指示するものです.

images/p04_gpview_temp_lon0_lat0_time00day.png

gpview には他にもいろいろなオプションがあります. gpview --help とするとオプションと使い方の例が表示されます. gp コマンドシリーズには他にもいろいろなものが用意されています. 主なものは以下の通りです.

gpvect
2 次元ベクトル図の表示
gpprint
データの数値の出力表示
gplist
ファイルに格納されている変数のリストを表示
gpmaxmin
データの最大・最小値の表示

gp コマンドシリーズは 1 行入力ですぐに結果を表示できるのが特徴です. そのためクイックルックや計算の途中でのデータチェック等に便利です. しかしながら複数の変数を組み合わせた解析や可視化はできません. 本格的なデータ解析と可視化を行うには, "GPhys/GGraph" による解析と可視化が適しているでしょう.