単位変換 (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.unitNone になります。

単位変換器の使い方

各物理量は 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)

メソッド

変換方向

用途

trans(x)

SI → EMSES

初期条件の設定、理論値との比較

reverse(x)

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 単位

phi

電位

V

E

電場

V/m

B

磁束密度

T

J

電流密度

A/m^2

n

数密度

/m^3

rho

電荷密度

C/m^3

v

速度

m/s

t

時間

s

f

周波数

Hz

length

長さ

m

q

電荷

C

m

質量

kg

W

エネルギー

J

w

エネルギー密度

J/m^3

P

パワー

W

T

温度

K

F

N

a

加速度

m/s^2

i

電流

A

N

フラックス

/m^2s

c

光速

m/s

eps

誘電率

F/m

mu

透磁率

H/m

C

静電容量

F

L

インダクタンス

H

G

コンダクタンス

S

q_m

比電荷

C/kg

qe

素電荷

C

qe_me

電子比電荷

C/kg

kB

ボルツマン定数

J/K

e0

真空誘電率

F/m

m0

真空透磁率

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)