Held and Suarez (1994) 力学コア実験

Held and Suarez (1994) が提案した, 大気大循環モデルの力学過程を評価するための 実験を実行する方法を説明します.

この計算には以下の物理過程を用いています.

概要

本実験は海表面温度データ等の実験用データを用いないため, 以下の 3 つのステップで行います.

実験用ディレクトリ準備

dcpam5 の数値実験はソースツリー内部では行わず ソースツリーとは別の外部ディレクトリにて行うことを推奨いたします.

まず dcpam5 ソースのトップディレクトリ(以下の例では dcpam5-YYYYMMDDとする)に移動してください. 以下では dcpam5 ソースディレクトリの隣に ../dcpma5-exp/hs94-exp ディレクトリを作成し, そこで実験を行うことにします. 次のように ../dcpam5-exp/hs94-exp ディレクトリを作成し, 移動してください.

$ mkdir -p ../dcpam5-exp/hs94-exp
$ cd ../dcpam5-exp/hs94-exp

次に, このディレクトリに実行ファイルと設定ファイル置き場を作成します.

$ mkdir bin
$ mkdir conf

最後に作成したディレクトリに実行ファイルと設定ファイルをコピーします.

$ cp ../../dcpam5-YYYYMMDD/src/main/dcpam_main bin
$ cp ../../dcpam5-YYYYMMDD/src/main/dcpam_init_data  bin
$ cp ../../dcpam5-YYYYMMDD/exp_setup_files/*.conf conf

なお, 実行ファイルと設定ファイル (NAMELIST ファイル) があれば, どのディレクトリにおいても計算を行うことができます.

初期値データファイルの作成

dcpam_init_data と init_data_hs94_T21L20.conf を用いて初期値ファイル init_T21L20.nc を作成します.

$ ./bin/dcpam_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 日後における温度の東西平均分布は以下の図のようになります.

images/hs94_irb_temp_meanlon_time11day.png

この図は, 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 を用いた, より高い解像度での長期間積分の結果はこちら に載せています.

また, 解析・可視化のもう少し詳しい方法についてはこちらを参照してください.

最後に

実験ディレクトリに作成された計算結果を保存しておきたい場合には データ用ディレクトリ(例えば data01)を作成し, ファイルを移動させて整理しておきましょう.

$ mkdir data01
$ mv *.nc *.log data01/

なお, 計算結果を計算実行時にサブディレクトリへ出力することも可能です. 実験設定の変更の出力設定の変更を参照し, NAMELIST "&gtool_historyauto_nml" の変数 "FilePrefix" による設定を試してみて下さい.

参考文献


$Id: exp-hs94.rd,v 1.15 2014-03-12 01:08:27 yot Exp $