木星大気計算

木星大気放射場のラインバイライン計算を行う際の,

1. 大気プロファイルの準備

について説明する.

大気プロファイルの変更

概要

理想化した木星大気のプロファイルを作成し, 決められた書式でテキストファイルに保存する.

保存したテキストファイルのデータを, prog01.0_mkprofile_ascii で netcdf 形式でファイルに保存する.

理想化された大気プロファイル

ここでは, 下のような理想化された木星大気プロファイルを考える.

  • 圧力
    • 範囲 : 1e7 Pa (100 bar) から 1e2 Pa (0.001 bar)
    • 間隔 : 0.2 スケールハイト
  • 温度
    • 下端から温度が 105.6 K となる圧力まで中立. ただし T(p=22e5 Pa) = 428 K (Seiff et al., 1998).
      • 105.6 K の温度は, 木星の有効放射温度 125.57 K (Li et al., 2012) を用いて求めた「成層圏温度」. つまり 125.57 / 2**0.25.
      • 中立のとき, 温位 theta = T*(p_0/p)**(R/Cp) 一様.
        • 一様な温位を theta_0 とすると, 温度分布は T = theta_0*(p/p_0)**(R/Cp) = theta_0/(p_0**(R/Cp))*p**(R/Cp) に従う. ただし, R, Cp は定圧比熱, 単位質量あたりの気体定数.
        • T(p=22e5 Pa) = 428 K であるから, theta_0 / p_0**(R/Cp) = 428 / (22e5**(R/Cp)). ただし, 圧力と温度の単位はそれぞれ Pa, K.
          • 平均分子量 : 2.27e-3 kg mol-1
            • 大気組成 : H2 0.865, He 0.135 (Table 4.6 (p.102) of Irwin (2009))
          • 定圧比熱 : 10998 J K-1 kg-1 (Table 4.1 (p.74) of Irwin (2009))
    • 105.6 K となる圧力より高高度は等温
  • 気体体積混合比
    • 考慮する気体種は H2O, CH4, NH3, H2S, H2, He. それぞれの体積混合比は以下 (A, B については備考を参照すること).
      • H2O: 下端では 5.2e-4. 未飽和の時は下端の値. ある高度で飽和したらそれより上空では, それより下層における最小の飽和体積混合比 (定数 A=17.477, B=6164.65)
      • CH4: 下端では 1.8e-3. 未飽和の時は下端の値. ある高度で飽和したらそれより上空では, それより下層における最小の飽和体積混合比 (定数 A=10.682, B=1163.8)
      • NH3: 下端では 6.1e-4. 未飽和の時は下端の値. ある高度で飽和したらそれより上空では, それより下層における最小の飽和体積混合比 (定数 A=17.347, B=3930.6)
      • H2S: 下端では 6.7e-5. 未飽和の時は下端の値. ある高度で飽和したらそれより上空では, それより下層における最小の飽和体積混合比 (定数 A=12.884, B=2702.4)
      • H2 : 0.862 (1 から他の値を引いた)
      • He : 0.135
    • 備考
      • 下端の値は Table 4.6 (p.102) of Irwin (2009) より得た.
      • 飽和体積混合比は p_{sat}/p. ここで p_{sat}, p はそれぞれ飽和蒸気圧と圧力.
        • p_{sat} は定数 A, B, 温度 T を用いて p_{sat} = exp(A-B/T) より求める.
          • 定数 A, B は Table 4.5 (p.96) of Irwin (2009) より得た.
          • 上に挙げた定数 A, B を用いて求めた p_{sat} の単位は bar であることに注意すること.
      • H2O, CH4, NH3, H2S, H2 の HITRAN molecular number はそれぞれ 1, 6, 11, 31, 45.
      • He は HITRAN に含まれていないため, molecular number 91 として吸収線の吸収の無いデータを用意.
  • 雲質量混合比
    • (とりあえず) ゼロ.

上の大気プロファイルを作成し, テキスト形式で保存する Fortran プログラムを作成する. ただし, 出力する圧力, 温度, 体積混合比の単位はそれぞれ Pa, K, mol mol-1 = 1 とすること. テキスト形式の書式については下に説明する.

テキスト形式大気プロファイルデータの書式

保存するテキストファイルの書式 (prog01.0_mkprofile_ascii のプログラムが読み込むファイルの形式) について説明する.

大気レベル/層の構造

大気レベル・層に対して以下の物理量を指定する.

P   : 圧力             (@大気レベル(層境界))
T   : 温度             (@大気レベル(層境界))
VMR : 体積混合比       (@大気レベル(層境界))
Rad : 粒子の半径       (@大気層(中間))
MMR : 粒子の質量混合比 (@大気層(中間))

