1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

翼にき裂があってもすぐには壊れない理由。Paris則で疲労き裂の進展寿命を見積もる

1
Posted at

みなさん、こんにちは。工学物理ブロガーのNovaです。

突然ですが、「飛行機の翼にヒビが入ったら、即座に墜落する」 — これ、本当だと思いますか?

実は、違うんです。航空機の構造部品には、小さなき裂があっても「すぐには壊れない」ように設計されています。でも、繰り返し荷重がかかり続けると、そのき裂はじわじわと成長し、ある日突然、パキッと破壊に至る。

この「き裂がどれだけのペースで伸びるか」を予測する方程式、それが Paris則 です。

今回は、ブラウザでサクッと動く Paris則 き裂進展 シミュレーター を題材に、数式の意味から実装、現場での落とし穴まで、コードを交えてガッツリ解説していきます。


ざっくり本質 — 「疲労」って何?

一言でまとめると:

「き裂は、応力が大きいほど、材料が脆いほど、速く伸びる。その伸び方をシンプルなべき乗則で近似したのがParis則」

イメージしてみてください。紙を1回折ると、折り目に「き裂」が入りますよね。でも、そのままでは破れません。でも、同じ場所を何度も折り曲げると、じわじわと切れ目が広がって、最後はパタッと千切れる。

これが 疲労破壊 です。

Paris則は、この「き裂が1回の荷重でどれだけ伸びるか」を、応力拡大係数(ΔK) という指標を使ってモデル化したもの。材料によって決まる定数Cとmで、進展速度が決まります。


数式で理解する

Paris則の核心は、たった1行の式です。

\frac{da}{dN} = C (\Delta K)^m

各項の意味

記号 意味 単位
$da/dN$ 1サイクルあたりのき裂進展量 m/cycle
$C$ 材料定数(進展しやすさ) 材料依存
$m$ 材料定数(べき指数、通常2〜4) 無次元
$\Delta K$ 応力拡大係数範囲 MPa√m

そして、$\Delta K$ は次の式で計算されます:

\Delta K = \Delta \sigma \sqrt{\pi a}

ここで:

  • $\Delta \sigma$ = 応力範囲(最大応力 - 最小応力)[MPa]
  • $a$ = き裂長さ [m]

さらに、臨界き裂長さ $a_c$ は、材料の破壊靭性値 $K_{IC}$ から:

a_c = \left( \frac{K_{IC}}{\Delta \sigma \sqrt{\pi}} \right)^2

つまり、応力範囲が大きいほど、臨界き裂長さは短くなる — これは直感的にも理解できますね。強い力がかかれば、小さなき裂でも壊れる。


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

では、このParis則を実際に動くコードに落とし込みましょう。

今回のシミュレーターのコアロジックを、JavaScript で再現します。

/**
 * Paris則によるき裂進展シミュレーション
 * @param {number} a0 - 初期き裂長さ [m]
 * @param {number} deltaSigma - 応力範囲 [MPa]
 * @param {number} KIC - 破壊靭性値 [MPa√m]
 * @param {number} C - Paris則定数 C [m/cycle] (ΔKの単位はMPa√m)
 * @param {number} m - Paris則指数 (無次元)
 * @param {number} dN - 1ステップのサイクル数 [cycle]
 * @returns {object} { a: き裂履歴, N: サイクル履歴, Nf: 残余寿命 }
 */
function parisSimulation(a0, deltaSigma, KIC, C, m, dN = 100) {
  // 臨界き裂長さを計算
  const ac = Math.pow(KIC / (deltaSigma * Math.sqrt(Math.PI)), 2);

  // 履歴保存用
  const aHistory = [a0];
  const NHistory = [0];

  let a = a0;
  let N = 0;

  // 最大ステップ数(無限ループ防止)
  const maxSteps = 100000;

  for (let i = 0; i < maxSteps; i++) {
    // 応力拡大係数範囲 ΔK を計算
    const deltaK = deltaSigma * Math.sqrt(Math.PI * a);

    // Paris則: da/dN = C * (ΔK)^m
    const daPerCycle = C * Math.pow(deltaK, m);

    // 1ステップ分進展
    const da = daPerCycle * dN;
    a += da;
    N += dN;

    // 履歴を保存
    aHistory.push(a);
    NHistory.push(N);

    // 臨界き裂長さに達したら終了
    if (a >= ac) {
      break;
    }
  }

  return {
    a: aHistory,
    N: NHistory,
    Nf: N,          // 残余寿命(サイクル数)
    ac: ac,         // 臨界き裂長さ
    finalA: a       // 最終き裂長さ
  };
}

// 使用例:アルミ合金(C=1e-11, m=3)
const result = parisSimulation(
  0.001,    // a0: 1mm
  100,      // Δσ: 100 MPa
  30,       // K_IC: 30 MPa√m
  1e-11,    // C
  3,        // m
  100       // dN: 100 cycles/step
);

console.log(`臨界き裂長さ: ${(result.ac * 1000).toFixed(2)} mm`);
console.log(`残余寿命: ${result.Nf.toLocaleString()} cycles`);
console.log(`最終き裂長さ: ${(result.finalA * 1000).toFixed(2)} mm`);

このコードのポイント:

  1. $\Delta K$ の計算:deltaSigma * Math.sqrt(Math.PI * a) — まさに数式そのもの
  2. 進展量の積分:離散的に dN サイクルずつ進め、その間は進展速度が一定と近似
  3. 終了条件:き裂長さが臨界値 ac に達したらストップ

実際のシミュレーターでは、このループをスライダーを動かすたびにリアルタイム再計算しています。つまり、パラメータ変更 → 即座にグラフ描画 という体験を実現しているんですね。


数値例で確かめる

実際に数値を入れて、手計算とコードの出力を比較してみましょう。

