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

らくらく dcpam5


  1. はじめに
  2. 解析・可視化ツールの準備
  3. dcpam5 のビルド
  4. いくつかのコンパイラに関する注意書き
  5. 実行: 乾燥大気での力学過程ベンチマーク計算 (Held and Suarez, 1994)
  6. 設定の参照と変更
  7. 出力設定の変更
  8. 初期値データファイルの作成
  9. 初期値データ・リスタートデータファイルの入力
  10. 実行: 水惑星実験
  11. 飽和水蒸気圧計算スキームの変更
  12. モジュール間の依存関係ファイルの自動生成
  13. 実行プログラムの更新
  14. 参考文献

はじめに

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

解析・可視化ツールの準備

dcpam5 では入出力するファイルとして Gtool4 NetCDF 規約 に基づいた NetCDF データを扱います.

従って, 数値実験の結果を解析・可視化するため, NetCDF データを取り扱うことの できる解析・可視化ツールを用意する必要があります. ここでは, 電脳 Ruby プロジェクト から提供されるツールを推奨します. 以下の可視化の例では, プロジェクトの製品の一つである GAVE を用います.

なお, 上記のツール以外にも NetCDF を扱える可視化ツール (例えば, GrADSIDL など) でも可視化が可能であるはずです.

GAVE のインストール

インストールの際には, 電脳 Ruby プロジェクト のページの左側の「インストールガイド」をクリックし, 環境に合わせたインストール方法を選んでください.

dcpam5 のビルド

dcpam5 インストールガイド を参考に, dcpam5 のビルドを行ってください. 「ビルドの手引き」の「ソースコードのコンパイル」まで行ってください.

いくつかのコンパイラに関する注意書き

動作チェックを行っている, もしくは行ったことのある いくつかのコンパイラに関する注意書きです.

他のコンパイラについても当てはまる場合があるかもしれませんので, 下記の動作チェックがうまく行かない場合にはご一読ください.

実行: 乾燥大気での力学過程ベンチマーク計算 (Held and Suarez, 1994)

Held and Suarez (1994) (参考文献 参照) が提案した, 物理過程に依存しない大気大循環モデルの力学過程を評価するための ベンチマーク計算を実行する方法を説明します.

dcpam5 では力学過程および Held and Suarez (1994) にて提案された ニュートン冷却とレイリー摩擦のみを計算する実行ファイルとして dcpam_main.F90 を用意しています.

実行プログラムの作成

実行プログラムを作成するには, まず dcpam5 ディレクトリ以下の Config.mk ファイルの MAIN_PROGRAM 変数を以下のように編集してください.

MAIN_PROGRAM=HS94

その後, src/main ディレクトリへ移動し, GNU Make コマンドを実行して ください. (以下では, GNU Make コマンドが /usr/bin/make だと仮定しています).

$ /usr/bin/make clean all

実験用ディレクトリ準備

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
    [/home/dcpam/work/dcpam5/src/main]:
  Directory in which NAMELIST files are prepared
    [/home/dcpam/work/dcpam5/src/main]:
  Save F90/95 source code files? [Y/n]:
  Directory in which source code files are prepared
    [/home/dcpam/work/dcpam5/src]:

                :

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

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

$ cd hs94-exp

実験の実行

実行ファイルとして dcpam_main, init_data などが用意されている はずです. 以下のように dcpam_main を実行してください. プログラム終了には数分〜数十分かかります.

$ ./dcpam_main | tee log.txt

 *** MESSAGE [dcpam_main] ***  Run: Held and Suarez (1994) benchmark test
                   :
 *** MESSAGE [timeset] ***  ----- Initialization Messages -----
 *** MESSAGE [timeset] ***    StartTime  = 0. [day]
 *** MESSAGE [timeset] ***    EndTime    = 7. [day]
 *** MESSAGE [timeset] ***    DelTime    = 30. [min]
 *** MESSAGE [timeset] ***               = 1800. [sec]
                   :
                   :
 *** MESSAGE [fileset] ***  ----- Initialization Messages -----
 *** MESSAGE [fileset] ***    FileTitle       = dcpam5 test run
 *** 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 = 10
 *** MESSAGE [gridset] ***    imax = 32
 *** MESSAGE [gridset] ***    jmax = 16
 *** MESSAGE [gridset] ***    kmax = 5
 *** MESSAGE [gridset] ***  -- version = ....
                   : 

 ########## PREDICTION OF CALCULATION ###########
 Start Date             2008-11-29T16:55:11+09:00
 Current Date           2008-11-29T16:55:25+09:00
 Progress     57.14%  [**************           ]
 Remaining CPU TIME      0.100000E+02
 Completion Date        2008-11-29T16:55:35+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

