ここでは, 実験条件のいくつかについて変更方法を説明します.
計算設定を変更するには設定ファイル(NAMELIST ファイル)を編集し, これを実行時の -N= オプションに指定します. ここでは, Held and Suarez (1994) による乾燥大気の力学コア計算 で 使用した dcpam_hs94_T21L20.conf を例として用いて説明します.
設定ファイル内の "&xxxxxx_nml" という NAMELIST 変数群名は, それぞれモジュール xxxxxx で 管理される設定値です. dcpam5 で管理される NAMELIST 変数群名のリストおよび 各設定値の詳細については dcpam5 NAMELIST から参照可能です.
解像度は, 設定ファイル (NAMELIST ファイル) に &gridset_nml を用いて設定します.
dcpam_hs94_T21L20.conf には, 下のように設定されています.
&gridset_nml nmax = 21, ! 最大全波数. ! Maximum truncated wavenumber imax = 64, ! 経度格子点数. ! Number of grid points in longitude jmax = 32, ! 緯度格子点数. ! Number of grid points in latitude kmax = 20 ! 鉛直層数. ! Number of vertical level /
これは, T21L20 の解像度 (経度, 緯度, 鉛直方向の格子点数はそれぞれ 64, 32, 20) の 設定です. これを T42L20 の解像度にするためには下のように設定します.
&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 /
なお, 鉛直解像度 (層数) を変更する場合には, &axesset_nml の Sigma の値を 編集し, 各層の配置も指定する必要があります.
編集が終わったら, 以下のように オプション -N (または --namelist) に設定ファイル (NAMELIST ファイル) を指定しつつ, 実行コマンドを入力してください.
$ ./bin/dcpam_main -N=./conf/dcpam_hs94_T21L20.conf | tee hs94-T21L20.log
積分期間は, 設定ファイル (NAMELIST ファイル) に ×et_nml を用いて設定します. dcpam では 2 つの方法のどちらかで積分期間を設定します. ひとつは積分する時間を設定する 方法, もうひとつは積分開始と終了の時刻を指定する方法です.
dcpam_hs94_T21L20.conf では, 積分する時間を設定しており, 下のように設定されています.
×et_nml : IntegPeriodValue = 10.0, ! 計算終了時刻. ! End time of calculation IntegPeriodUnit = 'day', ! 計算開始時刻の単位. ! Unit of end time of calculation : /
これは 10 日間積分することを表しています. 積分時間を 20 日間にするためには下のように設定します.
×et_nml : IntegPeriodValue = 20.0, ! 計算終了時刻. ! End time of calculation IntegPeriodUnit = 'day', ! 計算開始時刻の単位. ! Unit of end time of calculation : /
一方, もうひとつは積分開始と終了の時刻を使って積分期間を設定するためには 下のように指定します.
×et_nml : cal_type = 'noleap', InitialYear = 1, InitialMonth = 1, InitialDay = 1, InitialHour = 0, InitialMin = 0, InitialSec = 0.0d0, EndYear = 1, EndMonth = 1, EndDay = 3, EndHour = 0, EndMin = 0, EndSec = 0.0d0, : /
cal_type は暦の種類を指定し, 上記で指定している noleap はうるう年のない暦を 表します. InitialYear, InitialMonth, ... は開始年, 月, ... を表し, EndYear, EndMonth, ... は終了年, 月, ... を表します. その他の指定については, gtool5 チュートリアル, DCCalCreate の項目 を参照してください.
編集が終わったら, 以下のように オプション -N (または --namelist) に設定ファイル (NAMELIST ファイル) を指定しつつ, 実行コマンドを入力してください.
$ ./bin/dcpam_main -N=./conf/dcpam_hs94_T21L20.nml | tee hs94-T21L20.log
惑星に関する定数は, 設定ファイル (NAMELIST ファイル) に &constants_nml を用いて設定します.
dcpam_hs94_T21L20.conf には, 下のように設定されています.
&constants_nml RPlanet = 6.371e6, ! $ a $ [m]. ! 惑星半径. ! Radius of planet Omega = 7.292e-5, ! $ \Omega $ [s-1]. ! 回転角速度. ! Angular velocity Grav = 9.8, ! $ g $ [m s-2]. ! 重力加速度. ! Gravitational acceleration CpDry = 1004.0, ! $ C_p $ [J kg-1 K-1]. ! 乾燥大気の定圧比熱. ! Specific heat of air at constant pressure GasRDry = 286.85714285 ! $ R $ [J kg-1 K-1]. ! 乾燥大気の気体定数. ! Gas constant of air /
これら上から順に, 惑星半径, 自転角速度, 重力加速度, 大気の定圧比熱, 大気の 気体定数を指定しています. これらの指定を変更することで, 値を変更することができます.
編集が終わったら, 以下のように オプション -N (または --namelist) に NAMELIST ファイルを指定しつつ, 実行コマンドを入力してください.
$ ./bin/dcpam_main -N=./conf/dcpam_hs94_T21L20.nml | tee hs94-T21L20.log
解析用のヒストリデータの出力に関する設定は >ool_historyauto_nml を編集することで変更します.
dcpam_hs94_T21L20.conf には, 下のように設定されています.
! ヒストリデータ出力の全体設定 ! Global settings about history data output ! >ool_historyauto_nml IntValue = 1.0, ! ヒストリデータの出力間隔の数値. ! 負の値を与えると, 出力を抑止します. ! ! Numerical value for interval of history data output ! Negative values suppress output. IntUnit = 'day', ! ヒストリデータの出力間隔の単位. ! Unit for interval of history data output Precision = 'float', ! 単精度 ! ヒストリデータの精度. ! Precision of history data FilePrefix = '', ! ヒストリデータのファイル名の接頭詞. ! Prefixes of history data filenames / ! ! ヒストリデータ出力の個別設定 ! Individual settings about history data output ! >ool_historyauto_nml Name = 'U, V, Temp, Ps, QVap, Vor, Div, SigDot, DPiDt' / >ool_historyauto_nml Name = 'Mass, KinEngy, IntEngy, PotEngy, LatEngy, TotEngy, Enstro', SpaceAverage = .true., .true., .true., .true., .true. /
それぞれの設定項目について以下に記します.
Name を指定しない, もしくは空文字を与えた場合, それは全ての変数に対するデフォルト設定となります. その場合にのみ有効な項目として以下のものがあります.
出力時間間隔などは, これらの値を編集することで変更することができます.
より詳しい説明については, gtool5 チュートリアル: 多数のファイル出力を行うモデルでのデータ出力 -- 設定可能な項目 を参照ください.
また, さらに出力する変数を追加する場合には,
>ool_historyauto_nml Name = 'U, V, Temp, Ps, QVap, Vor, Div, SigDot, DPiDt' /
の Name の行に変数名を追加すか, 新たに下のように行を追加します.
>ool_historyauto_nml Name = 'XXX' /
編集が終わったら, 以下のように オプション -N (または --namelist) に NAMELIST ファイルを指定しつつ, 実行コマンドを入力してください.
$ ./bin/dcpam_main -N=./conf/dcpam_hs94_T21L20.nml | tee hs94-T21L20.log
ファイルから初期値データ, もしくはリスタートデータを読み込む際には, 実行時に読み込まれる NAMELIST ファイルの以下の項目を変更してください.
&restart_file_io_nml InputFile = 'init_T21L20.nc', ! 入力する初期値/リスタートデータのファイル名 ! filename of input initial/restart data : /
"InputFile" の部分に初期値データもしくはリスタートデータのファイル名を 指定します.
NAMELIST ファイルを変更後, 以下のようにその NAMELIST ファイルを -N もしくは --namelist オプションに指定して実験を始めてください.
$ ./bin/dcpam_main -N=./conf/dcpam_hs94_T21L20.nml | tee hs94.log
実験が開始されると, 以下のようなデータ入力のメッセージが表示されます.
|*** MESSAGE [restart_file_io] *** ----- Initialization Messages ----- |*** MESSAGE [restart_file_io] *** Input:: |*** MESSAGE [restart_file_io] *** InputFile = init_T21L20.nc |*** MESSAGE [restart_file_io] *** Output:: |*** MESSAGE [restart_file_io] *** OutputFile = restart.nc |*** MESSAGE [restart_file_io] *** IntTime = 100. [day] |*** MESSAGE [restart_file_io] *** -- version = ... rikawa Exp $ |*** MESSAGE [HistoryGetDouble3] *** Input init_T21L20.nc@U,time=0. |*** MESSAGE [HistoryGetDouble3] *** Input init_T21L20.nc@V,time=0. |*** MESSAGE [HistoryGetDouble3] *** Input init_T21L20.nc@Temp,time=0. |*** MESSAGE [HistoryGetDouble3] *** Input init_T21L20.nc@QVap,time=0. |*** MESSAGE [HistoryGetDouble2] *** Input init_T21L20.nc@Ps,time=0. |*** MESSAGE [restart_file_io] *** Initial data (not restart data) is input from a data file "init_T21L20.nc". *B | (t-dt) and *N (t) are same.
実行用の設定ファイル (NAMELIST ファイル) において下のように設定.
惑星表面において 1 層モデルを選択
&dcpam_main_nml ... PhysImpMode = '1LayModel', ... /
惑星表面温度をモデル内で計算するように設定
&surface_properties_nml ... SurfCondSetting = 'generate_internally' ... / &surface_data_nml ... SurfCond = 1 ... /
上記設定は, 例えば, サンプルとして同梱されている設定ファイル, dcpam_ape_T21L16.conf を変更する場合には,
&surface_data_nml SurfCond = 1 /
のみ追記することで実現できます (その他の設定はデフォルト値).