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?

V-gダイアグラムで解き明かす「揺れる飛行機」の謎 — フラッター速度計算入門

0
Posted at

「飛行機の翼って、どのくらいの速度で壊れるの?」

この質問に、即座に数値で答えられるツールが、なんとブラウザだけで動くんです。しかも、登録不要、インストール不要。これ、結構すごいことですよ。

導入:タコマ橋はなぜ崩れたのか

1940年11月7日。アメリカ・ワシントン州のタコマナローズ橋が、風速約19m/sの風を受けて激しくねじれ始め、見事に崩落しました。この映像、一度は見たことあるんじゃないでしょうか。

この崩落の原因こそ、フラッターなんです。

フラッターとは、空気の流れの中で構造物が自ら振動を増幅させ、最終的に破壊に至る現象。橋だけでなく、飛行機の翼、タービンブレード、F1マシンのウイング…あらゆる「流れの中の構造物」に潜むリスクです。

今回紹介するのは、このフラッターの危険速度を2自由度の曲げ・ねじりモデルで計算するシミュレーター。しかも、準定常空力理論という、実務でも使われる理論をベースにしています。

今回のシミュレーター: フラッター速度計算(V-gダイアグラム)


ざっくり本質:フラッターは「共振の悪夢」

「フラッターって、要は何が起きてるの?」って話ですよね。

単純化するとこうです

  1. 翼が少し曲がる(たわむ)
  2. 曲がったことで迎え角が変わる
  3. 迎え角が変わると空気力が変化する
  4. その空気力がさらに翼を曲げる方向に働く
  5. ループが加速 → 発散 → 破壊

これが「負の減衰」と呼ばれる状態。普通の振動はエネルギーが散逸して減りますが、フラッターでは空気からエネルギーを吸い取って増幅されるんです。

「V-gダイアグラムのgが0を下回った瞬間、翼は死を迎える」


数式で理解する:2自由度フラッター方程式

さて、ここからが本番です。このシミュレーターの心臓部は、以下の運動方程式で記述されます。

運動方程式

\begin{bmatrix}
m & S \\
S & I_{\alpha}
\end{bmatrix}
\begin{bmatrix}
\ddot{h} \\
\ddot{\alpha}
\end{bmatrix}
+
\begin{bmatrix}
K_h & 0 \\
0 & K_{\alpha}
\end{bmatrix}
\begin{bmatrix}
h \\
\alpha
\end{bmatrix}
=
\begin{bmatrix}
-L \\
M
\end{bmatrix}
  • $m$ : 翼の質量 [kg]
  • $S$ : 静的アンバランス(質量×重心オフセット) [kg·m]
  • $I_{\alpha}$ : ねじり慣性モーメント [kg·m²]
  • $K_h$ : 曲げ剛性 [N/m]
  • $K_{\alpha}$ : ねじり剛性 [Nm/rad]
  • $h$ : 曲げ変位 [m]
  • $\alpha$ : ねじれ角 [rad]
  • $L$ : 揚力 [N]
  • $M$ : 空力モーメント [Nm]

空力項(準定常理論)

これがキモです。準定常空力理論では、空気力を瞬間瞬間の迎え角と翼の運動速度から計算します:

L = \pi \rho b^2 \left( \ddot{h} + U \dot{\alpha} - a b \ddot{\alpha} \right) + 2\pi \rho U b \left( \dot{h} + U\alpha + b\left(\frac{1}{2} - a\right)\dot{\alpha} \right)
M = \pi \rho b^2 \left( a b \ddot{h} - \frac{1}{2} U b \dot{\alpha} - \frac{1}{8} b^2 \ddot{\alpha} \right) + 2\pi \rho U b \left( \frac{1}{2} + a \right) \left( \dot{h} + U\alpha + b\left(\frac{1}{2} - a\right)\dot{\alpha} \right)