この場合, 7 日分の時間積分が行われます. 空間解像度は T10L5 (経度格子点数 32, 緯度点数 16, 鉛直層数 5) です. 計算結果は U.nc や Temp.nc として出力されます. また, リスタートファイルが restart.nc として出力されます.

本来, この積分時間と空間解像度はベンチマークとしては小さすぎ, 短すぎます. Held and Suarez (1994) では空間解像度は T42L20 (経度格子点 128, 緯度格子点 64, 鉛直層 20) 相当で, 1200 日の時間積分が行われています.

出力データの参照

出力データの情報を参照する際には, NetCDF ライブラリに含まれる ncdump コマンドを使用します. これは dcpam5 をインストールするにあたり ビルドおよびインストール済みのはずです.

メタデータの参照

U.nc の情報を参照する場合には以下のようにコマンド入力して下さい. 表示される行数が多いため, 表示内容を パイプでページャ more に渡して います.

$ ncdump -h U.nc | more

表示内容を簡単に説明します.

データファイルに含まれる次元変数のリストです. 数値はその次元変数のデータ数です.

netcdf U {
dimensions:
        lon = 32 ;
        lat = 16 ;
        sig = 5 ;
        sigm = 6 ;
        time = UNLIMITED ; // (8 currently)

データファイルに含まれる次元変数・従属変数に関するメタデータです. 'float' はそのデータが単精度実数であることを表します. 倍精度実数である場合は 'double', 整数である場合は 'int' となります. その後ろに 変数(依存する次元変数) が表示されます.

variables:
        float lon(lon) ;
                lon:long_name = "longitude" ;
                lon:units = "degree_east" ;
                lon:standard_name = "longitude" ;
                lon:gt_calc_weight = "lon_weight" ;
                      :
        float time(time) ;
                time:long_name = "time" ;
                time:units = "day" ;
                      :
        float U(time, sig, lat, lon) ;
                U:long_name = "eastward wind" ;
                U:units = "m s-1" ;

データファイル全体に付加される大域属性です. ファイルの規約 (Conventions) や表題, データソース, 作成日時などが 登録されています.

// global attributes:
                :Conventions = "http://www.gfd-dennou.org/library/gtool4/conventions/" ;
                :gt_version = "4.3" ;
                :title = "dcpam5 test run history data" ;
                :source = "dcpam5 (http://www.gfd-dennou.org/library/dcpam)" ;
                :institution = "GFD Dennou Club (http://www.gfd-dennou.org)" ;
                :history = "2008-11-29T22:01:10+09:00 morikawa> gtool_history: HistoryCreate\n",
                        "" ;
}

データ本体の参照

データ本体を参照する場合は以下のようにコマンド入力してください.

$ ncdump Temp.nc | more

以下のようにデータが表示されます.

data:

 lon = 0, 11.25, 22.5, 33.75, 45, 56.25, 67.5, 78.75, 90, 101.25, 112.5, 
    123.75, 135, 146.25, 157.5, 168.75, 180, 191.25, 202.5, 213.75, 225, 
    236.25, 247.5, 258.75, 270, 281.25, 292.5, 303.75, 315, 326.25, 337.5, 
    348.75 ;

 lat = -81.65059, -70.83464, -59.95486, -49.06072, -38.16121, -27.25921, 
    -16.35593, -5.45204, 5.45204, 16.35593, 27.25921, 38.16121, 49.06072, 
    59.95486, 70.83464, 81.65059 ;

                        :

 Temp =
  249.9899, 249.9622, 249.9368, 249.9154, 249.8999, 249.8913, 249.8905, 
    249.8973, 249.9113, 249.9315, 249.9562, 249.9835, 250.0113, 250.0375, 
    250.0599, 250.0769, 250.0871, 250.0898, 250.0847, 250.0722, 250.0533, 
    250.0295, 250.0026, 249.9747, 249.948, 249.9245, 249.9062, 249.8943, 
    249.8899, 249.8932, 249.9041, 249.9217,
  249.9899, 249.9658, 249.9432, 249.9233, 249.9073, 249.8962, 249.8905, 
    249.8907, 249.8967, 249.9081, 249.9244, 249.9445, 249.9672, 249.9913, 
    250.0153, 250.0378, 250.0575, 250.0732, 250.084, 250.0894, 250.0889, 
    250.0825, 250.0708, 250.0543, 250.034, 250.0112, 249.987, 249.9631, 
    249.9407, 249.9212, 249.9058, 249.8952,

