Held and Suarez (1994) が提案した, 大気大循環モデルの力学過程を評価するための 実験を実行する方法を説明します.
この計算には以下の物理過程を用いています.
本実験は海表面温度データ等の実験用データを用いないため, 以下の 3 つのステップで行います.
dcpam5 の数値実験はソースツリー内部では行わず ソースツリーとは別の外部ディレクトリにて行うことを推奨いたします.
まず dcpam5 ソースのトップディレクトリ(以下の例では dcapm5 とする)に移動してください. 以下では dcpam5 ソースディレクトリの隣に ../dcpma5-exp/hs94-exp ディレクトリを作成し, そこで実験を行うことにします. 次のように ../dcpam5-exp/hs94-exp ディレクトリを作成し, 移動してください.
$ mkdir -p ../dcpa5-exp/hs94-exp $ cd ../dcpa5-exp/hs94-exp
次に, このディレクトリに実行ファイルと設定ファイル置き場を作成します.
$ mkdir bin $ mkdir conf
最後に作成したディレクトリに実行ファイルと設定ファイルをコピーします.
$ cp ../../dcpam5/src/main/dcpam_main bin $ cp ../../dcpam5/src/main/init_data bin $ cp ../../dcpam5/exp_setup_files/*.conf conf
なお, 実行ファイルと設定ファイル (namelist ファイル) があれば, どのディレクトリにおいても計算を行うことができます.
init_data と init_data_hs94_T21L20.conf を用いて初期値ファイル init_T21L20.nc を作成します.
$ ./bin/init_data -N=./conf/init_data_hs94_T21L20.conf
:
*** MESSAGE [restart_file_io] *** ----- Initialization Messages -----
*** MESSAGE [restart_file_io] *** Input::
*** MESSAGE [restart_file_io] *** InputFile =
*** MESSAGE [restart_file_io] *** Output::
*** MESSAGE [restart_file_io] *** OutputFile = init_T21L20.nc
*** MESSAGE [restart_file_io] *** IntTime = 1. [day]
*** MESSAGE [HistoryCreate3] *** "init_T21L20.nc" is created (origin=0. [day])
*** MESSAGE [initial_data] *** NAMELIST group "initial_data_nml" is loaded from "./conf/init_data_T21L16.conf".
*** MESSAGE [initial_data] *** ----- Initialization Messages -----
*** MESSAGE [initial_data] *** Pattern = Small Disturbance of Temperature
*** MESSAGE [initial_data] *** TempAvr = 280.
*** MESSAGE [initial_data] *** PsAvr = 100000.
*** MESSAGE [initial_data] *** QVapAvr = 0.1E-09
*** MESSAGE [HistoryClose] *** "init_T21L20.nc" is closed
実行ファイル "dcpam_main" と NAMELIST ファイル dcpam_hs94_T21L20.conf を用いて, 以下のように dcpam_main を実行してください. プログラム終了には数分〜数十分かかります.
(なお, クロスコンパイル環境では以下の方法でプログラムを 実行することはできないので注意してください. その場合の実行方法 に関しては, その環境でのプログラム実行マニュアルなどを参照ください. )
$ ./bin/dcpam_main -N=./conf/dcpam_hs94_T21L20.conf | tee hs94.log
*** MESSAGE [dcpam_main] *** Run: Held and Suarez (1994) benchmark test
:
*** MESSAGE [timeset] *** ----- Initialization Messages -----
*** MESSAGE [timeset] *** StartTime = 0. [day]
*** MESSAGE [timeset] *** EndTime = 10. [day]
*** MESSAGE [timeset] *** DelTime = 30. [min]
*** MESSAGE [timeset] *** = 1800. [sec]
:
:
*** MESSAGE [fileset] *** ----- Initialization Messages -----
*** MESSAGE [fileset] *** FileTitle = Held and Suarez (1994) benchmark test
*** MESSAGE [fileset] *** FileSource = dcpam5 (http://www.gfd-dennou.org/library/dcpam)
*** MESSAGE [fileset] *** FileInstitution = GFD Dennou Club (http://www.gfd-dennou.org)
*** MESSAGE [fileset] *** -- version = ....
*** MESSAGE [gridset] *** ----- Initialization Messages -----
*** MESSAGE [gridset] *** nmax = 21
*** MESSAGE [gridset] *** imax = 64
*** MESSAGE [gridset] *** jmax = 32
*** MESSAGE [gridset] *** kmax = 20
*** MESSAGE [gridset] *** -- version = ....
:
########## PREDICTION OF CALCULATION ###########
Start Date 2009-03-06T08:26:41+09:00
Current Date 2009-03-06T08:26:45+09:00
Progress 20.00% [***** ]
Remaining CPU TIME 0.160000E+02
Completion Date 2009-03-06T08:27:01+09:00
:
############## CPU TIME SUMMARY ################
held_suarez_1994 0.165611E+01
dynamics_hspl_vas83 0.191452E+02
timefilter_asselin19 0.264027E+00
others 0.896038E+00
------------------------------------------------
TOTAL TIME = 0.219614E+02
この場合, 10 日分の時間積分が行われます. 空間解像度は T21L20 (経度格子点数 64, 緯度点数 32, 鉛直層数 20) です. 計算結果は U.nc や Temp.nc として出力されます. また, リスタートファイルが restart.nc として出力されます.
10 日後における温度の東西平均分布は以下の図のようになります.

この図は, Gphys を 用いて, 下の処理によって描画しています.
まず irb を起動.
$ irb
以下のような irb のプロンプトが表示されます.
irb(main):001:0>
このプロンプトに, 以下のようにコマンドを打ちます.
左端の数字は行番号で, 打つ必要はありません.
1: require "numru/ggraph"
2: include NumRu
3: gphys = GPhys::IO.open('Temp.nc', 'Temp')
4: DCL.gropn(1)
5: DCL.sgpset('lcntl', false) ; DCL.uzfact(0.7)
6: GGraph.tone( gphys.mean('lon').cut('time'=>11) )
7: GGraph.color_bar
8: DCL.grcls
irb のプロンプトにおいて quit と打つと irb を終了することができます.
Held and Suarez (1994) では空間解像度は T63L20 (経度格子点 192, 緯度格子点 96, 鉛直層 20) 相当で, 1200 日の時間積分が行われています. dcpam を用いた, より高い解像度での長期間積分の結果はこちら に載せています.