表面電荷更新の数値仕様
このページは、表面電荷の保存量、batch 末尾の更新順、浮遊導体の連立方程式、並列集約を調べるための 数値・実装リファレンスです。モデルを選ぶだけなら表面はどう帯電するかを参照してください。
保存する量と符号
Section titled “保存する量と符号”q_elem(i) は要素 の総電荷 [C] です。P0 panel の場評価時だけ、要素面積 で割って
表面電荷密度へ変換します。
マクロ粒子 が要素 へ吸収された場合の差分は
です。電子は負、正イオンは正の電荷を堆積し、吸収後の粒子は追跡から除かれます。collision に使う ordered triangle と片側 field trace の符号は同じ mesh geometry から作り、surface model は triangle の winding を変更しません。
batch 末尾の更新順
Section titled “batch 末尾の更新順”- batch 開始時の
q_elemから、粒子追跡中に固定する場を作る。 - 各粒子の最初の mesh hit による電荷差分を thread ごとに集める。
- 表面放出 source の反作用電荷を加える。
- 有効なら
neutral_returnの global な再重み付けを適用する。 - thread 間を加算し、MPI rank 間で global な電荷差分を集約する。
q_elemへ差分を一度だけ加える。- conductor object があれば、総電荷を保って等電位化する。
- 更新前後の正味差分、統計、履歴を計算する。
同じ batch 中の粒子は手順 1 の場を共有します。不完全な collision query または photo-ray query で batch が 成立しない場合は、部分的な粒子配列や放出差分を確定反映しません。
浮遊導体の連立方程式
Section titled “浮遊導体の連立方程式”surface_model="conductor" の要素は mesh_id ごとに group を作ります。要素 が group に
属するとき、未知の要素電荷 と group 電位 に対して
を課します。単位総電荷を持つ source triangle の P0 potential coefficient は
です。 は target 要素重心、 は source 要素面積です。自己項を含む解析 panel potential を
principal-value 側規約で評価し、 は non-conductor 電荷と一様外場が作る電位を
k_coulomb で割った量です。
各 group には総電荷保存も課します。
この dense square system を部分 pivot 付き Gauss 消去で解き、conductor 要素だけを置換します。object 間の
電荷と non-conductor 要素は変更しません。現行 model は要素重心 collocation と P0 triangle influence を使い、
field_boundary.mode="free" だけを受理します。
OpenMP、MPI、再開
Section titled “OpenMP、MPI、再開”particle loop は thread ごとの配列へ吸収電荷を集め、loop 後に加算します。光電子 closure に必要な放出・帰還量と
local な電荷差分は MPI 全体で集約するため、全 rank が同じ global q_elem を保持します。conductor relaxation は
その同一 state へ各 rank で決定論的に適用します。
checkpoint は確定済みの q_elem と関連 state を保存します。再開互換性と必須 file は
実行・再開するおよび入力パラメータを参照してください。
tol_rel の定義
Section titled “tol_rel の定義”conductor relaxation まで含む更新前後の差を
とすると、監視値は
です。tol_rel は output metric であり、現行実装の early-stop 条件ではありません。
実装とテスト
Section titled “実装とテスト”- particle absorption と batch commit:
bem_simulator_loop.f90 - surface model facade:
bem_surface_models.f90 - floating-conductor solver:
bem_surface_models_conductor.f90 - batch statistics:
bem_simulator_stats.f90 - model regression:
test_surface_models.f90