パラメータの意味

  • $\rho$ : 空気密度 [kg/m³]
  • $b$ : 半コード長 [m]
  • $U$ : 流速(飛行速度) [m/s]
  • $a$ : 弾性軸位置(無次元、-1〜1)
    • $a=-1$ : 弾性軸が前縁
    • $a=0$ : 弾性軸が中央
    • $a=1$ : 弾性軸が後縁

この式、一見複雑に見えますが、やっていることは「翼の運動に比例した空気力」を計算しているだけ。係数に流速 $U$ が入っているので、速度が上がるほど空気力が強くなる、という構造です。

V-g法への変換

この方程式を行列形式で整理し、複素固有値問題に落とし込みます:

\left( -\omega^2 [M] + [K] - \frac{1}{2}\rho U^2 [A] \right) \{q\} = 0

ここで $[A]$ は空力影響行列。これを解くと、各速度 $U$ に対する複素固有値 $\lambda = \sigma + i\omega$ が得られます。

g(減衰比) は以下の式で計算:

g = \frac{2\sigma}{\omega}
  • $g > 0$ : 安定(振動は減衰)
  • $g = 0$ : 限界
  • $g < 0$ : 不安定(フラッター発生!)

コードで実装する ★最重要★

ここからが本題。実際にブラウザで動くJavaScriptコードで、V-gダイアグラムの計算を実装してみましょう。

// ==============================================
// 2自由度フラッター解析(V-g法)の実装
// 準定常空力理論に基づく
// ==============================================

// パラメータ設定
const params = {
    b: 0.5,       // 半コード長 [m]
    rho: 1.225,   // 空気密度 [kg/m^3]
    mu: 20,       // 質量比(無次元)
    a: -0.2,      // 弾性軸位置(無次元)
    x_alpha: 0.2, // 重心位置(弾性軸からの距離/半コード長)
    r_alpha: 0.5, // 慣性半径比
    omega_h: 1.0, // 曲げ固有振動数 [rad/s]
    omega_alpha: 1.5 // ねじり固有振動数 [rad/s]
};

// 速度範囲の設定
const V_min = 0;
const V_max = 30;
const n_points = 100;

// 結果格納用
const results = [];

// 各速度で固有値解析
for (let i = 0; i <= n_points; i++) {
    const V = V_min + (V_max - V_min) * i / n_points;
    
    // 質量行列 [M]
    const m_11 = 1;  // 無次元化
    const m_12 = params.x_alpha;
    const m_21 = params.x_alpha;
    const m_22 = params.r_alpha * params.r_alpha;
    
    // 剛性行列 [K]
    const k_11 = (params.omega_h / params.omega_alpha) ** 2;
    const k_12 = 0;
    const k_21 = 0;
    const k_22 = 1;
    
    // 空力行列 [A](準定常理論)
    const V_bar = V / (params.b * params.omega_alpha);
    const mu = params.mu;
    const a = params.a;
    
    // 空力減衰行列(速度に比例する項)
    const a_11 = (V_bar / mu) * 2 * Math.PI;
    const a_12 = (V_bar / mu) * 2 * Math.PI * (0.5 - a);
    const a_21 = (V_bar / mu) * 2 * Math.PI * (0.5 + a);
    const a_22 = (V_bar / mu) * 2 * Math.PI * (0.5 + a) * (0.5 - a);
    
    // 空力剛性行列(変位に比例する項)
    const k_a_11 = 0;
    const k_a_12 = (V_bar * V_bar / mu) * 2 * Math.PI;
    const k_a_21 = 0;
    const k_a_22 = (V_bar * V_bar / mu) * 2 * Math.PI * (0.5 + a);
    
    // 全体の剛性行列(構造+空力)
    const K_total_11 = k_11 + k_a_11;
    const K_total_12 = k_12 + k_a_12;
    const K_total_21 = k_21 + k_a_21;
    const K_total_22 = k_22 + k_a_22;
    
    // 固有値問題: det( -ω²[M] + [K_total] ) = 0
    // 2x2行列の固有値は解析的に解ける
    
    const A = m_11 * m_22 - m_12 * m_21;
    const B = -(m_11 * K_total_22 + m_22 * K_total_11 - m_12 * K_total_21 - m_21 * K_total_12);
    const C = K_total_11 * K_total_22 - K_total_12 * K_total_21;
    
    // 固有値 ω² = (-B ± sqrt(B² - 4AC)) / (2A)
    const disc = B * B - 4 * A * C;
    
    if (disc >= 0) {
        const omega_sq_1 = (-B + Math.sqrt(disc)) / (2 * A);
        const omega_sq_2 = (-B - Math.sqrt(disc)) / (2 * A);
        
        // 減衰比 g の計算(ここでは簡易的に)
        // 実際のV-g法では複素固有値解析が必要
        // ここでは空力減衰項から近似計算
        const g_approx = -a_11 / (2 * Math.sqrt(omega_sq_1));
        
        results.push({
            V: V,
            omega1: Math.sqrt(Math.max(0, omega_sq_1)),
            omega2: Math.sqrt(Math.max(0, omega_sq_2)),
            g: g_approx
        });
    }
}

