0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

マッハ数で超音速の謎を解く!— 圧縮性流れを直感的に計算する方法

0
Posted at

「マッハ0.3までは空気は水と同じように扱っていい」

この一言、流体力学を学んだ人なら誰かから聞いたことがあるはずです。でも待ってください。空気が水と同じ? しかも「マッハ0.3まで」って、たった時速370km程度。新幹線より遅いんです。

実はこの「空気を非圧縮性として扱える」という常識、マッハ数が1を超えた瞬間に完全に崩れ去ります。密度が急変し、温度が跳ね上がり、流れの性質がガラリと変わる。そして何より「衝撃波」という壁が現れる。

今日は、この「空気の常識が破綻する瞬間」を、数式・コード・実機の数値例で徹底的に解剖します。


「圧縮性」ってつまり何?—身近な例で直感をつかむ

エアダスターを逆さにして吹くと、缶が冷たくなりますよね? あれは断熱膨張という現象で、気体が急に膨張すると温度が下がるんです。

逆に、超音速の飛行機の周りでは何が起きるか。空気が急激に圧縮されて、温度が一気に上昇します。SR-71ブラックバード(マッハ3超の偵察機)の機首は、空気との摩擦で300℃以上に熱せられたといいます。

つまり圧縮性流れとは、「流れの速さによって空気の密度・温度・圧力が全部変わってしまう」 という現象。マッハ数が大きくなるほど、この変化は劇的になります。

「マッハ数とは、流れの運動エネルギーがどれだけ熱エネルギーに変換されやすいかを示す指標」

これが本質です。


数式で理解する—等エントロピー関係式

圧縮性流れの基礎となるのが等エントロピー関係式。摩擦や熱の出入りがない理想的な流れを仮定すると、以下の関係が成り立ちます。

まず、よどみ状態(流速ゼロに減速した仮想的な状態)と静状態(実際に流れている状態)の関係:

\frac{T_0}{T} = 1 + \frac{\gamma - 1}{2} M^2
\frac{P_0}{P} = \left(1 + \frac{\gamma - 1}{2} M^2\right)^{\frac{\gamma}{\gamma-1}}
\frac{\rho_0}{\rho} = \left(1 + \frac{\gamma - 1}{2} M^2\right)^{\frac{1}{\gamma-1}}

ここで:

  • $T_0, P_0, \rho_0$:よどみ温度・圧力・密度(流れを止めたときの値)
  • $T, P, \rho$:静温度・静圧・密度(実際に流れている値)
  • $M$:マッハ数(流速 / 音速)
  • $\gamma$:比熱比(空気なら1.4)

ポイント:マッハ数が大きいほど、$T_0/T$ や $P_0/P$ の比は大きくなります。つまり「流れている場所と止めた場所で、温度や圧力の差が大きくなる」ということ。

垂直衝撃波の関係式

超音速流(M > 1)になると、衝撃波という不連続面が現れます。最もシンプルな垂直衝撃波の前後関係は以下の通り:

M_2^2 = \frac{(\gamma-1)M_1^2 + 2}{2\gamma M_1^2 - (\gamma-1)}
\frac{P_2}{P_1} = 1 + \frac{2\gamma}{\gamma+1}(M_1^2 - 1)
\frac{T_2}{T_1} = \frac{(1 + \frac{\gamma-1}{2}M_1^2)(\frac{2\gamma}{\gamma+1}M_1^2 - \frac{\gamma-1}{\gamma+1})}{M_1^2}

ここで添字1が衝撃波上流(超音速)、添字2が下流(亜音速になる)。

この式の衝撃は、$M_1$が大きいほど$P_2/P_1$が爆発的に増えること。マッハ3では約10倍、マッハ5では約29倍もの圧力上昇が起きます。


コードで実装する—JavaScriptで再現

それでは、このツールのコア計算をJavaScriptで実装してみましょう。ブラウザだけで動く、完全な計算コードです。

/**
 * 圧縮性流れ計算機 コアエンジン
 * 等エントロピー関係 + 垂直衝撃波
 */
class CompressibleFlowCalc {
  constructor(gamma = 1.4) {
    this.gamma = gamma;
  }