可視化

得られたいくつかのデータを可視化してみます. 以下では, GAVE を用いた可視化の方法を例に挙げます. まず gave を起動してください.

$ gave

以下のようなウィンドウが表示されます.

images/gave_start.png

[File] -> [Open] からデータファイルを選択します. ここでは TempEQHs94.nc を選択します. これは Held and Suarez (1994) で提案されるニュートン冷却に使用される 平衡温度です. ファイルがオープンされたら, 以下のように設定して, [draw] をクリックしてください.

images/gave_tempeq_set.png

以下のような図が表示されます. 地上の赤道で 300 K 強で, 高緯度に行くにつれ, また上空に行くにつれ温度が減少している分布となっていることが分かります.

images/gave_tempeq_draw.png

次に, 東西風速の変化を見てみます. [File] -> [Open] から U.nc を読み込みます. 今度は以下のように設定し, [draw] をクリックしてください.

images/gave_u_set.png

以下のような図が表示されます. これは最も地表面に近い層での 東西風速です. 初期には全領域で風速 0 m/s でしたが, 赤道および中緯度で徐々に西向きの風が生じていることが分かります. (U は東向きの風なので, 負の場合には西向きの風を表します).

images/gave_u_sig1_draw.png

最後に, 上空での東西風速を見てみます. [Tools] -> [Dimensions] から次元を設定するウィンドウを表示します. ここで, [sig] の値を 0.2 付近に設定し, 再度 [draw] をクリックしてください.

images/gave_u_dim_set.png

以下のような図が表示されます. これはおおよそ気圧 200 hPa での 東西風速です. 初期には全領域で風速 0 m/s でしたが, 緯度±40°を中心にで徐々に東向きの風が生じていることが分かります.

images/gave_u_sig0.2_draw.png

設定の参照と変更

設定の参照

計算時の設定は標準出力へと表示されます. 実行: 乾燥大気での力学過程ベンチマーク計算 (Held and Suarez, 1994) において表示される内容の一部を解説します.

計算開始時刻, 終了時刻, 時間ステップ, 終了予測時刻表示間隔, CPU 時間計測のオンオフです. timeset モジュール で管理されています.

|*** MESSAGE [timeset] ***  ----- Initialization Messages -----
|*** MESSAGE [timeset] ***    StartTime  = 0. [day]
|*** MESSAGE [timeset] ***    EndTime    = 7. [day]
|*** MESSAGE [timeset] ***    DelTime    = 30. [min]
|*** MESSAGE [timeset] ***               = 1800. [sec]
|*** MESSAGE [timeset] ***    PredictInt = 1. [day]
|*** MESSAGE [timeset] ***    CpuTimeMoniter = T
|*** MESSAGE [timeset] ***  -- version = ...

実験の表題, データソース, データを作成した人/組織です. これらは出力データの大域属性へと与えられます. fileset モジュール で管理されています.

|*** MESSAGE [fileset] ***  ----- Initialization Messages -----
|*** MESSAGE [fileset] ***    FileTitle       = dcpam5 test run
|*** 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 ...

最大全波数, 経度格子点数, 緯度格子点数, 鉛直層数です. gridset モジュール で管理されています.

|*** MESSAGE [gridset] ***  ----- Initialization Messages -----
|*** MESSAGE [gridset] ***    nmax = 10
|*** MESSAGE [gridset] ***    imax = 32
|*** MESSAGE [gridset] ***    jmax = 16
|*** MESSAGE [gridset] ***    kmax = 5
|*** MESSAGE [gridset] ***  -- version ...

物理定数です. constants モジュール で管理されています. 各値の詳細はこのモジュールのマニュアルを参照してください.

