Skip to content
cfd-lab:~/ja/posts/2026-08-06-oblique-shock…● online

この記事は著者が韓国語で書いた原文の翻訳です。 原文(한국어)を読む

NOTE #124DAY THU 유체역학DATE 2026.08.06UPDATED 2026.10.19READ 6 min read#Gas-Dynamics#Oblique-Shock#Supersonic-Inlet#Stagnation-Pressure#Flow-Phenomena

衝撃波は1枚より4枚 — 超音速インレットの斜め衝撃波列

減速を弱い斜め衝撃波に分けるとエントロピー増加は三乗で減ります。終端の垂直衝撃波はそれでも残ります。

1944年のゲッティンゲンで、Oswatitsch はラムジェットのインレットを抱えていました。Mach 3 の流れを一度に立てると、圧力の 3 分の 2 が消えました。彼が選んだのは圧縮を強くすることではなく、斜面を何枚かにして折れ角を分けることでした。

M1 のスライダーを上げると θ–β 曲線の膝が右へ押し出され、折れ角 θ を最大角の向こうへ押すと、付いていた衝撃波が先端の前へ落ちます。Weak と Strong のボタンは、同じ θ に対する二つの波角を行き来します。

drag theta and watch the amber Vn arrow grow while the slate Vt arrow never changes — that is why p02/p01 falls. push theta past the amber thetamax line and the shock detaches. then drag M1: the whole theta-beta knee slides right, so a faster inlet can turn the flow harder.

M1 が速いほど、より大きく折れます。θ が膝を超えた瞬間に p02/p01p_{02}/p_{01} が崩れ、接線の矢印の長さは衝撃波の前後で同じままです。削られるのは法線成分だけです。

衝撃波は何を奪っていくのか

衝撃波を通っても質量・運動量・エネルギーは残ります。淀み温度 T0T_0 もそのままです。消えるのは淀み圧力 p0p_0 一つです。

p02p01=exp⁡ ⁣(−ΔsR)\frac{p_{02}}{p_{01}} = \exp\!\left(-\frac{\Delta s}{R}\right)

Δs\Delta s は増えたエントロピー、RR は気体定数です。エントロピーが増えた分だけ全圧が削られます。

インレットがエンジンに渡せる仕事の上限が全圧です。淀み圧力が減ると、ノズルの膨張比も一緒に死にます。その膨張がスロートに掛かる条件は、スロートの後ろで広げなければならないノズル の問題です。インレットの成績は回復率 πd=p0e/p0∞\pi_d = p_{0e}/p_{0\infty} 一つに置きます。

Mach 3 の垂直衝撃波一つで、この値は 0.3283 です。全圧の 67% が熱へ散ります。

斜めに当てると法線成分だけが残る

衝撃波を流れに対して斜めに立てると、面に平行な速度はそのまま通ります。圧力勾配が面に垂直にしか立たないからです。斜め衝撃波は、法線成分だけを受ける垂直衝撃波です。波角 β\beta が決まると、有効 Mach 数は

M1n=M1sin⁡βM_{1n} = M_1 \sin\beta

です。β\beta が小さいほど M1nM_{1n} は 1 に近づきます。Mach 3 でも β=25.6°\beta = 25.6° なら、衝撃波が感じるのは Mach 1.30 です。

折れ角 θ\theta と波角 β\beta は一つの式で結ばれます。

tan⁡θ=2cot⁡β M12sin⁡2β−1M12(γ+cos⁡2β)+2\tan\theta = 2\cot\beta \, \frac{M_1^2 \sin^2\beta - 1}{M_1^2 (\gamma + \cos 2\beta) + 2}

γ\gamma は比熱比です。空気は 1.4 です。この式が、後ろのランプ計算を全部決めます。

θ–β–M 一つに答えが二つ#

M1M_1 と θ\theta を与えて β\beta を解くと、根は二つです。波角が小さい方が弱い解、大きい方が強い解です。弱い解の後ろはたいてい超音速のままで、強い解の後ろは亜音速になります。後ろの圧力が特別に高くなければ、くさびについた衝撃波は弱い側です。先の Strong ボタンが、そのもう一つの根です。

θ\theta を上げていくと根が消えます。Mach ごとに最大折れ角 θmax⁡\theta_{\max} があります。