ただし, 雲, エアロゾルを考慮しない場合には粒子の値は不要.

大気レベル/層ごとに下のように配置されているとする.

==========  P(NLev)  , T(NLev)  , VMR(NLev)    (NLev)-th level (upper boundary)
-  -  -  -  Rad(NLev-1), MMR(NLev-1)           (NLev-1)-th layer
==========  P(NLev-1), T(NLev-1), VMR(NLev-1)  (NLev-1)-th level
-  -  -  -  Rad(NLev-2), MMR(NLev-2)           (NLev-2)-th layer

...

-  -  -  -  Rad(3), MMR(3)      2nd layer
==========  P(3), T(3), VMR(3)  3rd level
-  -  -  -  Rad(2), MMR(2)      2nd layer
==========  P(2), T(2), VMR(2)  2nd level
-  -  -  -  Rad(1), MMR(1)      1st layer
==========  P(1), T(1), VMR(1)  1st level (lower boundary)

ファイルフォーマット

上記の大気構造中の物理量配置にたいして, ファイルは下のようなフォーマットである必要がある.

NLev        : Number of levels (layer interfaces)
NMol        : Number of molecules
MolNumX     : Xth molecular number
BottomT     : temperature at the bottom (lower boundary)
P(k)        : pressure at k'th level
T(k)        : temperature at k'th level
MolX_VMR(k) : volume mixing ratio of Xth molecule at k'th level
NPtcl       : Number of particles
PtclYName   : name of Yth particle
PtclYDens   : density of Yth particle
PtclYRad(l) : effective radius of of Yth particle at l'th layer
PtclYMMR(l) : mass mixing ratio of of Yth particle at l'th layer

ただし, 雲, エアロゾルを考慮しない場合には NPtcl = 0 とし, PtclY* の値は不要.

l.1                        : Comment (This line is not read, actually.)
l.2                        : NLev
l.3                        : NMol
l.4                        : MolNum1, MolNum2, ...
l.5                        : BottomT

l.6                        : P(1)   , T(1)   , Mol1_VMR(1)   , Mol2_VMR(1)   , ...
l.7                        : P(2)   , T(2)   , Mol1_VMR(2)   , Mol2_VMR(2)   , ...
...
l.(5+NLev)                 : P(NLev), T(NLev), Mol1_VMR(NLev), Mol2_VMR(NLev), ...

l.(5+NLev+1)               : NPtcl
l.(5+NLev+2)               : Ptcl1Name, Ptcl2Name, ...
l.(5+NLev+3)               : Ptcl1Dens, Ptcl2Dens, ...

l.(5+NLev+3+1)             : Ptcl1Rad(1)     , Ptcl2Rad(1)     , ...
l.(5+NLev+3+2)             : Ptcl1Rad(2)     , Ptcl2Rad(2)     , ...
...
l.(5+NLev+3+NLev-1)        : Ptcl1Rad(NLev-1), Ptcl2Rad(NLev-1), ...

l.(5+NLev+3+NLev-1+1)      : Ptcl1MMR(1)     , Ptcl2MMR(1) , ...
l.(5+NLev+3+NLev-1+2)      : Ptcl1MMR(2)     , Ptcl2MMR(2) , ...
...
l.(5+NLev+3+NLev-1+NLev-1) : Ptcl1MMR(NLev-1), Ptcl2MMR(NLev-1) , ...

プログラムの実行

変更した大気プロファイルデータを用いて prog01.0_mkprofile_ascii で netcdf ファイルを作成する.

設定ファイルの準備

(場所は prog01.0_mkprofile_ascii ディレクトリ内.)

  • mkprofile.conf: 入出力ファイルの指定

    &file_nml
      InASCIIFn   = "data/Venus.txt",
      OutNcFn     = "out/Venus_VIRA+GasVMR+CldMMR+UVabsMMR_H2O_CO2_CO_SO2_HF_OCS_N2.nc"
    /
    • 変数
      • InASCIIFn : 入力ファイル名 (テキスト形式)
        • 自分で作成したファイル名のパスを指定.
        • 例えば,

          InASCIIFn   = "Jupiter_Simple.txt"
      • OutNcFn : 出力ファイル名 (netcdf 形式)
        • 例えば,

          OutNcFn     = "out/Jupiter_Simple.nc"

コンパイル

$ make

コンパイルが成功すると下の実行ファイルができる.

  • mkprofile

実行

$ ./mkprofile

Finish と表示されれば無事実行終了.

指定した出力ファイルが出来ていることを確認する.