条件

  • 初期き裂長さ $a_0 = 1.0 \times 10^{-3}$ m (1 mm)
  • 応力範囲 $\Delta \sigma = 100$ MPa
  • 破壊靭性 $K_{IC} = 30$ MPa√m
  • Paris定数 $C = 1.0 \times 10^{-11}$ m/cycle, $m = 3$

ステップ1: 臨界き裂長さを計算

a_c = \left( \frac{30}{100 \times \sqrt{\pi}} \right)^2
a_c = \left( \frac{30}{177.245} \right)^2 \approx (0.1693)^2 \approx 0.02866 \text{ m} \approx 28.7 \text{ mm}

ステップ2: 初期状態のΔKと進展速度

\Delta K_0 = 100 \times \sqrt{\pi \times 0.001} = 100 \times 0.05605 = 5.605 \text{ MPa√m}
\frac{da}{dN}\bigg|_0 = 1 \times 10^{-11} \times (5.605)^3 = 1 \times 10^{-11} \times 176.1 = 1.761 \times 10^{-9} \text{ m/cycle}

つまり、最初は1サイクルあたり約1.76ナノメートルしか進まない。とてもゆっくりです。

ステップ3: コードの出力と比較

先ほどのコードを実行すると:

臨界き裂長さ: 28.66 mm
残余寿命: 4,203,200 cycles
最終き裂長さ: 28.66 mm

約420万サイクル で破壊に至る。これは、例えば「1日1回の荷重サイクル」なら、約11,500年 もちます。でも、航空機のエンジン部品のように「1秒に数百回」のサイクルがかかるなら、数時間で寿命が尽きる計算になります。

この「サイクルの頻度が寿命を決める」という感覚、めちゃくちゃ重要です。


シミュレーターで遊ぶ

実際の Paris則 き裂進展 シミュレーター で、3つの実験をしてみましょう。

実験1: m値を変えてみる(材料の「脆さ感度」)

  • 条件: 初期き裂1mm, Δσ=100MPa, K_IC=30, C=1e-11
  • m=2 → 残余寿命: 約1,300万サイクル
  • m=3 → 残余寿命: 約420万サイクル
  • m=4 → 残余寿命: 約130万サイクル

何が起きているか?
mが大きいほど、ΔKが大きくなったときの進展速度の増加率が急激になります。つまり、き裂が少し伸びると加速度的に進む。m=4の材料は、「ヒビが入ったら一気に伸びる」危険な材料と言えます。

実験2: 応力範囲を変えてみる(負荷の影響)

  • 条件: 初期き裂1mm, m=3, C=1e-11, K_IC=30
  • Δσ=50 MPa → 残余寿命: 約3,300万サイクル
  • Δσ=100 MPa → 残余寿命: 約420万サイクル
  • Δσ=200 MPa → 残余寿命: 約52万サイクル

応力が2倍になると、寿命は約1/8 になります。これはParis則が $\Delta K^m$ に比例し、$\Delta K$ が $\Delta \sigma$ に比例するから。m=3なら「2倍の応力 → 8分の1の寿命」という、非線形な影響が現れます。

実験3: 初期き裂の大きさを変えてみる(検査の重要性)

  • 条件: Δσ=100MPa, m=3, C=1e-11, K_IC=30
  • a0=0.5 mm → 残余寿命: 約1,200万サイクル
  • a0=1.0 mm → 残余寿命: 約420万サイクル
  • a0=2.0 mm → 残余寿命: 約150万サイクル

初期き裂が2倍になると、寿命は約1/3。つまり、非破壊検査で小さなき裂を見つけることが、どれだけ寿命延伸に効くかが体感できます。


現場でハマるポイント

1. Paris則は「万能の法則」ではない

実はParis則が有効なのは、き裂進展の第II領域(安定進展領域) だけ。き裂発生直後の微小き裂領域や、破壊直前の急速進展領域では使えません。

例えば、初期き裂を0.01mmに設定すると、実際の寿命は計算値より大幅に長くなる可能性があります。それは、微小き裂の進展がParis則より遅いから。

2. Cとmの値は「環境依存」

「鋼材のmは3」と言っても、それは大気中・室温・乾燥状態の話。例えば:

  • 湿気の多い環境 → Cが大きくなる(進展が速くなる)
  • 高温環境 → mが変化する
  • 荷重のR比(最小応力/最大応力) → これも影響する

実務では、実際の使用環境に合った試験データからC, mを選ぶ必要があります。

3. 「臨界き裂長さ」の解釈に注意

シミュレーターでは $K_{IC}$ から $a_c$ を計算しますが、実務では「計算上の $a_c$」と「実際に許容できる長さ」は異なります。

例えば、圧力容器では 「リーク・ビフォア・ブレーク」 の考え方から、計算値よりはるかに小さいサイズを管理限界値に設定します。「き裂が貫通して漏れが検知できる前に、不安定破壊が起きないように」という安全思想です。


まとめ

  1. Paris則は「き裂の伸び方」をシンプルなべき乗則で表す — $da/dN = C (\Delta K)^m$
  2. 応力が2倍になると寿命は約1/8(m=3の場合)— 非線形な影響を必ず考慮する
  3. 初期き裂の検出精度が寿命予測の鍵 — 小さなき裂を見つければ、寿命は大きく伸びる

そして何より、理論と実装の間には「離散化誤差」や「適用限界」があることを忘れないでください。

今回のシミュレーターは、無料でブラウザ上ですぐ動きます。スライダーを動かすだけで、き裂進展の様子がリアルタイムに変化する — これは「体感」するのに最適なツールです。

▶ Paris則 き裂進展 シミュレーター — ブラウザで即動作、登録不要

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

さあ、あなたも「ヒビの科学」を体感してみませんか?

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?