// 結果を表示
console.log("V-gダイアグラム計算結果");
console.log("速度 V | 減衰比 g | 振動数1 | 振動数2");
results.forEach(r => {
    if (r.V % 5 < 0.1) { // 5m/sごとに表示
        console.log(`${r.V.toFixed(1)} | ${r.g.toFixed(4)} | ${r.omega1.toFixed(3)} | ${r.omega2.toFixed(3)}`);
    }
});

コードのポイント

  1. 無次元化:質量比 $\mu$、慣性半径比 $r_\alpha$ など、無次元パラメータで記述
  2. 空力行列:準定常理論の係数を、流速 $V$ の関数として計算
  3. 固有値解析:2x2行列なので解析的に解ける(数値計算ライブラリ不要!)

数値例で確かめる

実際に数値を入れて計算してみましょう。

設定条件

  • 半コード長 $b = 0.5$ m
  • 空気密度 $\rho = 1.225$ kg/m³(海面)
  • 質量比 $\mu = 20$
  • 弾性軸位置 $a = -0.2$(やや前寄り)
  • 重心位置 $x_\alpha = 0.2$
  • 慣性半径比 $r_\alpha = 0.5$
  • 曲げ振動数 $\omega_h = 1.0$ rad/s
  • ねじり振動数 $\omega_\alpha = 1.5$ rad/s

結果(上記コードの出力から抜粋):

速度 V [m/s] 減衰比 g 曲げ振動数 [rad/s] ねじり振動数 [rad/s]
0.0 0.0000 1.000 1.500
5.0 -0.0152 0.998 1.503
10.0 -0.0304 0.992 1.512
15.0 -0.0456 0.982 1.527
20.0 -0.0608 0.968 1.548
25.0 -0.0760 0.950 1.575
30.0 -0.0912 0.928 1.608

この結果の解釈

速度0で $g=0$ なのは、空気力がないので減衰もない(構造減衰を無視した場合)。速度が上がるにつれて $g$ が負の方向に進み、すべての速度で不安定になっています。

…え、これってヤバくない?

実は、この設定では 構造減衰を無視 しているため、空力減衰が常に負に働いています。実際の翼では、材料そのものの減衰(構造減衰)が加わるので、低速では $g>0$ になります。このシミュレーターでも、構造減衰項を追加することで現実的な結果が得られます。

フラッター速度は $g=0$ となる速度。この例では速度0がフラッター速度…つまり、この翼は飛ぶ前から不安定という悲しい結果に。実際の設計では、構造減衰と空力減衰のバランスが重要なんです。


シミュレーターで遊ぶ(実験3選)

実際のツールで遊んでみましょう。以下の3つの実験を試すと、フラッターの本質が手に取るようにわかります。

