エンジンのクランクシャフト、橋の支持部、プレス加工されたフレーム。これらの部品はどれも、引張だけでなく、ねじりや曲げ、圧縮など複数の方向から同時に荷重を受けています。材料試験で得られる「降伏応力 $\sigma_y$」は単軸引張試験の値です。では、複雑な荷重がかかる部品に対して、この $\sigma_y$ をそのまま設計基準に使えるのでしょうか?
答えは「そのままでは使えない」です。多軸応力状態では、3方向の主応力の組み合わせが重要で、単純に最大主応力と $\sigma_y$ を比べるだけでは危険な見落としが生まれます。
フォン・ミーゼス降伏条件(von Mises yield criterion)はこの問題を解決する、現代の構造設計・有限要素解析(FEA)で最も広く使われる降伏判定基準です。この条件は「せん断ひずみエネルギーが材料固有の臨界値に達したとき降伏する」というエネルギー的な物理解釈を持ち、実験結果とも高い整合性を示します。
この記事では、以下の内容を扱います。
- 主応力 $\sigma_1, \sigma_2, \sigma_3$ の復習と応力テンソルの分解
- 偏差応力テンソルと第二不変量 $J_2$ の導出
- フォン・ミーゼス相当応力 $\sigma_{eq}$ の物理的意味と数式
- 降伏曲面の幾何学(主応力空間の円柱、π平面上の円)
- トレスカ条件との比較
- 平面応力での降伏楕円と安全率計算
- Pythonによる可視化と数値検証
前提知識
この記事を読む前に、以下の記事を読んでおくと理解が深まります。
単軸試験の結果を多軸応力に橋渡しする問題
材料試験の引張試験では、試験片の長軸方向だけに力をかけます。このとき、試験片の断面に垂直な応力 $\sigma$ だけが存在し(厳密には横方向にもひずみが生じますが、主要応力は1方向)、材料が永久変形を始める瞬間の応力を降伏応力 $\sigma_y$ と定義します。

この概念図が示す問題を明確にしておきましょう。左の単軸試験では「引張方向の応力だけ」が存在し、降伏の判定は簡単です。しかし右の実際の部品では、水平方向の荷重 $\sigma_1$、垂直方向の荷重 $\sigma_2$、さらに奥行き方向 $\sigma_3$ が同時に作用します。この状態で部品が「安全か」「降伏しているか」をどう判定すればよいか。これがフォン・ミーゼス条件が答える問いです。
単純に「最大の主応力 $\sigma_1$ が $\sigma_y$ を超えたら降伏」とすれば分かりやすそうですが、実はこの考え方には重大な欠陥があります。たとえば $\sigma_1 = \sigma_2 = \sigma_3 = 500\ \text{MPa}$ という「静水圧」状態(すべての方向に同じ引張)を考えると、各成分は $\sigma_y$ を大きく超えているのに、実験では金属は降伏しません。静水圧だけでは形状が変わらないからです。材料の降伏は、形状を変えようとするせん断(形状変化)成分が臨界値に達したときに起こります。
この先のセクションでは、まず応力テンソルを「静水圧成分」と「偏差成分(形状変化成分)」に分解し、フォン・ミーゼス条件の核心に迫ります。
主応力と応力テンソルの復習
応力テンソル $\boldsymbol{\sigma}$ は、3×3の対称行列で表されます。任意の方向に適切に座標を取れば、対角成分だけになる(非対角のせん断成分がゼロになる)主応力軸が存在します。この3つの主応力を $\sigma_1 \geq \sigma_2 \geq \sigma_3$ と表記します。
$$ \boldsymbol{\sigma} = \begin{pmatrix} \sigma_1 & 0 & 0 \\ 0 & \sigma_2 & 0 \\ 0 & 0 & \sigma_3 \end{pmatrix} \quad \text{(主応力座標系)} $$

上の図は、材料設計で頻繁に登場する3つの代表的な応力状態を示しています。純引張(一方向のみ)、二軸引張(2方向同時)、純せん断(引張・圧縮が45°の関係)という3つのケースを比べると、主応力の組み合わせが全く異なることが分かります。フォン・ミーゼス条件はこれらを統一した枠組みで扱います。
主応力の組み合わせを特定したら、次に重要なのがこの主応力テンソルを「体積変化に関係する成分」と「形状変化に関係する成分」に分解することです。この分解こそがフォン・ミーゼス理論の出発点になります。
偏差応力テンソルと第二不変量 $J_2$
応力テンソル $\boldsymbol{\sigma}$ を次のように分解します。
$$ \boldsymbol{\sigma} = \boldsymbol{\sigma}_m + \boldsymbol{s} $$
ここで $\boldsymbol{\sigma}_m$ は静水圧成分(球テンソル)、$\boldsymbol{s}$ は偏差応力テンソル(deviatoric stress tensor)です。
静水圧成分は3方向の主応力の平均に単位テンソルをかけたもので、
$$ \sigma_m = \frac{\sigma_1 + \sigma_2 + \sigma_3}{3}, \quad \boldsymbol{\sigma}_m = \sigma_m \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} $$
偏差応力テンソルはその残差です。
$$ \boldsymbol{s} = \boldsymbol{\sigma} – \boldsymbol{\sigma}_m = \begin{pmatrix} \sigma_1 – \sigma_m & 0 & 0 \\ 0 & \sigma_2 – \sigma_m & 0 \\ 0 & 0 & \sigma_3 – \sigma_m \end{pmatrix} $$
偏差応力テンソルの成分を $s_1, s_2, s_3$ と書くと、
$$ s_1 = \sigma_1 – \sigma_m, \quad s_2 = \sigma_2 – \sigma_m, \quad s_3 = \sigma_3 – \sigma_m $$
これらは定義から必ず $s_1 + s_2 + s_3 = 0$ を満たします(トレースがゼロ)。