|*** MESSAGE [constants] ***  ----- Initialization Messages -----
|*** MESSAGE [constants] ***    PI         = 3.141592653589793
|*** MESSAGE [constants] ***    GasRUniv   = 8.314
|*** MESSAGE [constants] ***    StB        = 0.567E-07
|*** MESSAGE [constants] ***    FKarm      = 0.4
|*** MESSAGE [constants] ***    RPlanet    = 6371000.
|*** MESSAGE [constants] ***    Omega      = 0.7292106590880652E-04
|*** MESSAGE [constants] ***    Grav       = 9.800000000000001
|*** MESSAGE [constants] ***    CpDry      = 1004.6
|*** MESSAGE [constants] ***    MolWtDry   = 0.28964E-01
|*** MESSAGE [constants] ***    GasRDry    = 287.0459881231874
|*** MESSAGE [constants] ***    CpWet      = 1810.
|*** MESSAGE [constants] ***    MolWtWet   = 0.1801528E-01
|*** MESSAGE [constants] ***    GasRWet    = 461.4971291037386
|*** MESSAGE [constants] ***    LatentHeat = 2500000.
|*** MESSAGE [constants] ***    EpsV       = 0.6219886755972932
|*** MESSAGE [constants] ***  -- version ...

リスタートデータの入出力に関する情報です. restart_file_io モジュール で管理されています. 各値の詳細はこのモジュールのマニュアルを参照してください.

|*** 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 = restart.nc
|*** MESSAGE [restart_file_io] ***    IntTime    = 1. [day]
|*** MESSAGE [restart_file_io] ***  -- version ...

ヒストリデータの出力に関する情報です. gtool5 ライブラリ の gtool_historyauto モジュールで管理されています. 各値の詳細は こちら を参照してください.

|*** MESSAGE [HistAuto] ***  ----- "gtool_historyauto_nml" is not loaded" -----
|*** MESSAGE [HistAuto] ***  Global Settings:
|*** MESSAGE [HistAuto] ***    AllOutput       = T
|*** MESSAGE [HistAuto] ***    FilePrefix      =
|*** MESSAGE [HistAuto] ***    Interval        = 1. [day]
|*** MESSAGE [HistAuto] ***    Precision       = float
|*** MESSAGE [HistAuto] ***    TimeAverage     = F
|*** MESSAGE [HistAuto] ***    Origin          = 0. [sec]
|*** MESSAGE [HistAuto] ***    Terminus        = 7. [day]
|*** MESSAGE [HistAuto] ***    SliceStart      = (/ 1, 1, 1, 1, 1 /)
|*** MESSAGE [HistAuto] ***    SliceEnd        = (/ -1, -1, -1, -1, -1 /)
|*** MESSAGE [HistAuto] ***    SliceStride     = (/ 1, 1, 1, 1, 1 /)
|*** MESSAGE [HistAuto] ***    SpaceAverage    = (/ F, F, F, F, F /)
|*** MESSAGE [HistAuto] ***    NewFileInterval = -1 [day]
|*** MESSAGE [HistAuto] ***

力学過程の設定に関する情報です. dynamics_hspl_vas83 モジュール で管理されています. 各値の詳細はこのモジュールのマニュアルを参照してください.

|*** MESSAGE [dynamics_hspl_vas83] ***  ----- Initialization Messages -----
|*** MESSAGE [dynamics_hspl_vas83] ***    TimeIntegScheme  = Semi-implicit
|*** MESSAGE [dynamics_hspl_vas83] ***    EFoldTime = 8640. [sec]
|*** MESSAGE [dynamics_hspl_vas83] ***    VisOrder  = 8
|*** MESSAGE [dynamics_hspl_vas83] ***    VisCoef   = 0.214573634546703E+43
|*** MESSAGE [dynamics_hspl_vas83] ***    GeoPotentialFile    =
|*** MESSAGE [dynamics_hspl_vas83] ***    GeoPotentialVarname =
|*** MESSAGE [dynamics_hspl_vas83] ***  -- version ...

設定の変更

計算設定を変更するには NAMELIST ファイルを使用してください. サンプルとして dcpam_hs94_T42L20.nml を用意しています. このファイルを元に NAMELIST ファイルを作成してください. 以下は dcpam_hs94_T42L20.nml の一部です.

#= dcpam_hs94 プログラム用 NAMELIST ファイル (T42L20 用)
#= NAMELIST file for "dcpam_hs94"
#

&fileset_nml
  FileTitle = 'dcpam5 test run', 
                              ! 出力データファイルの表題.
                              ! Title of output data files
  FileSource = 'dcpam5 (http://www.gfd-dennou.org/library/dcpam)', 
                              ! データファイル作成の手段. 
                              ! Source of data file
  FileInstitution = 'GFD Dennou Club (http://www.gfd-dennou.org)'
                              ! データファイルを最終的に変更した組織/個人. 
                              ! Institution or person that changes data files for the last time
