応力-ひずみ曲線(stress-strain curve) は、材料の機械的特性を最も端的に表すグラフです。引張試験で得られるこの曲線から、弾性域、降伏点、引張強さ、延性、靭性といった材料の基本特性を読み取ることができます。
材料選定や構造設計において、応力-ひずみ曲線を正しく読み解く能力は必須です。
本記事の内容
- 引張試験の概要
- 応力-ひずみ曲線の各領域(弾性・降伏・加工硬化・ネッキング・破断)
- 延性材料と脆性材料の違い
- 真応力-真ひずみの概念
- Pythonでの応力-ひずみ曲線の描画
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
引張試験とは
引張試験(tensile test) は、試験片を軸方向に引っ張りながら、荷重と伸びを測定する最も基本的な材料試験です。
公称応力と公称ひずみは、それぞれ初期断面積 $A_0$ と初期標点距離 $L_0$ を用いて:
$$ \sigma_{\text{eng}} = \frac{F}{A_0}, \quad \varepsilon_{\text{eng}} = \frac{\Delta L}{L_0} = \frac{L – L_0}{L_0} $$
ここで添字 eng は engineering(公称)を意味します。
応力-ひずみ曲線の各領域
1. 弾性域(Elastic Region)
原点から比例限度(proportional limit) まで、応力とひずみは線形関係を示します。この領域ではフックの法則 $\sigma = E\varepsilon$ が成立し、荷重を除荷すれば元の形状に戻ります。
傾きがヤング率 $E$ です:
$$ E = \frac{\Delta\sigma}{\Delta\varepsilon} $$
2. 降伏(Yielding)
降伏点(yield point) を超えると、材料は永久変形(塑性変形)を始めます。降伏応力 $\sigma_Y$ は、明確な降伏点がない材料では 0.2% オフセット法 で定義されます:
ひずみ軸上の $\varepsilon = 0.002$ の点から $E$ の傾きの直線を引き、応力-ひずみ曲線との交点を降伏応力とします。
3. 加工硬化(Strain Hardening)
降伏後、材料はさらに変形するにつれて抵抗力が増します。これを加工硬化と呼びます。応力は増加を続け、引張強さ(ultimate tensile strength, UTS) $\sigma_{\text{UTS}}$ に達します。
4. ネッキングと破断
引張強さを超えると、試験片の一部が局所的にくびれるネッキング(necking) が発生します。公称応力は見かけ上低下し、最終的に破断(fracture) に至ります。
主な材料特性値
| 特性値 | 記号 | 意味 |
|---|---|---|
| ヤング率 | $E$ | 弾性域の傾き |
| 降伏応力 | $\sigma_Y$ | 塑性変形の開始点 |
| 引張強さ | $\sigma_{\text{UTS}}$ | 最大応力 |
| 破断ひずみ | $\varepsilon_f$ | 破断時のひずみ(延性の指標) |
| 靭性 | $u_T$ | 曲線下の面積(エネルギー吸収能力) |
| レジリエンス | $u_R$ | 弾性域の曲線下の面積 |
レジリエンスは:
$$ u_R = \frac{\sigma_Y^2}{2E} $$
延性材料と脆性材料
延性材料(ductile material)
軟鋼やアルミニウムなど。大きな塑性変形が可能で、破断前に顕著なネッキングが見られます。破断ひずみは 10% 以上になることもあります。
脆性材料(brittle material)
セラミクス、ガラス、鋳鉄など。ほとんど塑性変形せずに破断します。弾性域の直後にいきなり破断するため、構造物では危険な破壊モードです。
真応力と真ひずみ
公称応力は初期断面積 $A_0$ を基準にしますが、実際の断面積は変形とともに変化します。瞬間の断面積を用いた応力が真応力です。
$$ \sigma_{\text{true}} = \frac{F}{A} $$
真ひずみ は:
$$ \varepsilon_{\text{true}} = \int_{L_0}^{L} \frac{dL}{L} = \ln\frac{L}{L_0} = \ln(1 + \varepsilon_{\text{eng}}) $$
体積一定($AL = A_0 L_0$)の仮定のもとで:
$$ \sigma_{\text{true}} = \frac{F}{A} = \frac{F}{A_0}\cdot\frac{L}{L_0} = \sigma_{\text{eng}}(1 + \varepsilon_{\text{eng}}) $$
真応力-真ひずみ曲線はネッキング後も単調増加します。
加工硬化モデル
塑性域の応力-ひずみ関係は、べき乗硬化則(power law) で近似されることが多いです:
$$ \sigma_{\text{true}} = K\varepsilon_{\text{true}}^n $$
ここで、$K$ は強度係数、$n$ は加工硬化指数です。$n$ が大きいほど加工硬化が著しくなります。
ネッキングの開始条件(コンシデール条件)は:
$$ \frac{d\sigma_{\text{true}}}{d\varepsilon_{\text{true}}} = \sigma_{\text{true}} $$
べき乗硬化則の場合、$\varepsilon_{\text{true}} = n$ でネッキングが開始します。
Pythonでの実装
import numpy as np
import matplotlib.pyplot as plt
def ductile_stress_strain(E, sigma_y, sigma_uts, eps_uts, eps_f, n_points=500):
"""延性材料の応力-ひずみ曲線を生成"""
# 弾性域
eps_y = sigma_y / E
eps_elastic = np.linspace(0, eps_y, n_points // 4)
sig_elastic = E * eps_elastic
# 加工硬化域(べき乗近似)
eps_plastic = np.linspace(eps_y, eps_uts, n_points // 2)
n_hard = np.log(sigma_uts / sigma_y) / np.log(eps_uts / eps_y)
K = sigma_y / eps_y**n_hard
sig_plastic = sigma_y + (sigma_uts - sigma_y) * \
((eps_plastic - eps_y) / (eps_uts - eps_y))**0.5
# ネッキング域
eps_necking = np.linspace(eps_uts, eps_f, n_points // 4)
sig_necking = sigma_uts * np.exp(-3 * (eps_necking - eps_uts)**2 /
(eps_f - eps_uts)**2)
# 破断点に向かって低下
sig_necking = sigma_uts - (sigma_uts - sigma_uts * 0.7) * \
((eps_necking - eps_uts) / (eps_f - eps_uts))**0.8
eps = np.concatenate([eps_elastic, eps_plastic[1:], eps_necking[1:]])
sig = np.concatenate([sig_elastic, sig_plastic[1:], sig_necking[1:]])
return eps, sig
def brittle_stress_strain(E, sigma_f, eps_f, n_points=200):
"""脆性材料の応力-ひずみ曲線を生成"""
eps = np.linspace(0, eps_f, n_points)
# わずかな非線形性
sig = E * eps * (1 - 0.1 * (eps / eps_f)**2)
return eps, sig
fig, axes = plt.subplots(1, 3, figsize=(16, 5))
# (1) 延性材料 vs 脆性材料
eps_d, sig_d = ductile_stress_strain(
E=200e3, sigma_y=250, sigma_uts=400, eps_uts=0.15, eps_f=0.30)
eps_b, sig_b = brittle_stress_strain(E=70e3, sigma_f=350, eps_f=0.005)
axes[0].plot(eps_d * 100, sig_d, 'b-', linewidth=2.5, label='Ductile (Steel)')
axes[0].plot(eps_b * 100, sig_b, 'r-', linewidth=2.5, label='Brittle (Ceramic)')
axes[0].plot(eps_b[-1]*100, sig_b[-1], 'rx', markersize=12, markeredgewidth=3)
axes[0].plot(eps_d[-1]*100, sig_d[-1], 'bx', markersize=12, markeredgewidth=3)
axes[0].set_xlabel('Strain [%]')
axes[0].set_ylabel('Stress [MPa]')
axes[0].set_title('Ductile vs Brittle')
axes[0].legend()
axes[0].grid(True, alpha=0.3)
# (2) 応力-ひずみ曲線の各領域
eps_d2, sig_d2 = ductile_stress_strain(
E=200e3, sigma_y=300, sigma_uts=500, eps_uts=0.12, eps_f=0.25)
axes[1].plot(eps_d2 * 100, sig_d2, 'b-', linewidth=2.5)
# 各点をアノテーション
eps_y = 300 / 200e3
axes[1].annotate('Yield Point', xy=(eps_y*100, 300),
xytext=(2, 350), fontsize=10,
arrowprops=dict(arrowstyle='->', color='red'))
idx_uts = np.argmax(sig_d2)
axes[1].annotate('UTS', xy=(eps_d2[idx_uts]*100, sig_d2[idx_uts]),
xytext=(eps_d2[idx_uts]*100+2, sig_d2[idx_uts]+30),
fontsize=10,
arrowprops=dict(arrowstyle='->', color='red'))
axes[1].annotate('Fracture', xy=(eps_d2[-1]*100, sig_d2[-1]),
xytext=(eps_d2[-1]*100-5, sig_d2[-1]-80),
fontsize=10,
arrowprops=dict(arrowstyle='->', color='red'))
# 弾性域を塗りつぶし
mask_elastic = eps_d2 <= eps_y
axes[1].fill_between(eps_d2[mask_elastic]*100, sig_d2[mask_elastic],
alpha=0.2, color='green', label='Elastic Region')
axes[1].set_xlabel('Strain [%]')
axes[1].set_ylabel('Stress [MPa]')
axes[1].set_title('Stress-Strain Curve Regions')
axes[1].legend()
axes[1].grid(True, alpha=0.3)
# (3) 公称応力 vs 真応力
eps_eng = np.linspace(0, 0.25, 300)
# 簡易モデル: 弾性+べき乗硬化
E = 200e3 # MPa
sigma_y = 300 # MPa
eps_y_val = sigma_y / E
K = 800 # 強度係数
n = 0.2 # 加工硬化指数
sig_eng = np.where(eps_eng <= eps_y_val,
E * eps_eng,
K * eps_eng**n)
# 真応力・真ひずみへの変換
eps_true = np.log(1 + eps_eng)
sig_true = sig_eng * (1 + eps_eng)
axes[2].plot(eps_eng * 100, sig_eng, 'b-', linewidth=2.5,
label='Engineering')
axes[2].plot(eps_true * 100, sig_true, 'r--', linewidth=2.5,
label='True')
axes[2].set_xlabel('Strain [%]')
axes[2].set_ylabel('Stress [MPa]')
axes[2].set_title('Engineering vs True Stress-Strain')
axes[2].legend()
axes[2].grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('stress_strain_curve.png', dpi=150, bbox_inches='tight')
plt.show()
まとめ
本記事では、応力-ひずみ曲線の見方と材料特性について解説しました。
- 引張試験から得られる応力-ひずみ曲線は、弾性域・降伏・加工硬化・ネッキング・破断の各段階を示す
- 降伏応力 $\sigma_Y$ は塑性変形の開始点であり、0.2% オフセット法で定義される
- 延性材料は大きな塑性変形、脆性材料はほぼ変形なく破断する
- 真応力・真ひずみは瞬間の断面積と長さを基準とし、$\sigma_{\text{true}} = \sigma_{\text{eng}}(1 + \varepsilon_{\text{eng}})$
- べき乗硬化則 $\sigma = K\varepsilon^n$ で塑性域をモデル化できる
次のステップとして、以下の記事も参考にしてください。