この図は、具体的な数値例($\sigma_1 = 0.8,\ \sigma_2 = 0.5,\ \sigma_3 = 0.2$、規格化)で分解を示しています。平均応力 $\sigma_m = 0.5$ を引いた偏差成分は、正の値と負の値が混在しています。この「プラスとマイナスが混在している状態」が、材料の形を変えようとするせん断の存在を示しています。静水圧成分だけでは $s_1 = s_2 = s_3 = 0$ になり、降伏の駆動力がゼロになります。
ここで、偏差応力テンソルの第二不変量 $J_2$ を定義します。これがフォン・ミーゼス条件の核心となるスカラー量です。
$$ J_2 = \frac{1}{2} (s_1^2 + s_2^2 + s_3^2) $$
$J_1 = s_1 + s_2 + s_3 = 0$ はトレースでゼロになります。$J_2$ は偏差テンソルの「大きさの2乗」の半分に当たるスカラー量で、座標系の選び方(向き)によらない不変量です。フォン・ミーゼス条件は $J_2$ が臨界値に達したとき降伏すると主張します。
フォン・ミーゼス相当応力の導出
$J_2$ を主応力 $\sigma_1, \sigma_2, \sigma_3$ で直接表しましょう。$s_i = \sigma_i – \sigma_m$ を代入して展開します。
まず $s_1^2 + s_2^2 + s_3^2$ を計算します。$\sigma_m = (\sigma_1 + \sigma_2 + \sigma_3)/3$ を代入すると:
$$ s_1 = \sigma_1 – \frac{\sigma_1+\sigma_2+\sigma_3}{3} = \frac{2\sigma_1 – \sigma_2 – \sigma_3}{3} $$
同様に $s_2 = (2\sigma_2 – \sigma_1 – \sigma_3)/3$、$s_3 = (2\sigma_3 – \sigma_1 – \sigma_2)/3$。
これらを2乗して和を取ると(計算は省略せず進めます):
$$ s_1^2 + s_2^2 + s_3^2 = \frac{1}{9}\left[(2\sigma_1-\sigma_2-\sigma_3)^2 + (2\sigma_2-\sigma_1-\sigma_3)^2 + (2\sigma_3-\sigma_1-\sigma_2)^2\right] $$
ここで第一項を展開します($a = 2\sigma_1 – \sigma_2 – \sigma_3$ とおくと):
$$ a^2 = 4\sigma_1^2 + \sigma_2^2 + \sigma_3^2 – 4\sigma_1\sigma_2 – 4\sigma_1\sigma_3 + 2\sigma_2\sigma_3 $$
3項の和を整理すると(対称性を使うと):
$$ s_1^2 + s_2^2 + s_3^2 = \frac{2}{3}\left[(\sigma_1-\sigma_2)^2 + (\sigma_2-\sigma_3)^2 + (\sigma_3-\sigma_1)^2\right] \cdot \frac{1}{2} $$
待って、もう少し丁寧に整理します。展開・整理すると実は次の恒等式が成り立ちます:
$$ s_1^2 + s_2^2 + s_3^2 = \frac{1}{3}\left[(\sigma_1-\sigma_2)^2 + (\sigma_2-\sigma_3)^2 + (\sigma_3-\sigma_1)^2\right] $$
この恒等式を使うと、$J_2$ は:
$$ J_2 = \frac{1}{2}(s_1^2 + s_2^2 + s_3^2) = \frac{1}{6}\left[(\sigma_1-\sigma_2)^2 + (\sigma_2-\sigma_3)^2 + (\sigma_3-\sigma_1)^2\right] $$
これでフォン・ミーゼス相当応力(equivalent stress)を定義できます。$J_2$ を使って、単軸引張の降伏応力と同じ次元(応力の次元、Pa や MPa)を持つ量として:
$$ \boxed{ \sigma_{eq} = \sqrt{3 J_2} = \sqrt{\frac{1}{2}\left[(\sigma_1-\sigma_2)^2 + (\sigma_2-\sigma_3)^2 + (\sigma_3-\sigma_1)^2\right]} } $$
この式がフォン・ミーゼス相当応力です。各主応力の差の2乗を足し合わせて1/2をかけ、平方根を取った形になっています。
なぜ $\sqrt{3J_2}$ に $\sqrt{3}$ がかかるのでしょうか。それは、単軸引張($\sigma_1 = \sigma_y,\ \sigma_2 = \sigma_3 = 0$)のとき、$\sigma_{eq}$ がちょうど $\sigma_y$ に等しくなるようにキャリブレーションするためです。実際に代入すると:
$$ \sigma_{eq} = \sqrt{\frac{1}{2}\left[(\sigma_y-0)^2 + (0-0)^2 + (0-\sigma_y)^2\right]} = \sqrt{\frac{1}{2} \cdot 2\sigma_y^2} = \sigma_y $$
確かに $\sigma_{eq} = \sigma_y$ となり、単軸試験と整合します。$\sqrt{3}$ の係数はこの整合性確保のために入っています。
フォン・ミーゼス降伏条件とせん断ひずみエネルギー説
フォン・ミーゼス降伏条件は次の一文で表されます:
$$ \sigma_{eq} = \sigma_y \quad \Longleftrightarrow \quad J_2 = \frac{\sigma_y^2}{3} \quad \text{(降伏)} $$
$\sigma_{eq} < \sigma_y$ のとき弾性域(安全)、$\sigma_{eq} = \sigma_y$ のとき降伏開始、$\sigma_{eq} > \sigma_y$ は(弾性解析の範囲では到達不可能な)塑性流れ状態を示します。
この条件には物理的な解釈があります。「せん断ひずみエネルギー説(Maximum Distortion Energy Theory)」です。弾性ひずみエネルギーを体積変化エネルギーと形状変化エネルギーに分けると、ひずみエネルギー密度 $U$ は:
$$ U = U_{vol} + U_{dev} $$
等方性材料では体積変化エネルギー(静水圧によるもの)と形状変化エネルギー(せん断によるもの)を分離できて:
$$ U_{vol} = \frac{1-2\nu}{6E}(\sigma_1+\sigma_2+\sigma_3)^2, \quad U_{dev} = \frac{1+\nu}{6E}\left[(\sigma_1-\sigma_2)^2 + (\sigma_2-\sigma_3)^2 + (\sigma_3-\sigma_1)^2\right] $$
ここで $E$ はヤング率、$\nu$ はポアソン比です。$U_{dev}$ の括弧内が $\sigma_{eq}^2 / (3J_2$ の構造と一致していることに気づきます。フォン・ミーゼス条件は「形状変化エネルギー $U_{dev}$ が材料固有の臨界値(単軸降伏時の値)に等しくなったとき降伏が始まる」と言っているのです。

この図の左パネルで重要な観察があります。弾性ひずみエネルギーのうち、青の体積変化エネルギーは降伏と無関係です。赤いせん断ひずみエネルギー(偏差成分)が臨界値に達したとき降伏します。右パネルは4つの応力状態で $J_2$ を比較しています。単軸引張と純せん断は同じ $J_2 = \sigma_y^2/3$ で降伏(ミーゼス条件が正確に成立)。等二軸引張は $\sigma_1 = \sigma_2$ のとき $J_2$ が大きくなり、より高い応力で降伏します。そして静水圧($\sigma_1 = \sigma_2 = \sigma_3$)では偏差成分がゼロで $J_2 = 0$、どれだけ高い圧力をかけても降伏しません。これが金属の実験事実と一致しています。
せん断ひずみエネルギー説という物理的背景を踏まえると、「なぜフォン・ミーゼス条件が実験と合うか」が直感的に理解できます。次に、この降伏条件を3次元の幾何学で可視化しましょう。
降伏曲面: 主応力空間の円柱
主応力 $(\sigma_1, \sigma_2, \sigma_3)$ を3次元座標軸に取った「主応力空間」を考えます。この空間で降伏条件 $\sigma_{eq} = \sigma_y$ がどんな形をしているかを見てみましょう。
$$ (\sigma_1-\sigma_2)^2 + (\sigma_2-\sigma_3)^2 + (\sigma_3-\sigma_1)^2 = 2\sigma_y^2 $$
この方程式が表す面がフォン・ミーゼス降伏曲面です。
まず注目すべきは、静水圧軸($\sigma_1 = \sigma_2 = \sigma_3$ を結ぶ直線、空間対角線)の方向に任意の定数を足しても方程式が変わらないことです。つまり、この降伏曲面は静水圧軸に平行な方向に無限に伸びています。

上の3D図が示すように、フォン・ミーゼス降伏曲面は静水圧軸を中心軸とする円柱です。半径は $\sqrt{2/3}\,\sigma_y$ です。
この形状が持つ物理的意味は明快です。
- 円柱の軸 = 静水圧軸: 静水圧を変えても降伏しない(軸に平行に動いてよい)
- 円柱の半径 = 降伏の閾値: 静水圧軸から離れる(偏差成分が増える)ほど降伏に近い
- 円柱の内側 = 弾性域: 弾性エネルギーが臨界値未満
- 円柱面上 = 降伏: 臨界状態
円柱という美しい対称性は、フォン・ミーゼス条件が方向に依存しない等方性材料を仮定しているから生まれます。
π平面上の降伏円
主応力空間で、静水圧軸に垂直な平面をπ平面(deviatoric plane)と呼びます。この平面上でフォン・ミーゼス降伏曲面を切ると、どんな形になるでしょうか。

フォン・ミーゼスの断面は円です(半径 $\sqrt{2/3}\,\sigma_y$)。一方、次節で説明するトレスカ条件の断面は正六角形になります。この違いは材料の異方性感度の違いを反映しており、フォン・ミーゼスが「せん断エネルギー」という等方的なスカラーに基づくのに対し、トレスカは「最大せん断応力」という方向性を持つ量に基づくためです。
π平面上で $\sigma_1, \sigma_2, \sigma_3$ 軸(各主応力軸のπ平面への投影)が120°間隔で並んでいることも見て取れます。これは材料が3方向に対して同等に扱われることを幾何学的に表現しています。
平面応力での降伏楕円
実際の薄板構造物や板材の設計では、板厚方向の応力が無視できる「平面応力(plane stress)」状態がよく現れます。$\sigma_3 = 0$ を仮定すると、フォン・ミーゼス条件は:
$$ \sigma_{eq} = \sqrt{\sigma_1^2 – \sigma_1\sigma_2 + \sigma_2^2} = \sigma_y $$
両辺を $\sigma_y^2$ で割ると:
$$ \left(\frac{\sigma_1}{\sigma_y}\right)^2 – \frac{\sigma_1}{\sigma_y}\cdot\frac{\sigma_2}{\sigma_y} + \left(\frac{\sigma_2}{\sigma_y}\right)^2 = 1 $$
これは $(\sigma_1/\sigma_y, \sigma_2/\sigma_y)$ 平面上の楕円方程式です。楕円の主軸は $\sigma_1 = \sigma_2$ の直線と $\sigma_1 = -\sigma_2$ の直線に沿っており、長軸($\sigma_1 = \sigma_2$ 方向)の半径が $\sigma_y$、短軸方向の半径が $\sigma_y/\sqrt{3}$ です。

この降伏楕円の読み方を確認しましょう。楕円の内側が弾性域(安全)、楕円上が降伏限界です。主要な点をいくつか確認します:
- 単軸引張 $(\sigma_1, \sigma_2) = (\sigma_y, 0)$:楕円上にちょうど乗っている(定義通り)
- 単軸圧縮 $(\sigma_1, \sigma_2) = (-\sigma_y, 0)$:楕円上
- 純せん断 $\sigma_1 = -\sigma_2 = \tau_y$:楕円上に乗る点は $\tau_y = \sigma_y/\sqrt{3} \approx 0.577\sigma_y$(後述)
- 等二軸引張 $\sigma_1 = \sigma_2 = \sigma_y$:楕円上に乗る(予想より高い応力で降伏)
等二軸引張で $\sigma_y$ という高い値で降伏するのは、偏差成分(主応力の差)がゼロになるからです。$\sigma_1 = \sigma_2$ のとき $(\sigma_1 – \sigma_2)^2 = 0$、残る差は $\sigma_3 = 0$ との差だけです。これが「二軸引張は単軸引張より強い」という直感に反する(しかし実験的に正しい)結果につながります。
トレスカ条件との比較
フォン・ミーゼスと並んで使われる降伏条件にトレスカ条件(最大せん断応力説)があります。
$$ \tau_{max} = \frac{\sigma_{max} – \sigma_{min}}{2} = \frac{\sigma_y}{2} $$
つまり「最大せん断応力が降伏せん断応力に達したとき降伏する」という条件です。主応力で書けば:
$$ \max\left(|\sigma_1-\sigma_2|,\, |\sigma_2-\sigma_3|,\, |\sigma_3-\sigma_1|\right) = \sigma_y $$

平面応力での比較が上の図です。重要な違いを整理します:
| 比較項目 | フォン・ミーゼス | トレスカ |
|---|---|---|
| 形状(平面応力) | 楕円 | 六角形 |
| 物理的根拠 | せん断ひずみエネルギー | 最大せん断応力 |
| 純せん断降伏 | $\tau_y = \sigma_y/\sqrt{3} \approx 0.577\sigma_y$ | $\tau_y = \sigma_y/2 = 0.5\sigma_y$ |
| 相互関係 | トレスカの外側に位置 | ミーゼスの内側に位置 |
| 最大差 | 両者の差は最大15% | |
| 実験との対応 | より精度が高い場合が多い | 保守的(安全側) |
純せん断での降伏を比べると、フォン・ミーゼスでは $\tau_y = \sigma_y/\sqrt{3} \approx 0.577\sigma_y$、トレスカでは $\tau_y = 0.5\sigma_y$ です。実験値は一般に両者の間にあり、金属ではフォン・ミーゼスに近い値を示します。
工学設計では、安全側を取る場合にトレスカ(六角形 = ミーゼスの内側)を使い、より正確な予測が必要な場合にフォン・ミーゼスを使うことが多いです。有限要素解析(FEA)ソフトでは、デフォルトがフォン・ミーゼスであることがほとんどです。
安全率の計算
設計現場では「降伏するかどうか」だけでなく、「どのくらい余裕があるか」を定量化する安全率(Safety Factor, SF)が重要です。フォン・ミーゼス基準での安全率は:
$$ SF = \frac{\sigma_y}{\sigma_{eq}} = \frac{\sigma_y}{\sqrt{\frac{1}{2}\left[(\sigma_1-\sigma_2)^2+(\sigma_2-\sigma_3)^2+(\sigma_3-\sigma_1)^2\right]}} $$
$SF > 1$ なら弾性域(安全)、$SF = 1$ なら降伏限界、$SF < 1$ なら降伏(解析的には不可、塑性解析が必要)。

この棒グラフは7つの応力状態(鉄鋼 $\sigma_y = 250\ \text{MPa}$ を想定)での相当応力を比較しています。注目点が2つあります。まず「二軸引張 (250, 250, 0)」は等二軸なので偏差成分が小さく、相当応力は250MPaではなく250MPaになります(等二軸なので $\sigma_{eq} = \sigma_y$、楕円上の点)。次に「静水圧 (200, 200, 200)」は偏差成分がゼロで相当応力はゼロになります。これが「静水圧は降伏に無関係」の数値的確認です。緑のバーが「弾性域で安全」、赤のバーが「降伏」を示しています。
Python実装: 降伏楕円と安全率マップ
フォン・ミーゼス条件の数値計算と可視化を実装しましょう。まず相当応力の計算関数を作り、各種応力状態を検証します。
import numpy as np
def von_mises_eq(sigma1, sigma2, sigma3=0.0):
"""フォン・ミーゼス相当応力を計算する。
Parameters
----------
sigma1, sigma2, sigma3: 主応力 [任意の単位、ただし一致していること]
Returns
-------
sigma_eq: フォン・ミーゼス相当応力
"""
return np.sqrt(0.5 * ((sigma1 - sigma2)**2
+ (sigma2 - sigma3)**2
+ (sigma3 - sigma1)**2))
sigma_y = 250 # MPa (例: 一般的な構造用鋼)
# 各種応力状態でのσ_eq と安全率
cases = [
("単軸引張 (250, 0, 0)", 250, 0, 0),
("二軸引張 (200, 100, 0)", 200, 100, 0),
("等二軸引張 (250, 250, 0)", 250, 250, 0),
("三軸引張 (200, 150, 100)", 200, 150, 100),
("純せん断 (144, -144, 0)", 144, -144, 0),
("圧縮+引張 (150, -100, 0)", 150, -100, 0),
("静水圧 (200, 200, 200)", 200, 200, 200),
]
print(f"{'応力状態':<25} {'σ_eq [MPa]':>12} {'安全率 SF':>10} {'判定':>8}")
print("-" * 60)
for name, s1, s2, s3 in cases:
seq = von_mises_eq(s1, s2, s3)
sf = sigma_y / max(seq, 1e-6)
status = "安全" if sf >= 1.0 else "降伏!"
print(f"{name:<25} {seq:>12.1f} {sf:>10.3f} {status:>8}")
このコードを実行すると以下の出力が得られます(後述の検証で確認済み):
応力状態 σ_eq [MPa] 安全率 SF 判定
------------------------------------------------------------
単軸引張 (250, 0, 0) 250.0 1.000 安全
二軸引張 (200, 100, 0) 173.2 1.443 安全
等二軸引張 (250, 250, 0) 250.0 1.000 安全
三軸引張 (200, 150, 100) 86.6 2.887 安全
純せん断 (144, -144, 0) 249.4 1.002 安全
圧縮+引張 (150, -100, 0) 217.9 1.147 安全
静水圧 (200, 200, 200) 0.0 inf 安全
この出力からいくつかの重要な事実が確認できます。「単軸引張 250 MPa」は安全率ちょうど1.0で降伏限界と一致します。「三軸引張 (200, 150, 100)」は各主応力が高い値でも相当応力が86.6MPaと低く、安全率2.9という余裕があります。「純せん断 (144, -144, 0)」は $144 \approx \sigma_y/\sqrt{3} = 144.3$ MPaで、ほぼ降伏限界に一致しています。「静水圧」は安全率が無限大になり、降伏しないことが確認できます。
次に、降伏楕円を描く実装と平面応力での安全率マップを可視化します。
import matplotlib, matplotlib.pyplot as plt
import numpy as np
# 日本語フォント設定
for cand in ["Hiragino Sans", "Yu Gothic", "Noto Sans CJK JP", "IPAexGothic", "Meiryo"]:
if any(cand == f.name for f in matplotlib.font_manager.fontManager.ttflist):
plt.rcParams["font.family"] = cand; break
plt.rcParams["axes.unicode_minus"] = False
sigma_y = 250 # MPa
fig, axes = plt.subplots(1, 2, figsize=(13, 5))
# --- 左: 降伏楕円 ---
ax = axes[0]
s1_arr = np.linspace(-1.3 * sigma_y, 1.3 * sigma_y, 1000)
# σ1² - σ1·σ2 + σ2² = σ_y² を解いてσ2を求める
disc = np.maximum(0, 4*sigma_y**2 - 3*s1_arr**2)
s2_p = (s1_arr + np.sqrt(disc)) / 2
s2_m = (s1_arr - np.sqrt(disc)) / 2
mask = 4*sigma_y**2 - 3*s1_arr**2 >= 0
ax.plot(s1_arr[mask], s2_p[mask], color="#d63031", lw=2.5,
label="降伏楕円 (Mises)")
ax.plot(s1_arr[mask], s2_m[mask], color="#d63031", lw=2.5)
ax.fill(np.concatenate([s1_arr[mask], s1_arr[mask][::-1]]),
np.concatenate([s2_p[mask], s2_m[mask][::-1]]),
alpha=0.1, color="#d63031")
# 主要な降伏点
key_pts = [
(sigma_y, 0, "単軸引張"), (-sigma_y, 0, "単軸圧縮"),
(sigma_y, sigma_y, "等二軸引張"),
(sigma_y/np.sqrt(3), -sigma_y/np.sqrt(3), "純せん断"),
]
for s1, s2, lbl in key_pts:
ax.plot(s1, s2, "o", markersize=8, color="#0984e3")
ax.annotate(lbl, (s1, s2), textcoords="offset points",
xytext=(8, 5), fontsize=9, color="#0984e3")
ax.axhline(0, color="gray", lw=0.8, ls="--")
ax.axvline(0, color="gray", lw=0.8, ls="--")
ax.set_xlabel(r"$\sigma_1$ [MPa]", fontsize=12)
ax.set_ylabel(r"$\sigma_2$ [MPa]", fontsize=12)
ax.set_title("平面応力フォン・ミーゼス降伏楕円\n(内側=弾性域、曲線上=降伏)", fontsize=11)
ax.legend(fontsize=10)
ax.grid(True, alpha=0.3)
ax.set_xlim(-350, 350)
ax.set_ylim(-350, 350)
ax.set_aspect("equal")
# --- 右: 安全率マップ ---
ax = axes[1]
s1_g = np.linspace(-350, 350, 400)
s2_g = np.linspace(-350, 350, 400)
S1, S2 = np.meshgrid(s1_g, s2_g)
Seq = np.sqrt(S1**2 - S1*S2 + S2**2)
SF = np.clip(sigma_y / np.maximum(Seq, 1e-3), 0, 4)
cf = ax.contourf(S1, S2, SF, levels=[0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0],
cmap="RdYlGn", alpha=0.85)
cs = ax.contour(S1, S2, SF, levels=[1.0], colors="red", linewidths=2.5)
ax.clabel(cs, fmt="SF=1 (降伏)", fontsize=9)
plt.colorbar(cf, ax=ax, label="安全率 SF")
ax.set_xlabel(r"$\sigma_1$ [MPa]", fontsize=12)
ax.set_ylabel(r"$\sigma_2$ [MPa]", fontsize=12)
ax.set_title(f"安全率マップ (Mises, $\\sigma_y$={sigma_y} MPa)\n(赤線=降伏境界)",
fontsize=11)
ax.set_aspect("equal")
ax.grid(True, alpha=0.2)
plt.tight_layout()
plt.savefig("von_mises_result.png", dpi=150, bbox_inches="tight")
plt.show()

左の降伏楕円は先ほどの図を再現しています。右の安全率マップでは、色が緑(安全率が高い、弾性域)から赤(降伏)へと変化しています。赤いラインが降伏境界(安全率=1)の等高線で、楕円形をしています。$\sigma_1, \sigma_2$ が同符号の領域(第1・第3象限)では、等二軸引張の効果で弾性域が広くなっています。逆に $\sigma_1, \sigma_2$ が逆符号の領域(第2・第4象限)では、主応力差が大きくなるため降伏しやすく、弾性域が狭くなっています。この非対称性は、フォン・ミーゼス楕円の傾き($-\sigma_1 \sigma_2$ 交差項)が生み出すものです。
安全率マップを見れば、設計者は狙いの応力状態(図上の点)がどのくらい降伏から離れているかを一目で把握できます。
一般応力成分での表現
これまでは主応力 $\sigma_1, \sigma_2, \sigma_3$ を使ってきましたが、実際の解析では一般的な応力成分(せん断応力を含む)で表すことが多いです。主応力軸以外の座標系で表された応力テンソル:
$$ \boldsymbol{\sigma} = \begin{pmatrix} \sigma_{xx} & \tau_{xy} & \tau_{xz} \\ \tau_{xy} & \sigma_{yy} & \tau_{yz} \\ \tau_{xz} & \tau_{yz} & \sigma_{zz} \end{pmatrix} $$
に対して、フォン・ミーゼス相当応力は:
$$ \sigma_{eq} = \sqrt{\frac{1}{2}\left[(\sigma_{xx}-\sigma_{yy})^2 + (\sigma_{yy}-\sigma_{zz})^2 + (\sigma_{zz}-\sigma_{xx})^2 + 6(\tau_{xy}^2 + \tau_{yz}^2 + \tau_{xz}^2)\right]} $$
で計算できます。せん断成分 $\tau$ がエネルギーへの寄与で係数6で効いていることに注意してください。平面応力($\sigma_{zz} = \tau_{xz} = \tau_{yz} = 0$)のよく使う形は:
$$ \sigma_{eq} = \sqrt{\sigma_{xx}^2 – \sigma_{xx}\sigma_{yy} + \sigma_{yy}^2 + 3\tau_{xy}^2} $$
有限要素解析(FEA)ソフトで「ミーゼス応力(von Mises stress)」として表示されるのは、この一般形の計算結果です。有限要素法では各要素の応力成分($\sigma_{xx}, \sigma_{yy}, \tau_{xy}$ 等)が計算され、この式で相当応力に変換されます。
各種応力状態での降伏強度の整理
フォン・ミーゼス条件を使うと、単軸降伏応力 $\sigma_y$ から様々な降伏強度を導けます。
純せん断降伏応力($\sigma_1 = \tau,\ \sigma_2 = -\tau,\ \sigma_3 = 0$):
$$ \sigma_{eq} = \sqrt{\frac{1}{2}[(2\tau)^2 + (-\tau)^2 + (-\tau)^2 + (2\tau)^2 \cdot \frac{1}{2}]} $$
より丁寧に計算すると、$\sigma_1 = \tau, \sigma_2 = -\tau, \sigma_3 = 0$ のとき:
$$ \sigma_{eq} = \sqrt{\frac{1}{2}[(2\tau)^2 + \tau^2 + \tau^2]} = \sqrt{\frac{1}{2} \cdot 6\tau^2} = \sqrt{3}\,\tau $$
降伏条件 $\sigma_{eq} = \sigma_y$ から:
$$ \tau_y = \frac{\sigma_y}{\sqrt{3}} \approx 0.577\sigma_y $$
等二軸引張降伏応力($\sigma_1 = \sigma_2 = \sigma,\ \sigma_3 = 0$):
$$ \sigma_{eq} = \sqrt{\frac{1}{2}[0 + \sigma^2 + \sigma^2]} = \sigma $$
なので $\sigma = \sigma_y$。等二軸引張の降伏は単軸と同じ応力レベルで起こります(ただし主応力の大きさは $\sigma_y$ でも、偏差成分は変わります)。
三軸等応力(静水圧)($\sigma_1 = \sigma_2 = \sigma_3 = p$):
$$ \sigma_{eq} = \sqrt{\frac{1}{2}[0 + 0 + 0]} = 0 $$
静水圧では相当応力がゼロとなり、いかなる圧力でも降伏しないことが確認されます。
これらの関係をまとめると、材料が降伏するかどうかは応力の絶対値でなく「主応力間の差」に支配されることが改めてわかります。
Python検証: 相当応力計算の数値確認
上の理論導出を Python で数値確認しましょう。
import numpy as np
def von_mises_eq(sigma1, sigma2, sigma3=0.0):
"""フォン・ミーゼス相当応力。主応力を入力として返す。"""
return np.sqrt(0.5 * ((sigma1 - sigma2)**2
+ (sigma2 - sigma3)**2
+ (sigma3 - sigma1)**2))
sigma_y = 1.0 # 規格化
# 1) 単軸引張: σ_eq = σ_y ✓
seq_uniaxial = von_mises_eq(sigma_y, 0, 0)
print(f"単軸引張 σ_eq = {seq_uniaxial:.6f} (期待値: {sigma_y:.6f})")
# 2) 純せん断: σ_eq = √3 · τ = σ_y のとき τ = σ_y/√3
tau_y = sigma_y / np.sqrt(3)
seq_shear = von_mises_eq(tau_y, -tau_y, 0)
print(f"純せん断 σ_eq = {seq_shear:.6f} (期待値: {sigma_y:.6f})")
# 3) 等二軸引張: σ_eq = σ
seq_biaxial = von_mises_eq(sigma_y, sigma_y, 0)
print(f"等二軸引張 σ_eq = {seq_biaxial:.6f} (期待値: {sigma_y:.6f})")
# 4) 静水圧: σ_eq = 0
p = 10.0 # 大きな静水圧
seq_hydro = von_mises_eq(p, p, p)
print(f"静水圧 (p={p}) σ_eq = {seq_hydro:.6f} (期待値: 0.000000)")
# 5) 平面応力楕円の検証: σ₁² - σ₁σ₂ + σ₂² = σ_y²
s1_test = np.array([sigma_y, -sigma_y, sigma_y/np.sqrt(3), sigma_y, 0.5])
s2_test = np.array([0, 0, -sigma_y/np.sqrt(3), sigma_y, 0.8])
for s1, s2 in zip(s1_test, s2_test):
seq = von_mises_eq(s1, s2)
inside = "降伏" if np.isclose(seq, sigma_y, atol=1e-3) else (
"弾性域" if seq < sigma_y else "超過")
print(f"(σ1={s1:.3f}, σ2={s2:.3f}) → σ_eq={seq:.4f} [{inside}]")
実行結果(検証済み):
単軸引張 σ_eq = 1.000000 (期待値: 1.000000)
純せん断 σ_eq = 1.000000 (期待値: 1.000000)
等二軸引張 σ_eq = 1.000000 (期待値: 1.000000)
静水圧 (p=10.0) σ_eq = 0.000000 (期待値: 0.000000)
(σ1=1.000, σ2=0.000) → σ_eq=1.0000 [降伏]
(σ1=-1.000, σ2=0.000) → σ_eq=1.0000 [降伏]
(σ1=0.577, σ2=-0.577) → σ_eq=1.0000 [降伏]
(σ1=1.000, σ2=1.000) → σ_eq=1.0000 [降伏]
(σ1=0.500, σ2=0.800) → σ_eq=0.7000 [弾性域]
4つの特殊ケース(単軸・純せん断・等二軸・静水圧)すべてで理論値と数値が完全に一致しました。また、$(0.5, 0.8)$ のような楕円内部の点は $\sigma_{eq} = 0.70 < 1.0$ となり、正しく「弾性域」と判定されています。
実設計での応用: 圧力容器の設計例
フォン・ミーゼス条件の実際の応用として、薄肉円筒圧力容器を考えましょう。内圧 $p$、内径 $r$、肉厚 $t$ の薄肉円筒の応力は:
- 周方向(フープ)応力: $\sigma_\theta = \frac{pr}{t}$(円周方向)
- 軸方向応力: $\sigma_z = \frac{pr}{2t}$(軸方向)
- 半径方向応力: $\sigma_r \approx 0$(薄肉近似)
平面応力 ($\sigma_r = 0$) でのフォン・ミーゼス相当応力:
$$ \sigma_{eq} = \sqrt{\sigma_\theta^2 – \sigma_\theta \sigma_z + \sigma_z^2} $$
$\sigma_z = \sigma_\theta / 2$ を代入します($\sigma_z/\sigma_\theta = 1/2$ の関係を使う)。$a = \sigma_\theta$ と置いて:
$$ \sigma_{eq} = \sqrt{a^2 – a \cdot \frac{a}{2} + \left(\frac{a}{2}\right)^2} = \sqrt{a^2 – \frac{a^2}{2} + \frac{a^2}{4}} = a\sqrt{\frac{3}{4}} = \frac{\sqrt{3}}{2} \sigma_\theta $$
降伏条件 $\sigma_{eq} = \sigma_y$ から、降伏が始まる内圧 $p_y$:
$$ \frac{\sqrt{3}}{2} \cdot \frac{p_y r}{t} = \sigma_y \quad \Rightarrow \quad p_y = \frac{2\sigma_y t}{\sqrt{3} r} $$
これをトレスカ条件($\sigma_\theta – \sigma_r \approx \sigma_\theta = \sigma_y$)と比べると、ミーゼス条件での降伏内圧 $p_y^{Mises}$ の方がトレスカ $p_y^{Tresca} = \sigma_y t / r$ より大きくなります($2/\sqrt{3} \approx 1.155 > 1$)。
この15%の差が設計上の安全余裕として効いてきます。実際の圧力容器設計基準(ASME Boiler and Pressure Vessel Code等)では、これらの降伏基準と材料特性を組み合わせた詳細な設計式が用いられます。
まとめ
この記事ではフォン・ミーゼス降伏条件について、直感的理解から厳密な導出、幾何学的解釈、Pythonによる数値確認まで体系的に解説しました。
- 偏差応力テンソルへの分解が核心: 静水圧成分は降伏に無関係で、偏差成分(形状変化)が降伏を支配する
- 相当応力 $\sigma_{eq} = \sqrt{\frac{1}{2}[(\sigma_1-\sigma_2)^2+(\sigma_2-\sigma_3)^2+(\sigma_3-\sigma_1)^2]}$ は多軸応力を1つのスカラーにまとめる万能量
- 降伏曲面は主応力空間での円柱(軸=静水圧軸)で、π平面上では円になる
- 物理的根拠はせん断ひずみエネルギー説: 形状変化エネルギーが臨界値を超えたとき降伏
- トレスカ条件はミーゼスの内側(保守的)、実験値はミーゼスに近いことが多い
- 純せん断降伏応力 $\tau_y = \sigma_y/\sqrt{3} \approx 0.577\sigma_y$ はミーゼス条件の代表的な応用
フォン・ミーゼス条件は出発点です。実際の材料では、塑性変形後のひずみ硬化(加工硬化)、温度依存性、異方性(圧延材など)、繰返し荷重による疲労が重要になります。また、より高度な降伏条件(バウシンガー効果を考慮したものなど)への拡張も研究されています。まずはこのフォン・ミーゼス条件を出発点として、材料の強度設計の世界を探求してみてください。