  /**
   * 等エントロピー関係の計算
   * @param {number} M - マッハ数
   */
  isentropic(M) {
    const g = this.gamma;
    const T_ratio = 1 + (g - 1) / 2 * M * M;
    const P_ratio = Math.pow(T_ratio, g / (g - 1));
    const rho_ratio = Math.pow(T_ratio, 1 / (g - 1));
    const a_ratio = Math.sqrt(T_ratio);  // 音速比 = sqrt(T/T0)

    return {
      T_over_T0: 1 / T_ratio,           // T/T0
      P_over_P0: 1 / P_ratio,           // P/P0
      rho_over_rho0: 1 / rho_ratio,     // ρ/ρ0
      a_over_a0: 1 / a_ratio            // a/a0
    };
  }

  /**
   * 垂直衝撃波の計算(M1 > 1 必須)
   * @param {number} M1 - 衝撃波上流マッハ数
   */
  normalShock(M1) {
    if (M1 <= 1) {
      throw new Error('M1 must be greater than 1 for shock wave');
    }

    const g = this.gamma;
    const M2_sq = ((g - 1) * M1 * M1 + 2) / (2 * g * M1 * M1 - (g - 1));
    const M2 = Math.sqrt(M2_sq);

    const P_ratio = 1 + (2 * g) / (g + 1) * (M1 * M1 - 1);
    const rho_ratio = ((g + 1) * M1 * M1) / (2 + (g - 1) * M1 * M1);
    const T_ratio = P_ratio / rho_ratio;

    // 衝撃波前後の全圧比(エントロピー生成の指標)
    const P0_ratio = Math.pow(
      ((g + 1) * M1 * M1) / (2 + (g - 1) * M1 * M1), g / (g - 1)
    ) * Math.pow(
      (g + 1) / (2 * g * M1 * M1 - (g - 1)), 1 / (g - 1)
    );

    return {
      M2: M2,
      P2_over_P1: P_ratio,
      rho2_over_rho1: rho_ratio,
      T2_over_T1: T_ratio,
      P02_over_P01: P0_ratio   // 全圧損失率
    };
  }
}

// 使用例
const calc = new CompressibleFlowCalc(1.4);

// マッハ2.0での等エントロピー関係
const result = calc.isentropic(2.0);
console.log('=== マッハ2.0 等エントロピー関係 ===');
console.log(`温度比 T/T0: ${result.T_over_T0.toFixed(4)}`);
console.log(`圧力比 P/P0: ${result.P_over_P0.toFixed(4)}`);
console.log(`密度比 ρ/ρ0: ${result.rho_over_rho0.toFixed(4)}`);

// 垂直衝撃波(上流マッハ2.5)
const shock = calc.normalShock(2.5);
console.log('\n=== 垂直衝撃波 M1=2.5 ===');
console.log(`下流マッハ数 M2: ${shock.M2.toFixed(4)}`);
console.log(`圧力比 P2/P1: ${shock.P2_over_P1.toFixed(4)}`);
console.log(`温度比 T2/T1: ${shock.T2_over_T1.toFixed(4)}`);
console.log(`全圧損失率 P02/P01: ${shock.P02_over_P01.toFixed(4)}`);

このコード、たった50行足らずで「空気の非常識」を全部計算できます。実際にブラウザのコンソールで動かしてみてください。


数値例で確かめる—SR-71ブラックバードの衝撃

実際の航空機で検証してみましょう。SR-71ブラックバードはマッハ3.2で巡航しました。機首前方にできる垂直衝撃波(厳密には斜めですが、近似として)を計算します。

条件

  • 上流マッハ数 $M_1 = 3.2$
  • 比熱比 $\gamma = 1.4$
  • 上流温度 $T_1 = -56.5°C = 216.65 K$(成層圏標準温度)

計算(先ほどのコードで実行):

下流マッハ数 M2: 0.4643(亜音速に減速!)
圧力比 P2/P1: 11.78(約12倍)
温度比 T2/T1: 3.71

つまり衝撃波を通過すると:

  • 温度:216.65K × 3.71 = 803.8K(530.7℃) ← 機体が加熱される理由
  • 圧力:成層圏の静圧約8,500Pa × 11.78 = 約100,000Pa(ほぼ大気圧)

衝撃波ひとつで、極寒の成層圏が一瞬で500℃超えの高温高圧領域に変わるんです。これが「空気の常識がひっくり返る」瞬間です。


シミュレーターで遊ぶ—3つの実験

実際にマッハ数・圧縮性流れ計算機を開いて、以下の実験を試してみてください。

