English · 简体中文 · Français · Русский · 日本語 · 한국어 · Deutsch · Español · Italiano · Português
有限ガスネットワークは、いまでは CompiledModel と Simulation を通して動きます。このチェックポイントがカバーするのは、定容チャンバー、圧力/温度が固定されたリザーバー、制御されたオリフィス、壁面熱リンクです。可動気筒の拡張は、ガス交換をクランク依存の容積と圧力仕事へ接続します。以下に述べる定容ソルバーは、元の挙動を保ちます。
var model = CompiledModel.Compile(new ModelDefinition
{
StepNanoseconds = 100_000,
Nodes = [NodeDefinition.GasVolume(1, 0.002, 2e6, 900)],
Components = [ComponentDefinition.GasReservoir(10, 1, 2e-5, 1e5, 300,
dischargeCoefficient: 0.9, channel: 100, opening: 0)]
});
var simulation = model.CreateSimulation();
simulation.SubmitInputs([new Scalar(100, 0.5)]);
var status = simulation.Step(100_000_000);
var values = new Scalar[model.OutputCount];
var snapshot = simulation.ReadSnapshot(values);GasVolume は、容積を m³、圧力を Pa、温度を K、任意で R を J/(kg K)、ガンマを取ります。ガスノードは、容積を Storage、温度を Initial、圧力を Position、組成を Gas に格納します。リットル、bar、平方ミリメートルは明示的な量として受け付け、フィンガープリント化の前に正規化します。
GasOrifice は二つのガスノード ID を結びます。GasReservoir は一つのノードを固定境界へ結びます。NodeB == 0 がそのリザーバーを識別します。GasHeatLink はガスノードと熱ノードを、コンダクタンス W/K で結びます。接続されたガスノードは、まったく同じ R とガンマを共有しなければなりません。開度は [0,1] の無次元分数で、初期入力、直接入力、スケジュールされた入力について検証されます。入力チャンネル ID がゼロなら、初期開度は固定されたままです。ガスだけのネットワークに、ダミーローターは不要です。上限はノード 32、コンポーネント 64、スカラー状態 64 のままです。ガス容積はそれぞれ状態を二つ消費します。
各ガスノードは、圧力、温度、質量、内部エネルギーを公開します。絞りは符号付きの A から B への質量流量を、熱リンクは符号付きのガスから壁への熱流量を公開します。リザーバーエンタルピーは内向きを正とします。エネルギー残差は source_work + reservoir_enthalpy - heat_rejected - stored_energy_change です。質量残差は sum(mass - initial_mass) - cumulative_reservoir_mass です。浮動小数点の残差は、厳密なゼロではなく物理的な尺度に対して評価します。
ガスソルバーは、Heun 予測子/修正子による陽的サブステップを使います。ティック開始時の質量/エネルギーの最大相対変化率が、一様なサブステップ数を選び、サブステップあたり 2% の変化を目標にします。サブステップが 4096 を超える、非物理的な状態、非有限値、または修正後の質量/エネルギー変化が 25% を超える場合、バッチ全体を拒否します。StepNanoseconds を減らして再コンパイルするか、流路面積、容積、コンダクタンス、初期条件を調べてください。
ノズル則は、等圧で導関数が特異です。各評価は、輸送エネルギーを接続された対の等圧量までに制限し、質量と上流エンタルピーを一緒にスケールします。有限体積では、このエネルギーは abs(pA-pB) / ((gammaA-1)/VA + (gammaB-1)/VB) です。固定リザーバーは B の項を省きます。これにより、孤立した対の圧力交差振動を防ぎつつ、対の台帳を保ちます。リミッタは平衡付近の積分を変えます。2 次精度が主張されるのは、テストの中の、滑らかで制限されないチョーク流の細分化事例だけです。
壁温度は、ガスのサブステップの間、区間開始時の値のままです。蓄積された壁面熱は、その後、既存の熱求解に入ります。この結合は外側ティックについて 1 次です。大きな刻みの安定性や保存だけでは、精度は確立されません。壁のテストは、有限時間の温度を解析的な二容量解と比較します。この手法は、以前提案された対ごとの陰的ソルバーではなく、その提案を検証するものでもありません。
質量、エネルギー、リザーバー合計、補償台帳の補正はシミュレーション状態に属し、コピー、ロールバック、分岐、ハッシュに含まれます。成功したステッピングと、呼び出し側バッファへのスナップショットは、マネージドメモリを割り当てません。失敗したスケジュール済みバッチは、それ以前の成功したティックの後の失敗を含め、先行するすべてのティックと入力を復元します。入力更新と終端のスケジュール済みイベントも、非有限なガス観測量を拒否します。
ガスノードを持つモデルは、ソルバーフィンガープリントタグ 4 を加えます。既存の線形/気筒モデルのフィンガープリントと状態ハッシュは、以前の構成を保ちます。サンプルパラメーターは unverified のままです。
ガスネットワークのラボラトリーは、JSON、CLI、MCP、移植可能なリプレイの共有例です。二つのガスチャンバー、制御された内部絞り、制御されたリザーバー絞り、壁面熱リンクを含みます。そのイベントには、レポート境界と表示境界の間のティックが含まれます。すべてのレポート境界を、デコードしたアセットリプレイと比較します。パラメーターは合成値のままで、unverified です。
power.model.v1 は、次の明示的な定義を加えます。
| 定義 | JSON フィールドと単位 |
|---|---|
| ガスノード | domain: "gas"。storage: m3 または l。initial: k。position: pa または bar。gas: j_kg_k の gas_constant と gamma > 1 |
| ガスオリフィス | kind: "gas_orifice"。node_a/node_b。initial_input: [0, 1] の分数。パラメーター: m2 または mm2 の area と discharge_coefficient |
| リザーバーオリフィス | node_b が無い、またはゼロのガスオリフィス。さらに pa または bar の reservoir_pressure と k の reservoir_temperature が必要 |
| ガス壁面リンク | kind: "gas_heat_link"。node_a はガス、node_b は熱。パラメーター: w_k の conductance |
input_channel が無い、またはゼロなら、明示された初期開度は固定されたままです。二容積の絞りに、リザーバーパラメーターは使えません。組成が必要なのはガスノードだけです。新しい検査フィールドは mass_flow、heat_flow、reservoir_enthalpy、mass_residual です。既存のガス状態とエネルギーの検査フィールドも使えます。
CompiledModel.ValidateInput は、状態を変えずに、チャンネルと値の静的な制約を検査します。実験の検証と移植可能アセットの作成は、後のイベントを含むすべてのスケジュールされた開度にこれを使います。実行時の投入とステッピングは、状態に依存する追加の観測量検査を行い、完全なロールバックを保ちます。
power.asset.v3 以降は、ガス組成、面積、流量係数、リザーバー圧力を、有界な索引付き拡張レコードで保持します。壁面コンダクタンス、リザーバー温度、初期開度、入力チャンネル ID は、基底コンポーネントフィールドを使います。v1/v2 リーダーは元のモデル集合についてサポートされたままで、ガス定義は拒否します。変更前の本物のフィクスチャが、後方互換性を検証します。アセット形式を参照してください。
MCP 能力バージョン 0.8.0 は、ガス領域、コンポーネント、忠実度、開度の境界、有界なソルバー制限を告知します。get_example_model は gas-network を受け付けます。ビルドは GasNetwork.powerasset をエクスポートします。Studio は、模式的な容器、リザーバーマーカー、絞り/熱の経路を、既存の入力と出力チャンネルとともに加えます。新しいインポートと Play Mode のテストは、実際の Unity エディター実行を必要とし、.NET のエビデンスには含まれません。
9 つのコンパイル済みモデル群と 6 つのガス原始素群は、両方の Core 対象に対して実行され続けます。移植可能テストはさらに、気筒/ガス/熱が混在するモデル、非 SI の量、既定でない組成、拡張の破損、欠落/重複レコード、v1/v2 互換性、スケジュールされた境界、キャンセル、イベントカーソルのロールバックをカバーします。JSON/Core の等価性と実際の MCP リプレイが、統合境界をカバーします。逐次検証の結果は検証記録を参照してください。
これらの検査で Standard アセンブリは .NET 10 上で動きます。これは Unity エディターまたは IL2CPP のエビデンスではありません。タイミング付き絞りも予混合追跡もないモデルでは、定容だけのソルバー方程式、積分限界、フィンガープリント構成は変わりません。可動チャンバーまたはタイミング付き絞りを持つモデルは、MOVING_CYLINDER.ja.md と VALVE_TIMING.ja.md に文書化された、別バージョンの分割連成を使います。
任意の予混合燃焼は、気体物性が一定のまま、燃料、新鮮空気、生成物を輸送します。詳細な化学種の熱化学、キャリブレーション済みの車両サンプル、完全なエンジン/トランスミッション/制御のマイルストーンは、未解決のままです。