フックの法則は、応力とひずみの間の線形関係を記述する材料力学の基本法則です。弾性域において材料がどの程度変形するかを予測するために不可欠であり、構造解析の出発点となります。
本記事では、1次元のフックの法則から3次元の一般化フックの法則までを導出し、ヤング率・ポアソン比・せん断弾性係数の関係を明らかにします。
本記事の内容
- 1次元フックの法則とヤング率
- ポアソン比の定義と物理的意味
- 3次元の一般化フックの法則
- 弾性係数間の関係式の導出
- Pythonでの弾性変形の計算と可視化
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
1次元のフックの法則
弾性域において、垂直応力 $\sigma$ と垂直ひずみ $\varepsilon$ は比例関係にあります。
$$ \sigma = E\varepsilon $$
ここで $E$ はヤング率(Young’s modulus, 縦弾性係数)で、単位は $\text{Pa}$ です。
$$ E = \frac{\sigma}{\varepsilon} = \frac{F/A}{\Delta L / L_0} $$
代表的な材料のヤング率
| 材料 | ヤング率 $E$ [GPa] |
|---|---|
| 鋼 | 200 |
| アルミニウム | 70 |
| 銅 | 120 |
| チタン | 110 |
| ガラス | 70 |
| ゴム | 0.01〜0.1 |
ポアソン比
物体を軸方向に引張ると、軸方向には伸びますが、横方向には縮みます。この横方向の収縮率を表すのが ポアソン比 $\nu$ です。
$$ \nu = -\frac{\varepsilon_{\text{lateral}}}{\varepsilon_{\text{axial}}} $$
$z$ 方向に引張った場合、
$$ \varepsilon_x = \varepsilon_y = -\nu\varepsilon_z $$
ポアソン比の理論的な範囲は $-1 \le \nu \le 0.5$ ですが、通常の材料では $0 \le \nu \le 0.5$ です。
| 材料 | ポアソン比 $\nu$ |
|---|---|
| 鋼 | 0.30 |
| アルミニウム | 0.33 |
| ゴム | 0.50(非圧縮性) |
| コルク | ≈ 0 |
3次元の一般化フックの法則
応力-ひずみ関係
等方性材料の場合、$x$ 方向のひずみ $\varepsilon_{xx}$ は、$x$ 方向の応力 $\sigma_{xx}$ による直接的なひずみと、$y$, $z$ 方向の応力によるポアソン効果の合計です。
$$ \begin{align} \varepsilon_{xx} &= \frac{1}{E}\left[\sigma_{xx} – \nu(\sigma_{yy} + \sigma_{zz})\right] \\ \varepsilon_{yy} &= \frac{1}{E}\left[\sigma_{yy} – \nu(\sigma_{xx} + \sigma_{zz})\right] \\ \varepsilon_{zz} &= \frac{1}{E}\left[\sigma_{zz} – \nu(\sigma_{xx} + \sigma_{yy})\right] \end{align} $$
せん断成分については、
$$ \gamma_{xy} = \frac{\tau_{xy}}{G}, \quad \gamma_{yz} = \frac{\tau_{yz}}{G}, \quad \gamma_{zx} = \frac{\tau_{zx}}{G} $$
ここで $G$ はせん断弾性係数(横弾性係数)です。
行列表示(コンプライアンス行列)
$$ \begin{pmatrix} \varepsilon_{xx} \\ \varepsilon_{yy} \\ \varepsilon_{zz} \\ \gamma_{yz} \\ \gamma_{zx} \\ \gamma_{xy} \end{pmatrix} = \frac{1}{E} \begin{pmatrix} 1 & -\nu & -\nu & 0 & 0 & 0 \\ -\nu & 1 & -\nu & 0 & 0 & 0 \\ -\nu & -\nu & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 2(1+\nu) & 0 & 0 \\ 0 & 0 & 0 & 0 & 2(1+\nu) & 0 \\ 0 & 0 & 0 & 0 & 0 & 2(1+\nu) \end{pmatrix} \begin{pmatrix} \sigma_{xx} \\ \sigma_{yy} \\ \sigma_{zz} \\ \tau_{yz} \\ \tau_{zx} \\ \tau_{xy} \end{pmatrix} $$
弾性係数間の関係
せん断弾性係数とヤング率
等方性材料では、$G$ は $E$ と $\nu$ から決まります。
$$ \boxed{G = \frac{E}{2(1+\nu)}} $$
体積弾性率
体積弾性率 $K$ は等方応力(静水圧)に対する体積変化の抵抗を表します。
$$ K = \frac{\sigma_{\text{hydro}}}{\varepsilon_{\text{vol}}} $$
体積ひずみ $\varepsilon_{\text{vol}} = \varepsilon_{xx} + \varepsilon_{yy} + \varepsilon_{zz}$ と静水圧 $\sigma_{\text{hydro}} = (\sigma_{xx} + \sigma_{yy} + \sigma_{zz})/3$ を一般化フックの法則に代入すると、
$$ \varepsilon_{\text{vol}} = \frac{1 – 2\nu}{E}(\sigma_{xx} + \sigma_{yy} + \sigma_{zz}) = \frac{3(1-2\nu)}{E}\sigma_{\text{hydro}} $$
$$ \boxed{K = \frac{E}{3(1-2\nu)}} $$
$\nu = 0.5$ のとき $K \to \infty$ となり、完全な非圧縮性材料を表します。
Pythonでの実装
弾性係数の関係を可視化し、単軸引張時のポアソン効果をシミュレーションします。
import numpy as np
import matplotlib.pyplot as plt
# 弾性係数の関係を可視化
nu_range = np.linspace(0, 0.49, 100)
E = 200e9 # ヤング率 [Pa](鋼)
G_range = E / (2 * (1 + nu_range))
K_range = E / (3 * (1 - 2 * nu_range))
fig, axes = plt.subplots(1, 2, figsize=(14, 5))
# G vs nu
axes[0].plot(nu_range, G_range / 1e9, 'b-', linewidth=2)
axes[0].set_xlabel("Poisson's ratio $\\nu$")
axes[0].set_ylabel('Shear modulus $G$ [GPa]')
axes[0].set_title('$G = E / [2(1+\\nu)]$')
axes[0].grid(True)
axes[0].axvline(x=0.30, color='r', linestyle='--', alpha=0.5, label='Steel ($\\nu=0.30$)')
axes[0].legend()
# K vs nu
axes[1].plot(nu_range, K_range / 1e9, 'r-', linewidth=2)
axes[1].set_xlabel("Poisson's ratio $\\nu$")
axes[1].set_ylabel('Bulk modulus $K$ [GPa]')
axes[1].set_title('$K = E / [3(1-2\\nu)]$')
axes[1].set_ylim(0, 2000)
axes[1].grid(True)
axes[1].axvline(x=0.30, color='b', linestyle='--', alpha=0.5, label='Steel ($\\nu=0.30$)')
axes[1].legend()
plt.tight_layout()
plt.show()
# ポアソン効果の可視化(単軸引張)
fig2, ax2 = plt.subplots(figsize=(8, 6))
# 変形前後の断面(四角形で簡略化)
sigma_applied = 100e6 # 100 MPa
eps_axial = sigma_applied / E
nu_steel = 0.30
eps_lateral = -nu_steel * eps_axial
# 変形を誇張(1000倍)
scale = 1000
L0, W0 = 2.0, 1.0
L_def = L0 * (1 + eps_axial * scale)
W_def = W0 * (1 + eps_lateral * scale)
# 変形前
rect_before = plt.Rectangle((-L0/2, -W0/2), L0, W0, fill=False,
edgecolor='blue', linewidth=2, linestyle='--', label='Before')
ax2.add_patch(rect_before)
# 変形後
rect_after = plt.Rectangle((-L_def/2, -W_def/2), L_def, W_def, fill=False,
edgecolor='red', linewidth=2, label='After (exaggerated)')
ax2.add_patch(rect_after)
ax2.set_xlim(-1.5, 1.5)
ax2.set_ylim(-1.0, 1.0)
ax2.set_aspect('equal')
ax2.set_xlabel('Axial direction')
ax2.set_ylabel('Lateral direction')
ax2.set_title(f'Poisson Effect ($\\nu$={nu_steel}, $\\sigma$={sigma_applied/1e6:.0f} MPa, scale x{scale})')
ax2.legend()
ax2.grid(True)
plt.tight_layout()
plt.show()
弾性係数のグラフから、ポアソン比が大きくなるほどせん断弾性係数 $G$ は低下し、体積弾性率 $K$ は急激に増大することがわかります。
まとめ
本記事では、フックの法則と弾性係数について解説しました。
- 1次元フックの法則: $\sigma = E\varepsilon$(ヤング率 $E$ が比例定数)
- ポアソン比 $\nu$: 軸方向の伸びに対する横方向の収縮率
- 3次元の一般化フックの法則: コンプライアンス行列による応力-ひずみ関係
- 弾性係数の関係: $G = E/[2(1+\nu)]$、$K = E/[3(1-2\nu)]$
次のステップとして、以下の記事も参考にしてください。