/
&gridset_nml
  nmax = 42,                  ! 最大全波数. 
                              ! Maximum truncated wavenumber
  imax = 128,                 ! 経度格子点数. 
                              ! Number of grid points in longitude
  jmax = 64,                  ! 緯度格子点数. 
                              ! Number of grid points in latitude
  kmax = 20                   ! 鉛直層数. 
                              ! Number of vertical level
/
               :

"&xxxxxx_nml" という NAMELIST 変数群名は xxxxxx というモジュールで 管理される設定値です. dcpam5 で管理される NAMELIST 変数群名のリストおよび 各設定値の詳細については dcpam5 NAMELIST から参照可能です. ただし &gtool_historyauto_nml のみは例外です. これに関しては 出力設定の変更 を参照してください.

編集が終わったら, 以下のように オプション -N (または --namelist) に NAMELIST ファイルを指定しつつ, 実行コマンドを入力してください.

$ ./dcpam_main -N=dcpam_hs94_T42L20.nml | tee log.txt

 *** MESSAGE [timeset] ***  NAMELIST group "timeset_nml" is loaded from "dcpam_hs94_T42L20.nml".
 *** MESSAGE [timeset] ***  ----- Initialization Messages -----
 *** MESSAGE [timeset] ***    StartTime  = 0. [day]
 *** MESSAGE [timeset] ***    EndTime    = 1200. [day]
 *** MESSAGE [timeset] ***    DelTime    = 30. [min]
 *** MESSAGE [timeset] ***               = 1800. [sec]
 *** MESSAGE [timeset] ***    PredictInt = 1. [day]
 *** MESSAGE [timeset] ***    CpuTimeMoniter = T
 *** MESSAGE [timeset] ***  -- version = ....

 *** MESSAGE [gridset] ***  NAMELIST group "gridset_nml" is loaded from "dcpam_hs94_T42L20.nml".
 *** MESSAGE [gridset] ***  ----- Initialization Messages -----
 *** MESSAGE [gridset] ***    nmax = 42
 *** MESSAGE [gridset] ***    imax = 128
 *** MESSAGE [gridset] ***    jmax = 64
 *** MESSAGE [gridset] ***    kmax = 20
            :

出力設定の変更

※ 作成中 ※

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

上記の実験では, 初期値データは実行プログラムによって内部で作成されていました. 以下では, 初期値データをファイルに出力する方法を記します.

まず, 上記の作業と同様に practice ディレクトリへ移動し, make コマンド で実験用ディレクトリを作成してください. その後, 作成された実験用 ディレクトリへ移動してください.

初期値データファイル生成プログラムのサンプルとして init_data が 用意されています. また, NAMELIST ファイルのサンプルとして, init_data_T10L8.nml などを 用意しています. init_data_T10L8.nml を編集後, 以下のように実行してください. コマンドラインオプションとして "-h" や "--help" を指定することで, 解像度や出力されるファイル名の一覧が表示されます.

$ ./init_data -N=init_data_T10L8.nml

デフォルトでは, "init.nc" という名前のファイルが出力されます. このファイルを初期値データとして入力する方法に関しては, 初期値データ・リスタートデータファイルの入力 を参照してください.

初期値データ・リスタートデータファイルの入力

ファイルから初期値データ, もしくはリスタートデータを読み込む際には, NAMELIST ファイルを編集してください. NAMELIST ファイルの 以下の部分を変更してください.

&restart_file_io_nml
  InputFile = 'init.nc',    ! 入力するリスタートデータのファイル名
                            ! filename of input restart data
            :
/

"InputFile" の部分に初期値データもしくはリスタートデータのファイル名を 指定します.

NAMELIST ファイルを変更後, 以下のようにその NAMELIST ファイルを -N もしくは --namelist オプションに指定して実験を始めてください.

$ ./dcpam_main -N=dcpam_hs94_TXXLXX.nml

実験が開始されると, 以下のようなデータ入力のメッセージが表示されるはずです. 確認してください.

|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@UB,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@UN,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@VB,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@VN,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@TempB,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@TempN,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@QVapB,time=10.0
|*** MESSAGE [HistoryGetDouble3] ***  Input init.nc@QVapN,time=10.0
|*** MESSAGE [HistoryGetDouble2] ***  Input init.nc@PsB,time=10.0
|*** MESSAGE [HistoryGetDouble2] ***  Input init.nc@PsN,time=10.0

実行: 水惑星実験

次に, 惑星表面が全て水であるような条件 (水惑星) で実験を行う方法を説明します.

この計算では, 上記で計算した力学過程に, 以下の物理過程を加えています.

実行プログラムの作成

