[ English | Japanese ] [ 地球流体電脳倶楽部 / 惑星大気モデル DCPAM ] [ dcpam5 ドキュメント / ごくらく dcpam5 ]

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

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

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


  1. 概要
  2. 実験用ディレクトリ準備
  3. 初期値データファイルの作成
  4. 実験の実行
  5. 結果の描画
  6. 参考文献

概要

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

実験用ディレクトリ準備

practice ディレクトリに移動してください.

$ cd practice

そのディレクトリ内で, make コマンドを実行してください. 自動的に実行ファイルや NAMELIST ファイルがコピーされます. make コマンド入力後, まずディレクトリ名を適宜入力してください. (下記の例では hs94-exp としています). それ以降の質問はとりあえずそのまま Enter キーを入力してください.

$ make

****** Setup a directory for a experiment ******

  Enter directory name [testXX]: hs94-exp
  Directory in which executable files are prepared
    [../src/main]:
  Directory in which NAMELIST files are prepared
    [../src/main]:
  Save F90/95 source code files? [y/N]:

                :

*** Setup of "hs94-exp" is complete ***

hs94-exp というディレクトリが作成され, その中に 実行ファイルや NAMELIST ファイル, ソースコードがコピーされます. hs94-exp ディレクトリ内に移動してください.

$ cd hs94-exp

なお, このディレクトリ内以外でも, 実行ファイル, 設定ファイル (namelist ファイル) があれば計算を行うことはできます.

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

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

$ ./init_data -N=init_data_hs94_T21L20.nml

                       : 
 *** 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 "init_data_T21L16.nml".
 *** MESSAGE [initial_data] ***  NAMELIST group "initial_data_nml" is loaded from "init_data_T21L16.nml".
 *** 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.nml を用いて, 以下のように dcpam_main を実行してください. プログラム終了には数分〜数十分かかります.

(なお, クロスコンパイル環境では以下の方法でプログラムを 実行することはできないので注意してください. その場合の実行方法 に関しては, その環境でのプログラム実行マニュアルなどを参照ください. )

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

参考文献


$Id: exp-hs94.rd,v 1.6 2011-04-08 03:57:26 yot Exp $
DCPAM Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org