M1M_11.52.03.05.0
θmax⁡\theta_{\max}12.1°23.0°34.1°41.1°

θ>θmax⁡\theta > \theta_{\max} なら、衝撃波は物体に付いていられず、離脱衝撃波になります。先端の前は事実上の垂直衝撃波で、回復率はその場で落ちます。

損失は三乗で減る

弱い衝撃波のエントロピー増加は M1n−1M_{1n}-1 に比例しません。三乗です。

ΔsR≃2γ3(γ+1)2(M1n2−1)3\frac{\Delta s}{R} \simeq \frac{2\gamma}{3(\gamma+1)^2}\left(M_{1n}^2 - 1\right)^3

γ=1.4\gamma = 1.4 で係数は 0.162 です。M1n2−1M_{1n}^2 - 1 が半分なら、損失は 8 分の 1 です。

Mach 3 を一度に立てるとき、衝撃波が引き受ける Mn2−1M_n^2-1 は 8 です。四つに分けると各片の損失は三乗で小さくなり、枚数を掛けても合計は元より小さくなります。M1n=1.30M_{1n} = 1.30 の一回の全圧損失は 2.1% です。同じ仕事を M1n=1.15M_{1n} = 1.15 の二回に分けると、それぞれ 0.33%、合わせても 0.7% に届きません。

Mach 3インレットを刻んでみます#

8° のランプを一枚ずつ増やし、最後に垂直衝撃波を立てた構成です。各ランプは、前のランプが残した局所 Mach で解き直します。

import math
 
GAMMA = 1.4
 
def stagnation_ratio(mn):
    """垂直Mach数 mn を受ける衝撃波の全圧比 p02/p01"""
    g = GAMMA
    a = ((g + 1) * mn**2 / 2) / (1 + (g - 1) * mn**2 / 2)
    b = (g + 1) / (2 * g * mn**2 - (g - 1))
    return a ** (g / (g - 1)) * b ** (1 / (g - 1))
 
def downstream_normal_mach(mn):
    g = GAMMA
    return math.sqrt((1 + (g - 1) / 2 * mn**2) / (g * mn**2 - (g - 1) / 2))
 
def deflection(mach, beta):
    """与えられた波角 beta(rad)が作る曲がり角 theta(rad)"""
    g = GAMMA
    num = mach**2 * math.sin(beta) ** 2 - 1
    den = mach**2 * (g + math.cos(2 * beta)) + 2
    return math.atan(2 / math.tan(beta) * num / den)
 
def wave_angle_weak(mach, theta):
    """theta を作る弱い解 beta。曲げられなければ None"""
    lo, hi = math.asin(1 / mach), math.pi / 2
    grid = [lo + (hi - lo) * i / 4000 for i in range(4001)]
    peak = max(grid, key=lambda b: deflection(mach, b))
    if theta > deflection(mach, peak):
        return None
    a, b = lo, peak
    for _ in range(80):
        mid = 0.5 * (a + b)
        if deflection(mach, mid) < theta:
            a = mid
        else:
            b = mid
    return 0.5 * (a + b)
 
def inlet_recovery(mach_inf, n_ramps, ramp_deg):
    """ランプ n 枚 + 終端垂直衝撃波を通った後の全圧回復率"""
    theta = math.radians(ramp_deg)
    total, mach = 1.0, mach_inf
    for _ in range(n_ramps):
        beta = wave_angle_weak(mach, theta)
        if beta is None:
            break
        mn = mach * math.sin(beta)
        total *= stagnation_ratio(mn)
        mach = downstream_normal_mach(mn) / math.sin(beta - theta)
    return total * stagnation_ratio(mach)
 
for n in range(5):
    print(f"ランプ {n}枚: 回復率 {inlet_recovery(3.0, n, 8.0):.4f}")

出力はこうです。

ランプ 0枚: 回復率 0.3283
ランプ 1枚: 回復率 0.4497
ランプ 2枚: 回復率 0.5808
ランプ 3枚: 回復率 0.7101
ランプ 4枚: 回復率 0.8235

ランプ枚数、一枚あたりの折れ角、一様流 Mach を変えると、回復率の棒は上の表にない組合せで計算し直されます。終端衝撃波のトグルを切ると、最後に削られていた分が棒から抜けます。

