平面応力と平面ひずみ

3次元の応力状態を解析するのは一般に複雑ですが、多くの実際の問題では2次元に簡略化できます。その代表的な2つのケースが平面応力平面ひずみです。

本記事の内容

  • 3次元の一般化フックの法則
  • 平面応力状態(薄板の問題)
  • 平面ひずみ状態(厚い構造の問題)
  • 両者の構成方程式の比較
  • Pythonでの可視化

前提知識

3次元の一般化フックの法則

等方性弾性体の3次元応力-ひずみ関係:

$$ \varepsilon_x = \frac{1}{E}[\sigma_x – \nu(\sigma_y + \sigma_z)] $$

$$ \varepsilon_y = \frac{1}{E}[\sigma_y – \nu(\sigma_x + \sigma_z)] $$

$$ \varepsilon_z = \frac{1}{E}[\sigma_z – \nu(\sigma_x + \sigma_y)] $$

$$ \gamma_{xy} = \frac{\tau_{xy}}{G}, \quad \gamma_{yz} = \frac{\tau_{yz}}{G}, \quad \gamma_{zx} = \frac{\tau_{zx}}{G} $$

ここで $G = E/[2(1+\nu)]$ です。

平面応力(Plane Stress)

定義と適用条件

$z$ 方向の応力がすべてゼロ:

$$ \sigma_z = 0, \quad \tau_{xz} = 0, \quad \tau_{yz} = 0 $$

適用: 薄板の面内荷重問題。板厚が他の寸法に比べて十分薄い場合。

構成方程式

$\sigma_z = 0$ を一般化フックの法則に代入すると:

$$ \varepsilon_x = \frac{1}{E}(\sigma_x – \nu\sigma_y), \quad \varepsilon_y = \frac{1}{E}(\sigma_y – \nu\sigma_x) $$

$$ \varepsilon_z = -\frac{\nu}{E}(\sigma_x + \sigma_y) \neq 0 $$

注意:$\sigma_z = 0$ でも $\varepsilon_z \neq 0$ です(ポアソン効果)。

逆関係(応力をひずみで表す):

$$ \boxed{\begin{pmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{pmatrix} = \frac{E}{1-\nu^2} \begin{pmatrix} 1 & \nu & 0 \\ \nu & 1 & 0 \\ 0 & 0 & \frac{1-\nu}{2} \end{pmatrix} \begin{pmatrix} \varepsilon_x \\ \varepsilon_y \\ \gamma_{xy} \end{pmatrix}} $$

平面ひずみ(Plane Strain)

定義と適用条件

$z$ 方向のひずみがすべてゼロ:

$$ \varepsilon_z = 0, \quad \gamma_{xz} = 0, \quad \gamma_{yz} = 0 $$

適用: 長い構造の断面問題(ダム、トンネル、長い堰堤など)。$z$ 方向に十分長く、断面形状が一定の場合。

構成方程式

$\varepsilon_z = 0$ の条件から:

$$ 0 = \frac{1}{E}[\sigma_z – \nu(\sigma_x + \sigma_y)] $$

$$ \sigma_z = \nu(\sigma_x + \sigma_y) \neq 0 $$

これを代入すると:

$$ \boxed{\begin{pmatrix} \sigma_x \\ \sigma_y \\ \tau_{xy} \end{pmatrix} = \frac{E}{(1+\nu)(1-2\nu)} \begin{pmatrix} 1-\nu & \nu & 0 \\ \nu & 1-\nu & 0 \\ 0 & 0 & \frac{1-2\nu}{2} \end{pmatrix} \begin{pmatrix} \varepsilon_x \\ \varepsilon_y \\ \gamma_{xy} \end{pmatrix}} $$

比較表

平面応力 平面ひずみ
条件 $\sigma_z = 0$ $\varepsilon_z = 0$
適用 薄板 長い構造の断面
$\varepsilon_z$ $\neq 0$(自由に変形) $= 0$(拘束)
$\sigma_z$ $= 0$ $= \nu(\sigma_x + \sigma_y) \neq 0$

Pythonでの可視化

import numpy as np
import matplotlib.pyplot as plt

E = 200e9   # ヤング率 [Pa](鋼)
nu = 0.3    # ポアソン比

# 一軸引張 σx を変化させたときの応答比較
sigma_x_range = np.linspace(0, 300, 100)  # [MPa]
sigma_y = 0  # σy = 0

fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# (1) εz の比較
ez_stress = -nu / E * sigma_x_range * 1e6  # 平面応力
ez_strain = np.zeros_like(sigma_x_range)     # 平面ひずみ

axes[0].plot(sigma_x_range, ez_stress * 1e3, 'b-', lw=2, label='Plane stress')
axes[0].plot(sigma_x_range, ez_strain * 1e3, 'r--', lw=2, label='Plane strain')
axes[0].set_xlabel('$\\sigma_x$ [MPa]', fontsize=12)
axes[0].set_ylabel('$\\varepsilon_z$ [×10⁻³]', fontsize=12)
axes[0].set_title('Out-of-plane strain $\\varepsilon_z$', fontsize=13)
axes[0].legend(fontsize=11); axes[0].grid(True, alpha=0.3)

# (2) σz の比較
sz_stress = np.zeros_like(sigma_x_range)
sz_strain = nu * sigma_x_range  # 平面ひずみ

axes[1].plot(sigma_x_range, sz_stress, 'b-', lw=2, label='Plane stress')
axes[1].plot(sigma_x_range, sz_strain, 'r--', lw=2, label='Plane strain')
axes[1].set_xlabel('$\\sigma_x$ [MPa]', fontsize=12)
axes[1].set_ylabel('$\\sigma_z$ [MPa]', fontsize=12)
axes[1].set_title('Out-of-plane stress $\\sigma_z$', fontsize=13)
axes[1].legend(fontsize=11); axes[1].grid(True, alpha=0.3)

plt.tight_layout()
plt.show()

まとめ

  • 平面応力: $\sigma_z = 0$(薄板)。$\varepsilon_z$ は自由に変形
  • 平面ひずみ: $\varepsilon_z = 0$(長い構造体)。$\sigma_z$ が発生
  • 構成方程式の剛性マトリクスが異なる
  • 適用を間違えると大きな誤差が生じるため、問題の幾何学に応じて正しく選択する

次のステップとして、以下の記事も参考にしてください。