境界から粒子を流入させる
box の外にあるプラズマ(外部プラズマ、reservoir)から、密度・温度または速度分布に対応する粒子を box の面から入れる手順です。
非周期の面を開放にし、粒子種の [particles.species.inflow] でその面を "reservoir" にします。
このページを読むと、最小の設定を作り、分布と流入の写像を選び、実際に入った量を出力で確かめられます。
1. 最小の設定を作る
Section titled “1. 最小の設定を作る”既存のケースに、上端面から電子を入れる差分です。値は例で、特定のプラズマ環境を表すものではありません。
[run.batch]duration_s = 1.0e-6
[domain]box_min = [0.0, 0.0, 0.0]box_max = [1.0, 1.0, 1.0]periodic_axes = []
[particles.boundary]z_high = "open"
[[particles.species]]species_key = "electron"charge_c = -1.602176634e-19mass_kg = 9.1093837139e-31
[particles.species.distribution]number_density_m3 = 5.0e6temperature_ev = 10.0drift_velocity_m_s = [0.0, 0.0, -4.0e5]
[particles.species.sampling]weight = 1.0e5
[particles.species.inflow]z_high = "reservoir"上端面の内向き法線は なので、負の z の drift は box の内向きです。6 つの面のうち複数を同時に選べます。
上端面では内向きが で、流入量は開放面全体の流束から求めます。
- バッチ幅(
run.batch.duration_s)を正にする。入る粒子数はバッチ幅に比例する。 - 流入面は非周期で、その粒子種にとって開放面にする。
- 流入は選んだ面の全体から入る。面の一部だけから入れることはできない。
- 境界流入だけを使う粒子種は、
[particles.species.source]を書かない。
設定を保存したら、検査してから実行します。
beachx lint beach.tomlbeach beach.tomllint が通っても、流束、重み、電位の基準が物理的に適切だとは限りません。
2. 分布を選ぶ
Section titled “2. 分布を選ぶ”流入分布は、外部プラズマの密度、温度、drift 速度で決まる drift Maxwell 分布です。
Maxwell 分布
Section titled “Maxwell 分布”密度(distribution.number_density_m3 または distribution.number_density_cm3)、温度、drift 速度から、各面を内向きに横切る束
を求めます。面を横切る確率は内向きの法線速度に比例するので、法線速度は束で重み付けした分布から選びます。
1 バッチで入るマクロ粒子数の期待値は
です。 は面の面積、 はバッチ幅、 は重みです。端数は次のバッチへ持ち越すので、 バッチごとの粒子数は一定とは限りません。
重みを物理的に決めたい場合は sampling.weight、1 バッチの標本数から決めたい場合は
sampling.target_macro_particles_per_batch を指定します。後者は重みを決めるための目標で、物理的な束は変えません。
両方は指定できません。
3. 流入の写像を選ぶ
Section titled “3. 流入の写像を選ぶ”外部プラズマの分布をどこで定義したかで、particles.reservoir.inflow_model を選びます。
| 分布を定義した場所 | inflow_model | 動作 |
|---|---|---|
| 流入面の上 | "source_vdf"(既定値) | 設定した分布をそのまま流入面の分布として使う |
| 無限遠(上流) | "infinity_barrier" | 上流電位と流入面の平均電位の差で、届く粒子を選び、法線速度を変える |
[particles.reservoir]inflow_model = "infinity_barrier"phi_infty_v = 0.0face_potential_grid_n = 5上流電位を 、バッチの初めの流入面の平均電位を とすると、流入面での法線速度は
です。 は符号付きの電荷なので、電子と正イオンでは同じ電位差に対して の符号が逆になります。
| 届く粒子と速度の変化 | |
|---|---|
| の粒子だけが届き、流入面までに減速する | |
| 法線速度を変えない | |
| すべての粒子が届き、流入面までに加速する |
接線速度は変えません。 は流入面上の face_potential_grid_n × face_potential_grid_n 点の平均で、粒子ごとの局所電位ではありません。
外部シースとの接続を使う場合は、流入の写像を外部シースが決めるので、infinity_barrier は使えません。
4. 入った量を出力で確かめる
Section titled “4. 入った量を出力で確かめる”beachx inspect outputs/latestgrep -E '^(reservoir_inflow_map|charge_ledger_residual_C)=' \ outputs/latest/summary.txthead -n 2 outputs/latest/charge_ledger.csvsummary.txt の reservoir_inflow_map は選んだ写像(source_vdf または infinity_barrier)です。charge_ledger.csv では、粒子種ごとに次を確かめます。
injected_count: box の外から入ったマクロ粒子数injected_from_remote_C: その電荷。符号は粒子の電荷と同じabsorbed_count、escaped_count、discarded_unresolved_count: 入った粒子の行き先
期待値が 1 より十分小さいと、端数がたまるまで最初のバッチの injected_count は 0 になり得ます。標本が足りないときは、
物理的な束を変える前に重みか目標の標本数を見直します。バッチ幅を変えると場を更新する間隔も変わるので、
バッチ幅を決めるに従って比べます。
5. 適用範囲
Section titled “5. 適用範囲”- 境界流入は、box の外の条件を境界上の粒子に置き換える局所的なモデルです。box の外の軌道、途中の電場、 折り返し位置、飛行時間、空間電荷、外部シースは解きません。
- 一様な外部電場には無限遠の電位が決まりません。
infinity_barrierと併用する場合は、phi_infty_vを外部プラズマの 基準として決め、その意味を別に確かめます。
全キーと制約は入力パラメータにあります。