keep M inf = 3.00 and delta = 8 deg, then drag N from 0 to 4 and watch the bottom number climb 0.3283 → 0.8235 while the red terminal shock bar gets visibly thinner. now push delta up: each ramp bites harder, the chain runs out of Mach, and it turns red.

Mach 3、8°、ランプ 4 枚で棒は 0.82 の近くに立ちます。折れ角を 14° まで押すと、後ろのランプが赤く変わります。流れがすでに遅くなり、その角の弱い解がないという印です。

回復率をエントロピーに戻すと、2.5 倍は違って見えます。Δs/R=−ln⁡πd\Delta s/R=-\ln\pi_d です。0.3283 は 1.114、0.8235 は 0.194 です。回復率は 2.51 倍なのに、エントロピー増加は 5.7 倍に減りました。指数が、小さい損失を回復率の数字の中に隠します。

ランプごとに上がる幅は 0.121、0.131、0.129、0.113 です。四枚目も 0.11 を足します。

終端衝撃波の 13% を倍率 0.87 と読むと、その直前の回復率は 0.8235/0.87≈0.950.8235/0.87\approx 0.95 です。斜め衝撃波四枚が削った分は 0.05、最後の垂直衝撃波が削った分は 0.12 です。消せない一枚が、ランプの合計より二倍を超えて持っていきます。

Mn=1.30M_n=1.30 の 2.1% と Mn=1.15M_n=1.15 の 0.33% を三乗に当てると、Mn2−1M_n^2-1 の比 0.69 対 0.3225 を三乗した値は約 9.8 です。損失の比は 6.4 です。Mach 1.30 は、その近似が楽な区間をすでに外れています。

Mach 2.4、6° の 0.5401 と 0.9096 は、Δs/R\Delta s/R で 0.616 と 0.095 です。エントロピーは 6.5 倍減り、回復率は 1.68 倍しか上がりません。垂直衝撃波一枚が、最初からそれほど悪くなかったからです。

四つの幅がどれも 0.11 を超えるのは、この 8° が限界の折れ角から遠いという話だけではありません。Mach 3 の θmax⁡\theta_{\max} は表の 34.1° で、四枚の合計 32° はそのすぐ下です。一枚足して 40° になると、その 34.1° を超えます。

8° のランプ四枚なら回復率は 0.33 から 0.82 へ上がり、折れ角の合計は 32° です。足したのは斜面四枚です。Mach 2.4 で 6° を繰り返すと、0.5401、二枚で 0.7440、四枚で 0.9096 です。

ランプの数を無限に増やし、各折れ角を 0 へ送ると、圧縮は等エントロピーに近づきます。回復率 1 が理論上開きます。Concorde と SR-71 が曲面ランプと可動スパイクを使う場所です。

刻むのはタダではありません

ランプを二十枚立てない理由は別にあります。一枚足すたびに、衝撃波がカウルリップに届く点が後ろへ押されます。インレットが長くなると重さと摩擦が付きます。回復率の数パーセントを胴体の長さで買う取引は、たいてい負けます。

角度は、特定の Mach で衝撃波がリップに集まるように合わせます。その Mach を外れると衝撃波がリップの前や内側へずれ、スピレージ抗力が出ます。枚数が多いほど、このずれに敏感です。

各衝撃波は壁の境界層に当たって圧力を急に上げます。その干渉が剥離を起こすと、計算した回復率は意味を失います。インレットがランプの近くに抽気スロットを置く理由です。

エンジンの圧縮機は亜音速の流入を要求します。どこかで音速を越えなければならないので、終端の垂直衝撃波は消せません。ランプはその最後の衝撃波の Mach を下げるだけで、衝撃波を消しません。ランプ四枚の終端衝撃波は Mach 1.67 で起き、その一枚が 13% を持っていきます。

終端の垂直衝撃波をランプだと思った失敗

ランプを足して回復率を 1 に付けようとする選択は、終端衝撃波がまだ 0.12 を持っていく席を見ていません。その一枚は、四枚が削った 0.05 より大きいです。長さと設計点外れを追加して五枚目を立てる前に、音速を越えるその一枚をどの Mach で迎えるかが先です。

0.82 は、衝撃波が壁に付いたまま数えた数字です。境界層がその圧力上昇を持てずに剥がれると、表は終わりです。層が割れて乱流へ移る厚さ でその剥離がどの高さから始まるか、この回復率は言いません。

役に立ったらシェアしてください。