Skip to content

필사 모드: ブラウザのタブでエンジンを組み立てて回す — Combustion Lab を読み解く

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.

はじめに — ブラウザの中でエンジンが回る

Combustion Lab(combustionlab.net)が最近 Hacker News で話題になっています。インストールもログインもなしに、ブラウザのタブ一つで内燃機関を組み立てて回せるシミュレータです。ページ上部はこう名乗っています。「CRANK-ANGLE-RESOLVED ENGINE DYNAMICS · v2.0」。クランク角の単位でエンジン挙動を計算する、という意味です。

まず組み立てから見ましょう。配列を直列(Inline)・V・ボクサー(Boxer)・対向(Opposed)から選び、気筒数・ボア・ストローク・圧縮比を決めます。点火方式はスパーク(オットー)か圧縮着火(ディーゼル)で、そこに混合比 λ と点火進角を加えます。吸気は自然吸気・ターボ・スーパーチャージャーで、ブースト、スプール RPM、インタークーラーまであります。バルブトレインはカムのデュレーション、吸気閉じ・排気開き、レッドラインを設定します。

エンジンを組んだら、あとは回します。RPM・スロットル・アニメーション速度をリアルタイムに動かしながら、出力(kW/HP)とトルク(N·m/LB-FT)を読みます。結果は 5 つのモードで見ます。DYNO(ダイノ曲線)、P–V(圧力-体積線図)、P–θ(圧力-クランク角)、ENERGY(エネルギーの流れ)、CROSS-SECTION(断面アニメーション)です。データは CSV に書き出せ、概念を解説する LEARN MODE もあります。

そして道具が自分に貼った但し書きが、むしろ誠実です。「Trends are engineering-realistic; certify nothing with it」。傾向は工学的にそれらしいが、これで何かを認証するな、というわけです。この一行が、本記事で何度も立ち返る基準点になります。

4 つの行程、1 つの閉じたループ

この道具が扱う物理は、教科書どおりの 4 行程サイクルです。吸気で空気と燃料が入り、圧縮でピストンが押し上げ、燃焼(膨張)が仕事を生み、排気で吐き出します。この 4 段階をクランク角 θ で媒介し、1 ステップずつ計算します。

P–V 線図モードが核心をよく表します。1 サイクルを圧力-体積の平面に描くと閉じたループになり、そのループが囲む面積が、そのサイクルの図示仕事になります。圧縮比を上げたり点火時期を早めたりすると、ループがどう膨らみ傾くかが目で見えます。

教科書の理想的なオットーサイクルは、角の鋭い四角形に近い形です。実際のループはその角が丸くつぶれます。燃焼が一瞬ではなく有限のクランク角の区間(Wiebe が描く区間)にわたって進み、その間ずっと壁へ熱が逃げる(Woschni)からです。この道具の値打ちは、まさにその「丸まり」をパラメータとしてつかめる点にあります。

タイミングがなぜ露出しているかも、ここで分かります。点火進角の数度、バルブ開閉の数度が、曲線全体を変えます。圧縮比・点火進角・λ をノック側へ押すと自己着火が近づき、道具は Livengood–Wu 積分でその余裕を見積もります。抽象的なサイクルが「触れば反応する」対象になる瞬間です。

単一領域モデルは CFD ではない

ここは正直になっておくべきです。Combustion Lab は単一領域(single-zone)の熱力学モデルです。シリンダー内の混合気を均一な一つの塊とみなし、各クランク角で圧力・温度を一つの値として扱い、エネルギー収支を解きます。いわゆる 0 次元(0D)モデルで、エンジン熱力学の授業の古典的な出発点です。

ページが挙げる 4 つのモデルは、その収支に差し込む経験式です。

  • Wiebe — 燃焼がクランク角に応じてどれだけ燃えたか(燃焼質量分率)を描く S 字曲線。
  • Woschni — シリンダー壁へ逃げる対流熱伝達。
  • Chen–Flynn — 摩擦損失(FMEP)。図示仕事から引いて実際のブレーキトルクになります。
  • Livengood–Wu — ノックの開始時期を見積もる積分。

この組み合わせが与えるのは、サイクル単位のエネルギー収支と、ボア・ストローク・圧縮比・ブースト・タイミングを変えたときの信頼できる傾向です。数十年かけて磨かれてきた相関式なので、答えの方向性はかなり信頼できます。

逆に捉えられないものも明確です。シリンダー内の流動(タンブルやスワール)、火炎面の形、燃料噴霧、詳細な排出ガス化学、吸排気の音響は、単一領域では表現できません。それは多領域モデルや完全な CFD の領域で、計算量が桁違いに大きく、ブラウザのタブには収まりません。だからあの「certify nothing」の但し書きが付きます。直感を養う教育の道具であって、設計を認証するものではありません。その線を自分で引くことこそが、むしろ美点です。

リアルタイム物理をブラウザで回すということ

サイトは、どの言語やフレームワークで作ったかを明かしていません(公開された GitHub も見当たりません)。ですから実装を断定せず、こういうものをブラウザでリアルタイムに回すときの一般的な形だけを押さえておきます。

クランク角で分解するとは、要するに小さな角度ステップで常微分方程式を前進積分するということです。4 行程は 1 サイクルが 720° なので、例えば 0.5° 刻みなら 1 気筒あたり 1 サイクルで 1,440 ステップが要ります。画面に見える 1 サイクルごとに、数千回の算術が回る計算です。

ここで物理ステップとレンダーループを分けるのが通例です。レンダーは requestAnimationFrame で回し、「アニメーション速度」コントロールは、物理を実時間より速くも遅くも刻めることを示唆します。固定ステップで積分すれば、同じ入力が同じ曲線を返す決定論的な実行になり、CSV の書き出しが意味を持つにはこの再現性が要ります。P–V・P–θ のグラフや断面アニメーションは、2D キャンバスで安く描けます。

WASM が効くのは、この熱い積分ループです。Rust・C++・AssemblyScript などを WebAssembly にコンパイルすれば、JS の JIT より予測しやすいスループットが得られます。とはいえ、エンジン一基をインタラクティブな速度で回す程度なら、素の JavaScript でも足りることが多いです。どちらを選んだかは確認できず、どちらも妥当な選択です。

大事なのは、この構造が与える体験です。インストール不要で、URL で共有でき、スマホでも開き、パラメータを変えた瞬間に結果が反応します。圧縮比を上げれば P–V ループが厚くなり、ノック余裕が縮むのが、その場で見えます。

おわりに — なぜこういう道具が良いのか

Combustion Lab で一番良いと感じるのは 2 点です。大学院レベルの主題であるエンジン熱力学を、タブ一つで触れるようにしたこと。そして、自分にできないことについて正直なこと。インタラクティブなシミュレータの教育的な力は、精度ではなく、パラメータと結果のあいだの即時のフィードバックループから生まれます。数字を一つ変えて曲線が動くのを見る、その瞬間に直感が付きます。

同時に、その性質は忘れないでおきましょう。これは真実ではなく傾向であり、単一領域モデルは空間的なものすべてを隠します。実際のターボを選んだりカムを削ったりするための道具ではなく、なぜその選択が曲線をそう曲げるのかを掴むための道具です。ブラウザ内のインタラクティブなシミュレータが教育手段として過小評価されている理由は、まさにこの即時性にあります。

参考資料

현재 단락 (1/26)

Combustion Lab(combustionlab.net)が最近 Hacker News で話題になっています。インストールもログインもなしに、ブラウザのタブ一つで内燃機関を組み立てて回せるシ...

작성 글자: 0원문 글자: 3,465작성 단락: 0/26