コンテンツにスキップ
開発版ドキュメント — このサイトはmainブランチ向けで、インストール済みリリースと異なる場合があります。変更履歴を確認してください。

計算結果の妥当性確認

正常終了しただけでは、計算結果が数値的・物理的に妥当とは限りません。次の3つを順番に確認します。

  1. 設定した計算が最後まで実行され、粒子と電荷の収支を説明できる。
  2. 時間刻みやmesh解像度を変えても、注目する量が十分に安定している。
  3. 採用した物理モデルの前提を満たし、結果から述べる結論がその適用範囲を超えていない。

各値がどのファイルにあるかは出力ファイルを調べるにまとめています。 このページでは、その値を使って計算を受理できるか判定します。

収束確認を始める前に、何をもって「結果が変わらない」とするかを決めます。

  • 比較する主要量: 表面の総電荷・電位分布、吸収・流出flux、または研究上の結論に直接使う量
  • 許容差: 主要量に許容する絶対差または相対差
  • 評価区間: 最終値、定常化後の時間平均、最大値など
  • 統計誤差の扱い: 乱数seedを変えた計算、または同じ条件のensembleから求めるばらつき

判定基準を結果を見た後で都合よく変えないことが重要です。BEACHに全ケース共通の収束許容差はないため、 計算の目的に応じて基準を明示します。

1. 実行が完了したことを確認する

Section titled “1. 実行が完了したことを確認する”
Terminal window
beachx inspect outputs/latest

少なくとも次を確認します。

確認先判定
processの終了code0
summary.txtbatches == sim.batch_count
charges.csv最終的な要素電荷が保存されている
必要な履歴設定したstrideで欠落なく保存されている
restartした計算mesh fingerprint が一致し、再開前後の設定変更を記録している

ここで確認できるのは、指定した計算が完了したことだけです。物理量の収束は以降で確認します。

2. 粒子数と電荷の収支を確認する

Section titled “2. 粒子数と電荷の収支を確認する”

summary.txtの粒子数を、設定したsourceと境界条件から説明できるか確認します。

項目見方
absorbed表面に到達して吸収された粒子
escaped_boundarybox境界またはouter modelから流出した粒子
survived_max_stepsim.max_stepまでに吸収・流出が確定しなかった粒子

survived_max_step は物理的な吸収・境界脱出が未確定の粒子です。集計上は escaped の内訳に含まれるため、 物理的な流出量には escaped_boundary を使います。未解決量が結論に影響するなら、 sim.max_stepsim.dt、boxの大きさを見直し、十分に小さくなることを確認します。

次にcharge_ledger.csvsummary.txtの電荷収支を確認します。

  • charge_ledger_residual_C: 注入、放出、表面吸収、無限遠への流出を含む保存残差
  • charge_ledger_discarded_unresolved_abs_C: 粒子種別間で相殺しない未解決電荷の絶対値和

保存残差が小さくても、未解決電荷が大きければ計算を受理できません。残差と未解決量は必ず別々に評価します。

3. 時間発展と統計的なばらつきを確認する

Section titled “3. 時間発展と統計的なばらつきを確認する”

charge_history.csvと、必要ならpotential_history.csvを使い、定常化したように見えるかを確認します。 最終点だけでなく、評価区間について次を見ます。

  • 系統的な増加・減少が残っていないか
  • batchごとの振動や突発的な変化がないか
  • 時間平均に対するばらつきが、先に決めた許容差より小さいか
  • sim.batch_countを増やしても平均値や結論が変わらないか

last_rel_changesim.tol_relは監視用です。現行実装では早期停止条件ではなく、 last_rel_change < tol_relだけで定常状態とは判定しません。

Monte Carloノイズと時間離散化の影響は分けて確認します。

変更するもの主に確認できる影響
sim.rng_seed乱数に起因するばらつき
物理的な供給量を保ってマクロ粒子数・重みを変更Monte Carloノイズ
sim.batch_count計算時間が十分か
sim.batch_durationまたはsim.batch_duration_stepbatch末尾の表面電荷更新の安定性

粒子数と重みの変更はケース設計に従います。 batch_duration は基準値の 0.5 倍と 2 倍を目安に比較し、batch 数を調整して同じ物理時刻まで計算します。詳しい考え方は batch_durationの安定性と定常値にまとめています。

4. 数値解像度への依存性を確認する

Section titled “4. 数値解像度への依存性を確認する”

基準ケースを複製し、原則として一度に1つの設定だけを変えます。各ケースで同じ主要量を比較し、 変更による差が先に決めた許容差より小さくなることを確認します。

収束軸比較例確認する誤差
粒子時間刻みsim.dt を 1/2、sim.max_step を 2 倍にし、batch_duration は固定軌道、衝突位置、吸収・流出量
粒子追跡長sim.max_stepを増やす未解決粒子による打切り
表面mesh三角形を細分化する電荷・電位の空間離散化
場ソルバ小規模ケースでDirectと比較するTreecode/FMM近似
有限周期画像field_periodic_image_layersを増やす画像和の打切り
outer modelgrid点数や表面samplingを増やす外部profileとgeometry sampling

meshを固定したまま経路積分や画像層だけを収束させても、mesh離散化誤差まで評価したことにはなりません。 どの収束軸を確認し、どれを未評価のまま残したかを区別します。

5. 選んだ物理モデルの診断を確認する

Section titled “5. 選んだ物理モデルの診断を確認する”

共通の収束確認に加え、使用したモデルに対応する診断を確認します。

構成追加で確認するもの
有限画像のperiodic2field_periodic_image_layers依存性。有限画像の結果を無限周期へ外挿しない
cached_kneq0cache fingerprint、cold/warm結果の一致、zero mode、Gauss residual
infinity_barrierreservoir面の平均電位、画像層依存性、面内電位ばらつきの警告
potential_barrieropen面の通過点電位とreservoir.phi_infty、法線運動エネルギーによる反射・流出判定
光電子放出・帰還・流出の電荷収支、ray samplingと時間刻みへの収束
matching_plane_quasistatic共通: 固定点残差と反復回数、PEのoutward = return + escape、緩和率・matching高度依存性。table: response-grid依存性。online: branch policy、root solve、moment reduction

各診断の定義と適用範囲は、有限画像構成粒子のescapeとreturnにあります。外部シース連成の model 選択と適用限界は matching-plane 準定常連成、table 生成、固定点、高度 sweep は matching-plane 数値・応答表リファレンスを参照してください。

6. 物理的な結論の範囲を確認する

Section titled “6. 物理的な結論の範囲を確認する”

最後に、数値的に安定した結果が目的の物理的主張を支えているかを確認します。

  • 比較するケース間で、意図したモデル以外に変更した入力を列挙する。
  • 境界条件、粒子source、表面モデル、場の評価方法を明記する。
  • 有限boxの結果を無限遠、有限時間の結果を定常状態、有限画像和を無限周期として扱わない。
  • 数値誤差、Monte Carloのばらつき、モデルの適用限界を結論の有効桁や誤差幅に反映する。

最低限、使用した設定ファイル、出力directory、主要量と判定基準、各収束ケースとの差を残します。 コード自体のリリース判定に使う小規模fixtureとHPC検証は、ユーザーケースの妥当性確認とは別に 物理リリースの検証で扱います。