単位変換 (data.unit)
emout は EMSES 内部(規格化)単位と SI 単位の双方向変換を提供します。
前提条件
単位変換にはパラメータファイルに変換キーが必要です。
plasma.inp 形式 — 1 行目:
!!key dx=[0.5],to_c=[10000.0]
plasma.toml 形式:
[meta.unit_conversion]
dx = 0.5
to_c = 10000.0
dx: グリッド間隔(メートル [m])to_c: EMSES 規格化単位での光速
キーが存在しない場合、data.unit は None になります。
単位変換器の使い方
各物理量は data.unit.<名前> で UnitTranslator にアクセスできます:
import emout
data = emout.Emout("output_dir")
# SI → EMSES
emses_velocity = data.unit.v.trans(1e5) # 1e5 m/s → EMSES
# EMSES → SI
si_velocity = data.unit.v.reverse(4.107) # 4.107 EMSES → m/s
trans(value) と reverse(value)
メソッド |
変換方向 |
用途 |
|---|---|---|
|
SI → EMSES |
初期条件の設定、理論値との比較 |
|
EMSES → SI |
シミュレーション結果の解釈 |
データからの SI 値の直接取得
グリッドデータ配列の .val_si プロパティで SI 単位の値を取得できます:
# 電位 [V]
phisp_V = data.phisp[-1].val_si
# 電流密度 [A/m^2]
j1z_A_m2 = data.j1z[-1].val_si
# 数密度 [/m^3]
nd1p_m3 = data.nd1p[-1].val_si
スライスしたデータでも使えます:
# 2D スライスの SI 値
phi_slice = data.phisp[-1, :, 32, :].val_si
プロットでの SI 単位
デフォルトでは plot() は軸ラベルとカラーバーに SI 単位を使用します:
data.phisp[-1, 100, :, :].plot() # SI 単位(デフォルト)
data.phisp[-1, 100, :, :].plot(use_si=False) # EMSES 単位
利用可能な単位変換器
名前 |
物理量 |
SI 単位 |
|---|---|---|
|
電位 |
V |
|
電場 |
V/m |
|
磁束密度 |
T |
|
電流密度 |
A/m^2 |
|
数密度 |
/m^3 |
|
電荷密度 |
C/m^3 |
|
速度 |
m/s |
|
時間 |
s |
|
周波数 |
Hz |
|
長さ |
m |
|
電荷 |
C |
|
質量 |
kg |
|
エネルギー |
J |
|
エネルギー密度 |
J/m^3 |
|
パワー |
W |
|
温度 |
K |
|
力 |
N |
|
加速度 |
m/s^2 |
|
電流 |
A |
|
フラックス |
/m^2s |
|
光速 |
m/s |
|
誘電率 |
F/m |
|
透磁率 |
H/m |
|
静電容量 |
F |
|
インダクタンス |
H |
|
コンダクタンス |
S |
|
比電荷 |
C/kg |
|
素電荷 |
C |
|
電子比電荷 |
C/kg |
|
ボルツマン定数 |
J/K |
|
真空誘電率 |
F/m |
|
真空透磁率 |
N/A^2 |
時間軸の単位カスタマイズ
デフォルトでは時間軸は秒 (SI) で表示されます。プラズマ周波数規格化時間($\omega_{pe} t$)に切り替えることもできます:
from emout.emout.units import wpet_unit
# 以降のすべてのプロットに対してグローバルに登録
emout.Emout.name2unit["t"] = wpet_unit
変換器の合成
UnitTranslator オブジェクトは乗算で合成できます:
# 出力ステップ → SI 秒の変換
t_translator = data.unit.t * UnitTranslator(data.inp.ifdiag * data.inp.dt, 1)