実行プログラムを作成するため, dcpam5 ディレクトリ以下の Config.mk ファイルの MAIN_PROGRAM 変数を以下のように編集してください.

MAIN_PROGRAM=APE

その後, src/main ディレクトリへ移動し, GNU Make コマンドを実行して ください. (以下では, GNU Make コマンドが /usr/bin/make だと仮定しています).

$ /usr/bin/make clean all

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

実験用ディレクトリ準備

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

$ cd practice

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

$ make

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

  Enter directory name [testXX]: ape-exp
  Directory in which executable files are prepared
    [/home/dcpam/work/dcpam5/src/main]: 
          :

そしてそのディレクトリに移動します.

$ cd ape-exp

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

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

$ ./init_data -N=init_data_T21L16.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_T21L16.nc
 *** MESSAGE [restart_file_io] ***    IntTime    = 1. [day]

 *** MESSAGE [HistoryCreate3] ***  "init_T21L16.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_T21L16.nc" is closed

SST データファイルの作成

次に, sst_data と sst_data_T21.nml を用いて, 海水面データ sst_T21.nc を作成します.

$ ./sst_data -N=sst_data_T21.nml

                       :
 *** MESSAGE [restart_surftemp_io] ***  ----- Initialization Messages -----
 *** MESSAGE [restart_surftemp_io] ***  Input::
 *** MESSAGE [restart_surftemp_io] ***    InputFile  =
 *** MESSAGE [restart_surftemp_io] ***    InputName  = SurfTemp
 *** MESSAGE [restart_surftemp_io] ***  Output::
 *** MESSAGE [restart_surftemp_io] ***    OutputFile = sst_T21.nc
 *** MESSAGE [restart_surftemp_io] ***    IntTime    = 1. [day]

 *** MESSAGE [HistoryCreate3] ***  "sst_T21.nc" is created (origin=0. [day])
 *** MESSAGE [surface_data] ***  NAMELIST group "surface_data_nml" is loaded from "sst_data_T21.nml".
 *** MESSAGE [surface_data] ***  NAMELIST group "surface_data_nml" is loaded from "sst_data_T21.nml".
 *** MESSAGE [surface_data] ***  ----- Initialization Messages -----
 *** MESSAGE [surface_data] ***    Pattern = Hosaka et al. (1998)
 *** MESSAGE [surface_data] ***    SurfTemp     = 302.
 *** MESSAGE [surface_data] ***    Albedo       = 0.15
 *** MESSAGE [surface_data] ***    HumidCoeff   = 1.
 *** MESSAGE [surface_data] ***    RoughLength  = 0.1E-03
 *** MESSAGE [surface_data] ***    HeatCapacity = 0.
 *** MESSAGE [surface_data] ***    TempFlux     = 0.
 *** MESSAGE [surface_data] ***    SurfCond     = 0

 *** MESSAGE [HistoryClose] ***  "sst_T21.nc" is closed

実験の実行

最後に dcpam_main, dcpam_ape_T21L16.nml を用いて実験を実施します. 解像度 T21L16, 時間ステップ 20 分で 7 日分計算を行います. リスタートデータ, 地表面リスタートデータといくつかのヒストリデータ ファイルが出力されます.

$ ./dcpam_main -N=dcpam_ape_T21L16.nml

初期値データ, 地表面データ, 実験設定を変更する場合には, 上記の実行に際して, init_data_T21L16.nml, sst_data_T21.nml, dcpam_ape_T21L16.nml を変更してください.

飽和水蒸気圧計算スキームの変更

※ 作成中 ※

モジュール間の依存関係ファイルの自動生成

※ 作成中 ※

実行プログラムの更新

src ディレクトリ以下の編集を行った場合, 以下のようにすることで practice 以下の実験用ディレクトリの内容を簡単に更新することが 可能です. なお, src 以下の Fortran 90/95 プログラムの変更を 行う際には らくらく dcpam5 (製作中) を参照してください.

まず, practice 以下の実験用ディレクトリへ移動します.

$ cd practice/testXX

以下のコマンドを入力します. 更新するか問われるので, "Y" を 入力します.

$ make update

 Update directory "testXX" ? [y/N]: Y

src ディレクトリ内で更新されたファイルが practice/testXX に コピーされます. 古いファイルは ".bak.XX" というサフィックスが付加 されたファイル名に変更されます.

参考文献


$Id: index.rd,v 1.7 2009-01-25 18:48:40 morikawa Exp $
DCPAM Development Group / GFD Dennou Staff dcstaff@gfd-dennou.org