•YAML → config → ジオメトリ+軸格子 → 熱物性プロバイダ選択 → ガス解 → 液滴輸送(破砕評価含む)→ 結果組立・出力
参照: architecture.md:7-17
■ガス相ソルバ(気層輸送)
•関数: solve_quasi_1d_gas_flow(src/…/solvers/gas/quasi_1d_solver.py)
•処理: ジオメトリから喉部検出 → ブランチ選択(全亜音速 / チョーク / ラバル内衝撃など)→ 各格子点で面積比からMachを解き,assemble_gas_state を呼んで圧力・温度・密度・速度・Mach を算出 → GasSolution を返す。
参照: quasi_1d_solver.py
■液滴輸送(代表粒子法)
•エントリ: solve_droplet_transport(src/…/solvers/droplet/transport_solver.py)
•初期化: initialize_droplet_state で入口条件から初期 DropletState を作成(入口速度、直径、初期We 等)。
参照: src/supersonic_atomizer/solvers/droplet/updates.py::initialize_droplet_state
•各格子点の更新順(1セル進行ごと):
•dx を決定(隣接 x 差)
•スリップ速度 u_slip = u_gas – u_droplet(update_droplet_state)
•drag_model.evaluate(…) で Reynolds, Cd, 加速度 を取得(StandardSphereDragModel)
•dt = dx / max(|u_gas|, small); u_droplet += accel * dt(運動方程式の単純積分)
•更新されたスリップで再計算した We, Re を状態に記録
•破砕モデル(存在する場合)を呼ぶ(次節)
参照: src/supersonic_atomizer/solvers/droplet/updates.py::update_droplet_state と transport_solver.py
■ドラッグ相互作用(力学)
•実装: StandardSphereDragModel(src/…/drag_models.py)
•主な式:
•Reynolds: Re = rho_g * |u_slip| * d / mu
•Cd (Schiller–Naumann 型): Cd = 24/Re * (1 + 0.15 * Re^0.687)
•加速度: a = 3 * Cd * rho_g * |u_slip| * u_slip / (4 * rho_d * d)
参照: drag_models.py
■一次破砕(MVP 実装)
•実装: Weber 閾値モデル CriticalWeberBreakupModel(src/…/breakup/weber_critical.py)
•Weber の式(コード実装):
•We = rho_g * u_slip^2 * d_ref / sigma
(実関数: evaluate_weber_number)
•判定: If We > We_crit → 平均径を d_mean *= breakup_factor_mean、最大径を d_max = max(d_max * breakup_factor_max, d_mean) に更新、破砕フラグを立てる。
参照: weber_critical.py
■二次破砕 / 高度モデル(現状)
•仕様書・草案では TAB / KH‑RT / simple_tab 等が言及されているが、現行コードベースには実装が見当たりません(将来のプラグイン候補)。
参照: spec_draft.md(モデル候補記載), architecture.md(拡張方針)
破砕と輸送の統合順序(実装上)
•各ノードで「スリップ評価 → ドラッグ更新 → 液滴速度更新 → Weber/Re 評価 → 破砕モデル呼出 → 更新状態を次ステップへ渡す」流れになっています。
参照: breakup-integration-sequence.md と src/…/transport_solver.py / updates.py
■出力・検証
•全軸履歴(x, gas 配列, droplet 配列, weber, breakup_flags など)を DropletSolution / GasSolution にまとめ、CSV/JSON/図を作成。検証ルール(breakup-trigger case 等)で差分チェック。
参照: architecture.md, README.md, breakup-integration-sequence.md
■まとめ(実務的なポイント)
•「一次破砕(Weber閾値)+代表粒子輸送+標準球ドラッグ」は実装済み。
•「二次破砕(TAB/KH-RT 等)」は仕様に挙がっているが未実装で、拡張ポイントとしてプラグイン可能な設計になっている。
•詳細実装箇所は次のファイルを参照してください(すぐ開けます):
•weber_critical.py(一次破砕式・ロジック)
•updates.py(液滴の局所更新)
•drag_models.py(ドラッグ・式)
•transport_solver.py(全行程マーチング)
•quasi_1d_solver.py(気相ソルバ)
•breakup-integration-sequence.md(ノード内順序の手順)
■付録
■付録:液相から気層へのフィードバック
- 液滴質量流が気相質量流の1%未満なら 一方向仮定は妥):MVPはこれ
- 1–10% は慎重に検討
- 10%以上なら二方向カップリングが必要。


コメント