実験1:マッハ0.3の壁(圧縮性の目覚め)

スライダーをゆっくり動かして、温度比 $T/T_0$ の変化を見てください。

  • M=0.1 → $T/T_0 = 0.998$(ほぼ1、非圧縮性)
  • M=0.3 → $T/T_0 = 0.982$(2%の差)
  • M=0.8 → $T/T_0 = 0.886$(11%の差)

なぜか:マッハ数の2乗で効くから。M=0.3でも0.09の2乗効果が現れ始めます。「マッハ0.3までは非圧縮性」という基準は、誤差2%を許容するかどうかのラインだと実感できます。

実験2:衝撃波でM2が急降下する瞬間

垂直衝撃波のタブで、M1を1.0→1.1に動かしてみてください。

  • M1=1.0:M2=1.0(衝撃波なし)
  • M1=1.1:M2=0.9118(超音速→亜音速へ急減速)
  • M1=2.0:M2=0.5774(さらに低下)

なぜか:垂直衝撃波は超音速流を亜音速に落とす「ブレーキ」の役割。しかもM1が大きいほどM2は小さくなり、エネルギー損失が大きいことを示しています。

実験3:比熱比を変えてみる(衝撃波の強さ)

ツールの比熱比を1.4(空気)→1.2(燃焼ガス)に変更し、M1=3.0で比較:

  • γ=1.4:P2/P1 = 10.33
  • γ=1.2:P2/P1 = 20.00

なぜか:γが小さいほど、衝撃波での圧縮が激しくなる。ロケットエンジンのノズル設計では、燃焼ガスのγが1.2程度になるため、衝撃波の影響が空気より2倍近く大きくなることを覚えておきましょう。


現場でハマるポイント—実務の落とし穴

1. 「よどみ点=よどみ状態」の誤解

ツールの「よどみ温度 $T_0$」は、流れを断熱的に止めた仮想的な値です。飛行機の機首のよどみ点では確かに流速ゼロですが、エンジン内部で使う「全温」は、流れている場所での全エネルギーを示す指標。物理的に止まっているわけではありません。

現場での失敗例:エンジンインテークの設計で、よどみ温度を「吸い込んだ空気の実際の温度」と誤認し、冷却設計を過小評価するケースがあります。

2. 比熱比γの固定化

ツールではγ=1.4固定ですが、実務では流体によって大きく変わります

  • 空気(常温):1.4
  • 燃焼ガス(ロケット):1.2〜1.3
  • 蒸気:1.3
  • ヘリウム:1.66

特に危険なケース:ジェットエンジンのタービン後流でγが1.33程度に下がるのを見逃し、衝撃波の強さを過小評価すると、ディフューザー設計が破綻します。

3. 垂直衝撃波は「教科書の中だけ」

ツールで学ぶ垂直衝撃波は、最もシンプルなモデル。実際の超音速機周りでは:

  • 斜め衝撃波(流れに対して角度を持つ)
  • 剥離衝撃波(境界層との干渉)
  • 衝撃波/境界層干渉(SBLI)

が複雑に組み合わさっています。垂直衝撃波に近い現象が見られるのは、超音速風洞の始動時や、ノズル出口での背面圧力が高い場合など、限定的です。

でも基礎としては最高。このモデルを理解していれば、斜め衝撃波も「垂直成分に分解して考えれば同じ」と応用が効きます。


まとめ—今日からあなたも圧縮性マスター

  1. マッハ数は「運動エネルギーの熱変換率」—M=1を超えると空気の性質が激変する
  2. 垂直衝撃波は「超音速→亜音速のブレーキ」—M1が大きいほど圧力・温度のジャンプが激しい
  3. 実務ではγの変化と衝撃波の種類に注意—ツールは基礎理解のための強力な武器

今回の解説で使った計算は、すべてブラウザ上で動作するツールで再現できます。

マッハ数・圧縮性流れ計算機 — ブラウザで即動作、登録不要

スライダーを動かしながら、数式とコードの対応を確かめてみてください。「空気の非常識」が、手に取るようにわかるはずです。

NovaSolverでは700以上の工学シミュレーターを無料公開中 👉 一覧はこちら


P.S. 次回予告:斜め衝撃波のθ-β-M関係を、コード付きで完全解説予定。衝撃波の角度から流れの曲がり角を計算する「あのグラフ」を、ゼロから実装します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?