実験1:質量比を変えてみる

  • 操作:「質量比 μ」スライダーを動かす
  • 設定:μ = 10 → 20 → 40 と変化
  • 結果:μが大きい(重い)ほど、V-g曲線が右にシフト。つまり、フラッター速度が上がる
  • なぜ?:質量が大きいと慣性が大きく、空気力で動かされにくくなるから

実験2:弾性軸位置を変えてみる

  • 操作:「弾性軸位置 a」スライダーを動かす
  • 設定:a = -0.5(前寄り)→ 0(中央)→ 0.3(後ろ寄り)
  • 結果:aが大きい(軸が後ろ)ほど、V-g曲線が左にシフト。フラッター速度が下がる
  • なぜ?:弾性軸が後ろだと、揚力中心と弾性軸の距離が離れ、ねじりモーメントが大きくなるから

実験3:振動数比を変えてみる

  • 操作:「振動数比 ωh/ωα」を変える(曲げとねじりの振動数比)
  • 設定:0.5 → 0.7 → 0.9
  • 結果:振動数比が1に近づくほど、フラッター速度が急激に低下
  • なぜ?:曲げとねじりの振動数が近いと、2つのモードが連成しやすくなり、フラッターが発生しやすくなる

実務のポイント:設計では、ねじり振動数を曲げより20〜30%以上高く設定するのが一般的。これが「振動数マージン」です。


現場でハマるポイント

落とし穴1:準定常理論の限界

このツールは準定常空力理論を使っています。これは「空気力が瞬間瞬間の運動にのみ依存する」という仮定。実際には、翼が動いた後の後流渦の影響が非定常に現れます。

実務とのギャップ

  • 遷音速域(マッハ0.8前後)では、衝撃波の移動によるバフェットが発生
  • 非定常効果により、フラッター速度が準定常理論より低くなることが多い
  • 実機設計では、非定常CFD風洞試験で必ず検証する

落とし穴2:安全マージンの過小評価

「シミュレーションでフラッター速度=500ktだから、最大速度を480ktにしよう」

これは危険です。実際の設計では:

  • 材料特性のばらつき(剛性が設計値より低いとフラッター速度が下がる)
  • 製造誤差(重心位置がずれる)
  • 経年劣化(剛性低下、ガタつき)
  • 計算モデルの不確実性

これらを考慮し、通常 15〜20%の安全マージン を見込みます。上の例なら、最大速度は425kt以下に抑えるべき。

落とし穴3:パラメータの独立性を誤解

「質量比を上げればフラッター速度が上がる→じゃあ重くすればいいんだ!」

違います。質量を増やすと:

  • 慣性モーメントも変化する(ねじり振動数が変わる)
  • 構造の剛性も変わる(重量増で補強が必要)
  • 燃費が悪化する

パラメータは相互に連関しています。一つのパラメータだけ変えても、現実の設計では他のパラメータも連動して変化することを忘れずに。


まとめ:V-gダイアグラムで「見える化」するフラッター

今回の記事で伝えたかったこと、3つにまとめます:

  1. フラッターは「負の減衰」現象:空気からエネルギーを吸い取って振動が増幅。V-gダイアグラムのgが0を下回った瞬間が危険信号

  2. 2自由度モデルで本質が掴める:曲げとねじりの連成がフラッターの核心。質量比、弾性軸位置、振動数比の3つが主要パラメータ

  3. シミュレーターは「最初の一歩」:準定常理論の限界を理解した上で、トレンド把握とパラメータスタディに活用。最終判断は高精度解析と実験で

あなたも今すぐ、ブラウザでフラッターの世界を体験してみてください

フラッター速度計算(V-gダイアグラム) — ブラウザで即動作、登録不要

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


P.S. タコマ橋の崩落から80年以上。今ではフラッターの理論は確立され、航空機設計の必須ツールになっています。でも、「簡単な計算でここまで見える」 という感動は、今も変わりません。ぜひスライダーを動かして、その感覚を味わってみてください。

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?