k 分布作成 : ラインバイライン計算
地球大気の k 分布テーブル作成用ラインバイライン計算の方法を説明する.
k 分布テーブル作成用ラインバイライン計算は, 指定する離散的な圧力, 温度, 混合比に対してそれぞれ計算する必要がある.
ここでは混合比固定の k 分布テーブルを作成するため, 下の数の積だけの k 分布を計算する.
- 混合比に対して計算点数 1 (指定した大気プロファイルの混合比分布)
- 圧力に対して計算点数 102 (0 Pa, 1e-4 - 1e6 Pa まで対数的に等間隔)
- 温度に対する計算点数 13 (100 - 400 K まで線形に等間隔)
地球大気ラインバイライン計算の実施 (prog05.1)
$ cd prog05.1_calc_ac_many_mpi $ rm -f data_profile/* $ rm -f out/*
設定ファイルの準備
$ cp sample/Earth.varvmr-small.mkprofile.conf mkprofile.conf $ cp sample/Earth.varvmr-small.many.conf many.conf $ cp sample/Earth.calc_ac.conf calc_ac.conf $ cp sample/Earth.file.conf file.conf
mkprofile.conf : 入出力ファイルの設定
&molecule_nml MolNum(1:3) = 1, 2, 3, VMR(1:3) = 3*0.0d0, NcFNVMR = "../prog01.0_mkprofile_ascii/out/Earth_ICRCCM_LW_Case27_MLS_CO2-300ppmv.nc", FlagVMRSetFromFile(1:3) = 3*.true. / &range_nml PressMax = 1.0d6, PressMin = 1.0d-4, NPress = 101, TempMin = 100.0d0, TempMax = 400.0d0 NTemp = 13, KeyMol1Num = 1 NVMRKeyMol1 = 1, VMRsKeyMol1 = 0.0d0, KeyMol2Num = 2, NVMRKeyMol2 = 1, VMRsKeyMol2 = 0.0d0, KeyMol3Num = 3, NVMRKeyMol3 = 1, VMRsKeyMol3 = 0.0d0, /
- 内容説明 (Earth.fixvmr.mkprofile.conf の説明)
many.conf : 計算する範囲の設定
&many_nml iTemps = 1, iTempe = 13, Mol1Num = 1, iVMRMol1s = 1, iVMRMol1e = 1, Mol2Num = 2, iVMRMol2s = 1, iVMRMol2e = 1, Mol3Num = 3, iVMRMol3s = 1, iVMRMol3e = 1 /
- 内容説明 (Earth.fixvmr.many.conf の説明)
- calc_ac.conf : 計算条件の設定 [変更なし]
- file.conf : 入出力ファイルの設定 [変更なし]
- mpisubloop.conf : MPI 並列数の指定 [変更なし] [現在は使わない]
コンパイル
コンパイル
$ make
コンパイルが成功すると, 下の実行ファイルができる.
- mkprofile
- calc_ac_many
- merge
実行
mkprofile で気体の吸収係数をラインバイライン計算する大気プロファイルを複数 (多数) 用意し, calc_ac_many でそれら大気プロファイルに対して気体の吸収係数をラインバイライン計算する. merge は, とりあえず用いない方法を説明する.
プロファイル準備
$ ./mkprofile
data_profile 以下に
- Profile_T-001_M01-001_M02-001_M03-001.nc のようなファイル
- VariableRange.nc
ができていれば良い.
逐次ラインバイライン計算実行
$ ./calc_ac_many
標準出力に Finish と表示されれば無事実行終了. 計算結果は
out/ac_T-001_M01-001_M02-001_M03-001.nc など
[今後の為に] 並列ラインバイライン計算実行
ここの例ではラインバイライン計算を 2 回実行するだけのため短時間で計算が終了する. 今後ラインバイライン計算の回数が増えた場合には, 以下のように MPI を用いて並列実行すると良い (下の例は 16 並列).
$ mpiexec -n 16 ./calc_ac_many >& error.log &
標準出力に Finish と表示されれば無事実行終了. 計算結果は
out/ac_T-001_M01-001_M02-001_M03-001.nc など
親ディレクトリに戻る
$ cd ..