惑星大気放射モデル 描画・解析 1 単位の変更, 波数軸の変更

単位の変更

計算結果の単位を変更する方法を説明する.

Takahashi et al. (2023) のモデルでは, すべての計算を MKS 単位系で行い, MKS 単位系の数値を出力する. しかし, 大気科学においてすべての物理量が MKS で記述されるとは限らない. したがって, 図を描くときには単位を変更しなければならない.

例えば温度変化率は MKS 単位系では K s-1 となるが, しばしば K day-1 の単位で表される ("day" が地球日を表すのか木星日など惑星の太陽日を表すのかは目的による). このときは, 温度変化率の GPhys オブジェクトを gp として,

gp = gp * 86400

とすると, gp の物理量の単位が K day-1 ("day" は地球日) となる.

また, これだけの操作では gp の物理量の単位が変更されていないため, 単位を変更するために,

gp.units = "K day-1"

などとする.

波数軸の変更

計算結果の波数軸を変更する方法を説明する.

Takahashi et al. (2023) のモデルでは, すべての計算を MKS 単位系で行い, MKS 単位系の数値を出力するため, 波数軸の単位が m-1 (メートルの逆数) となっている. しかし, 大気科学においてこの単位を用いることはまずない. 波数の単位は cm-1 (センチメートルの逆数) であるし, 波長を単位とすることもある. したがって, スペクトルの図を描くときには波数軸を変更しなければならない.

ここでは GPhys で波数軸を変更する方法の一例を説明する. なお, 下の説明における "um" はマイクロメートルを表す.

波数軸の単位を cm-1 にする方法

こちらのファイル (analysis_rad.rb) に定義したメソッド axis_conv_wn を用いる. そのメソッドを用いるにはまず, 描画のスクリプトの先頭に下のように書き, スクリプトからメソッドを呼び出せるようにする.

require './analysis_rad'

なお, ここでは描画のスクリプトと analysis_rad.rb が同じディレクトリにあると仮定している. その上で, スペクトル (波数軸を持つ一次元データ) の GPhys オブジェクトを gp として,

gp = axis_conv_wn( gp, false )

とすると, gp 内の波数軸の単位が cm-1 となる.

なお, もしフラックススペクトル密度 (例えば単位が W m-2 m = W m-2 (m-1)-1) の軸を変更する場合には値の変更が必要だろう. その場合には,

gp = axis_conv_wn( gp, true )

とすると, gp 内のフラックススペクトル密度の単位が W m-2 m から W m-2 um となる.

波数軸を波長軸 (単位を um) にする方法

こちらのファイル (analysis_rad.rb) に定義したメソッド axis_conv_wl を用いる.

このメソッドは axis_conv_wn と同じように, ファイルの先頭で

require './analysis_rad'

とした上で使用する. スペクトル (波数軸を持つ一次元データ) の GPhys オブジェクトを gp として,

gp = axis_conv_wl( gp, false )

とすると, gp 内の波数軸が波長軸 (単位が um) となる.

なお, もしフラックススペクトル密度 (例えば単位が W m-2 m = W m-2 (m-1)-1) の軸を変更する場合には値の変更が必要だろう. その場合には,

gp = axis_conv_wl( gp, true )

とすると, gp 内のフラックススペクトル密度の単位が W m-2 m から W m-2 um-1 となる.

加熱率スペクトルの高度分布の描画

加熱率スペクトルの高度分布を描画する方法を説明する. 加熱率スペクトルは, 例えば Takahashi et al. (2024) の Fig. 3 のようなものである.

加熱率スペクトルは

prog03.0_calc_rte_Jupiter$ ls out/Jupiter_Simple_Spectral_Flux.nc

に保存される変数 DRadFluxDPress を用いて描画できる. しかし, 圧力と波数の軸を持つこの二次元変数は, 一般に波数軸のデータ数が多すぎるために GPhys では等値線図を描画できない. そのため, 描画するには波数軸の長さを短くする必要があり, その一つの方針としてここでは波数軸に対して移動平均を取る.

GPhys オブジェクトの波数軸に対する移動平均は, こちらのファイル (analysis_rad.rb) に定義したメソッド wn_running_mean を用いることで実施できる.

このメソッドは, ファイルの先頭で

require './analysis_rad'

とした上で使用する.

このメソッドを例えば下のように用いると加熱率スペクトルを計算できる. ここで, nave は移動平均のデータ点数である.

grav = 8.9   # gravitational acceleration (m s-2)
cp   = 10998 # specific heat at constant pressure (J K-1 kg-1)
# set number of data for running averaging
nave = 15
gphysout = wn_running_mean( gphys, nave )
# convert unit of temperature tendency from W m-2 m Pa-1 to K s-1 m
#   unit of DRadFluxDPress is W m-2 m Pa-1
#   DRadFluxDPress is multiplied by dp/dz / (rho*cp) and its unit is K s-1 m
gphysout = gphysout * grav / cp
gphysout.units = 'K s-1 m'

このメソッドを用いたスクリプトは例えばこのようになるだろう.