応力とひずみの定義をわかりやすく解説

応力とひずみは、材料力学の最も基本的な概念です。構造物や機械部品に外力が加わったとき、内部にどのような力が発生し、どれだけ変形するかを定量的に記述するための物理量です。

航空宇宙工学、機械工学、土木工学のあらゆる設計において、応力とひずみの理解は不可欠です。本記事では、定義から応力テンソルまで丁寧に解説し、Pythonで応力-ひずみ曲線を可視化します。

本記事の内容

  • 応力の定義(垂直応力・せん断応力)
  • ひずみの定義(垂直ひずみ・せん断ひずみ)
  • 応力テンソルの数学的表現
  • 応力-ひずみ曲線とPythonでの可視化

応力(Stress)とは

垂直応力

物体の断面に垂直に作用する単位面積あたりの力を 垂直応力(normal stress)$\sigma$ といいます。

$$ \sigma = \frac{F}{A} $$

ここで $F$ は断面に垂直な力 $\text{[N]}$、$A$ は断面積 $\text{[m}^2\text{]}$ です。応力の単位は $\text{Pa} = \text{N/m}^2$ です。

  • $\sigma > 0$: 引張応力(tensile stress)
  • $\sigma < 0$: 圧縮応力(compressive stress)

せん断応力

断面に平行に作用する単位面積あたりの力を せん断応力(shear stress)$\tau$ といいます。

$$ \tau = \frac{V}{A} $$

ここで $V$ は断面に平行な力です。

応力テンソル

3次元空間の任意の点における応力状態は、2階のテンソル(応力テンソル)で表されます。

$$ \bm{\sigma} = \begin{pmatrix} \sigma_{xx} & \tau_{xy} & \tau_{xz} \\ \tau_{yx} & \sigma_{yy} & \tau_{yz} \\ \tau_{zx} & \tau_{zy} & \sigma_{zz} \end{pmatrix} $$

角運動量の保存(モーメントの釣り合い)から、応力テンソルは対称です。

$$ \tau_{xy} = \tau_{yx}, \quad \tau_{yz} = \tau_{zy}, \quad \tau_{zx} = \tau_{xz} $$

したがって、独立な成分は6つです。

主応力

応力テンソルの固有値を 主応力 $\sigma_1, \sigma_2, \sigma_3$($\sigma_1 \ge \sigma_2 \ge \sigma_3$)といいます。主応力方向ではせん断応力がゼロになります。

固有値方程式は、

$$ \det(\bm{\sigma} – \sigma \bm{I}) = 0 $$

ひずみ(Strain)とは

垂直ひずみ

物体が外力により変形したとき、元の長さ $L_0$ に対する伸び $\Delta L$ の比を 垂直ひずみ(normal strain)$\varepsilon$ といいます。

$$ \varepsilon = \frac{\Delta L}{L_0} $$

ひずみは無次元量です。

せん断ひずみ

直角だった面が外力により角度変化を起こしたとき、その角度変化 $\gamma$ を せん断ひずみ といいます。

$$ \gamma_{xy} = \frac{\partial u}{\partial y} + \frac{\partial v}{\partial x} $$

ここで $u$, $v$ は $x$, $y$ 方向の変位です。

ひずみテンソル

微小変形を仮定すると、ひずみテンソルは変位 $\bm{u} = (u, v, w)$ を用いて、

$$ \varepsilon_{ij} = \frac{1}{2}\left(\frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i}\right) $$

行列表示では、

$$ \bm{\varepsilon} = \begin{pmatrix} \varepsilon_{xx} & \varepsilon_{xy} & \varepsilon_{xz} \\ \varepsilon_{yx} & \varepsilon_{yy} & \varepsilon_{yz} \\ \varepsilon_{zx} & \varepsilon_{zy} & \varepsilon_{zz} \end{pmatrix} $$

応力-ひずみ曲線

引張試験で得られる応力-ひずみ曲線は、材料の力学的特性を理解するうえで最も基本的なグラフです。

曲線の各領域

領域 特徴
弾性域 応力とひずみが比例(フックの法則)。除荷すると元に戻る
降伏点 塑性変形が始まる点。降伏応力 $\sigma_Y$
塑性域 永久変形が生じる。加工硬化により応力が徐々に増加
引張強さ 応力の最大値。くびれ(ネッキング)が始まる
破断 材料が破壊される

Pythonでの実装

典型的な軟鋼の応力-ひずみ曲線をモデル化して可視化します。

import numpy as np
import matplotlib.pyplot as plt

# 材料パラメータ(軟鋼を想定)
E = 200e9        # ヤング率 [Pa]
sigma_y = 250e6  # 降伏応力 [Pa]
sigma_u = 400e6  # 引張強さ [Pa]
eps_y = sigma_y / E          # 降伏ひずみ
eps_u = 0.15                  # 引張強さ時のひずみ
eps_f = 0.30                  # 破断ひずみ

# 弾性域
eps_elastic = np.linspace(0, eps_y, 100)
sigma_elastic = E * eps_elastic

# 塑性域(放物線近似)
eps_plastic = np.linspace(eps_y, eps_u, 200)
sigma_plastic = sigma_y + (sigma_u - sigma_y) * ((eps_plastic - eps_y) / (eps_u - eps_y))**0.5

# ネッキング〜破断域
eps_necking = np.linspace(eps_u, eps_f, 100)
sigma_necking = sigma_u - (sigma_u - sigma_y * 0.8) * ((eps_necking - eps_u) / (eps_f - eps_u))**1.5

# 結合
eps = np.concatenate([eps_elastic, eps_plastic, eps_necking])
sigma = np.concatenate([sigma_elastic, sigma_plastic, sigma_necking])

# MPaに変換
sigma_mpa = sigma / 1e6

# 可視化
plt.figure(figsize=(10, 6))
plt.plot(eps * 100, sigma_mpa, 'b-', linewidth=2)

# 特徴点のマーキング
plt.plot(eps_y * 100, sigma_y / 1e6, 'ro', markersize=8, label=f'Yield point ({sigma_y/1e6:.0f} MPa)')
plt.plot(eps_u * 100, sigma_u / 1e6, 'gs', markersize=8, label=f'Ultimate strength ({sigma_u/1e6:.0f} MPa)')
plt.plot(eps_f * 100, sigma_necking[-1] / 1e6, 'k^', markersize=8, label='Fracture')

# 弾性域の傾き(ヤング率)を示す
plt.annotate(f'E = {E/1e9:.0f} GPa', xy=(eps_y * 50, sigma_y / 2e6),
             fontsize=12, ha='center')

plt.xlabel('Strain [%]')
plt.ylabel('Stress [MPa]')
plt.title('Stress-Strain Curve (Mild Steel)')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()

弾性域の直線部分の傾きがヤング率 $E$ を表し、降伏点から塑性変形が始まります。引張強さで最大応力に達し、その後ネッキングが進行して破断に至ります。

まとめ

本記事では、応力とひずみの基本概念について解説しました。

  • 垂直応力 $\sigma = F/A$ とせん断応力 $\tau = V/A$ が応力の基本
  • 垂直ひずみ $\varepsilon = \Delta L / L_0$ とせん断ひずみ $\gamma$ がひずみの基本
  • 応力テンソルとひずみテンソルはともに対称な2階テンソル
  • 応力-ひずみ曲線から弾性域・降伏点・塑性域・引張強さ・破断点が読み取れる

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