k 分布作成 : k 分布作成
地球大気の k 分布作成の方法を説明する.
混合比可変 k 分布作成用大気プロファイルの準備 (prog06.1)
$ cd prog06.1_sort_ac_many_mpi
設定ファイルの準備
$ cp sample/Earth.varvmr.mkprofile.conf mkprofile.conf
mkprofile.conf : 入出力ファイルの設定
&molecule_nml MolNum(1:3) = 1, 2, 3, VMR(1:3) = 3*0.0d0, NcFNVMR = "", FlagVMRSetFromFile(1:3) = 3*.false. / &range_nml PressMax = 1.0d6, PressMin = 1.0d-4, NPress = 101, TempMin = 100.0d0, TempMax = 400.0d0 NTemp = 13, KeyMol1Num = 1 NVMRKeyMol1 = 8, VMRsKeyMol1 = 0.0d0, 1.0d-7, 1.0d-6, 1.0d-5, 1.0d-4, 1.0d-3, 1.0d-2, 1.0d-1, KeyMol2Num = 2, NVMRKeyMol2 = 6, VMRsKeyMol2 = 200.0d-6, 300.0d-6, 400.0d-6, 500.0d-6, 600.0d-6, 700.0d-6, KeyMol3Num = 3, NVMRKeyMol3 = 4, VMRsKeyMol3 = 1.0d-8, 1.0d-7, 1.0d-6, 1.0d-5, /
実行
$ mkdir data_profile $ ../prog05.1_calc_ac_many_mpi/mkprofile
実行後にできるファイルは以下.
- data_profile/Profile_T-001_M01-001_M02-001_M03-001.nc のようなファイル
- data_profile/VariableRange.nc
k 分布作成 (prog06.1)
$ rm -f out/*
設定ファイルの準備
$ cp sample/Earth.varvmr-small.file.conf file.conf $ cp sample/Earth.varvmr.many.conf many.conf $ cp sample/Earth.varvmr.sort_ac.conf sort_ac.conf
- file.conf : 入出力ファイルの設定 [変更なし]
many.conf : パラメータ範囲の設定
&many_nml iTemps = 1, iTempe = 13, Mol1Num = 1, iVMRMol1s = 1, iVMRMol1e = 8, Mol2Num = 2, iVMRMol2s = 1, iVMRMol2e = 6, Mol3Num = 3, iVMRMol3s = 1, iVMRMol3e = 4 /
sort_ac.conf : 計算条件の設定
&star_nml StrSpeNcFN = "../prog02.3_calc_stellarspectrum/out/solar_flux_Gueymard2004_1366.1Wm-2.nc" / &band_mode_nml iBands = 0, iBande = 0, iModes = 10, iModee = 10 / &flag_nml FlagChkConstVMR = .false., / &gauss_region_nml NGaussReg = 2, GaussRegBnds = 0.0d0, 0.98d0, 1.0d0 ! GaussRegBnds = 0.0d0, 0.95d0, 1.0d0 / &band_nml NBand = 20, WNBnds = 10.0d2, 100.0d2, 300.0d2, 400.0d2, 600.0d2, 700.0d2, 800.0d2, 1000.0d2, 1100.0d2, 1500.0d2, 2200.0d2, 2500.0d2, 3500.0d2, 4500.0d2, 5500.0d2, 14500.0d2, 20500.0d2, 30500.0d2, 32500.0d2, 34500.0d2, 50000.0d2, ! KeyMolNum = 1, 2, 3 ! BandNBin = 16 / &flag_nml FlagChkConstVMR = .false., / &band_exception_nml KeyMolNum=1,2,3 BandNum=1,GaussRegNBins(1:2)=2,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=2,GaussRegNBins(1:2)=5,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=3,GaussRegNBins(1:2)=4,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=4,GaussRegNBins(1:2)=4,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=5,GaussRegNBins(1:2)=6,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=6,GaussRegNBins(1:2)=6,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=7,GaussRegNBins(1:2)=4,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=8,GaussRegNBins(1:2)=4,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=9,GaussRegNBins(1:2)=7,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=10,GaussRegNBins(1:2)=3,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=11,GaussRegNBins(1:2)=4,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=12,GaussRegNBins(1:2)=2,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=13,GaussRegNBins(1:2)=6,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=14,GaussRegNBins(1:2)=4,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=15,GaussRegNBins(1:2)=8,2 / &band_exception_nml KeyMolNum=1,2,3 BandNum=16,GaussRegNBins(1:2)=5,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=17,GaussRegNBins(1:2)=2,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=18,GaussRegNBins(1:2)=1,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=19,GaussRegNBins(1:2)=1,1 / &band_exception_nml KeyMolNum=1,2,3 BandNum=20,GaussRegNBins(1:2)=1,1 /
コンパイル
コンパイル
$ make
コンパイルが成功すると, 下の実行ファイルができる.
- sort_ac_many
実行
逐次実行
$ ./sort_ac_many
標準出力に Finish と表示されれば無事実行終了. 計算結果は
out/ac_T-001_M01-001_M02-001_M03-001-00-10.nc など.
[今後の為に] 並列実行
ここの例では比較的短時間で計算が終了する. 今後 k 分布作成の回数が増えた場合には, 以下のように MPI を用いて並列実行すると良い.
$ mpiexec -n 16 ./sort_ac_many >& tee error.log &
標準出力に Finish と表示されれば無事実行終了. 計算結果は
out/ac_T-001_M01-001_M02-001_M03-001-00-10.nc など.
親ディレクトリに戻る
$ cd ..