MMS: 2次元弾性体

カテゴリ: V&V・製造解法(MMS) | 2026-10-01 改稿
CAE visualization for mms elasticity 2d theory - technical simulation diagram
MMS: 2次元弾性体

理論:答えを先に決めてコードを試す

概要

🙋

自分で書いた有限要素法のコードが正しいか、どう確かめればいいですか?厳密解のある問題は少ないですよね。

🎓

そこで製造解法(MMS)を使う。答えになる変位を先に好きに決めて、それが成り立つように体積力を逆算する。するとどんな形でも厳密解のある問題が作れる。あとはメッシュを細かくしたとき、誤差が理論どおりの速さで減るかを見る。速さ(収束次数)まで一致すれば、式の組み立てから数値積分、境界条件まで、コードのほとんどが正しいと言える。実際に自作のコードで確かめ、わざとバグを入れてどう見えるかも試してみよう。

製造解と体積力

$$ u_x = 0.1\sin(\pi x)\sin(2\pi y),\qquad u_y = 0.1\cos(\pi x)\sin(\pi y),\qquad \mathbf{b} = -\nabla\cdot\boldsymbol{\sigma}(\mathbf{u}) $$

単位正方形、平面応力、ヤング率1、ポアソン比0.3。体積力 $\mathbf{b}$ は数式処理(sympy)で導いた。境界はすべて製造解の変位を与える。

理論の収束次数

$$ \|\mathbf{u}-\mathbf{u}_h\|_{L^2} = O(h^{p+1}),\qquad |\mathbf{u}-\mathbf{u}_h|_{H^1} = O(h^{p}),\qquad p_{obs} = \log_2\frac{e_{2h}}{e_h} $$

$p$ は要素の次数(Q4は1、Q8は2)。$p_{obs}$ は分割を2倍にしたときの誤差の比から求める観測次数。

Coffee Break よもやま話

『答えを作る』という逆転の発想

製造解法の考え方は1980年代から使われていたが、コード検証の方法として広めたのは、Roache や、アメリカのサンディア国立研究所の Salari と Knupp らだ。2000年前後の報告書や論文で、製造解を使って収束次数を確かめる手順を整理し、『次数が合えば、次数に影響するすべての誤りがないと言える』と示した。厳密解を探すのではなく作るという逆転の発想で、どんな方程式やコードにも使えるようになった。

計算例:自作コードの収束

正しいコード

要素・分割変位誤差 L2次数勾配誤差 H1次数
Q4, 82.25e-32.047.74e-20.99
Q4, 165.58e-42.013.88e-21.00
Q4, 321.39e-42.001.94e-21.00
Q4, 643.48e-52.009.70e-31.00
Q8, 81.41e-42.937.37e-32.00
Q8, 161.78e-52.991.85e-32.00
Q8, 322.23e-63.004.62e-42.00

バグを仕込んだコード

要素・分割変位誤差 L2次数
Q4・ν誤り, 82.55e-31.88
Q4・ν誤り, 161.22e-31.06
Q4・ν誤り, 321.07e-30.19
Q4・ν誤り, 641.06e-30.02
Q8・中点誤り, 84.42e-42.23
Q8・中点誤り, 161.05e-42.08
Q8・中点誤り, 322.56e-52.03
🙋

ポアソン比のバグは、8分割までだと次数が1.9で、正常に見えますね。

🎓

粗いメッシュでは離散化の誤差の方が大きいので、バグによる小さなずれが隠れてしまう。メッシュを細かくして離散化の誤差が小さくなると、バグによるずれ1.1×10⁻³がそのまま残り、次数が0に落ちる。だから少なくとも4段階の分割で、次数が理論値に落ち着くことを確かめる必要がある。Q8の中点のバグはもっと見つけにくい。誤差は小さいままで、次数だけが3から2に下がる。境界の値を直線でつないだために、2次要素の力が境界で生かされていないのだ。誤差の大きさではなく次数を見るMMSだからこそ見つかるバグだ。

MMSの進め方

  1. すべての項(ひずみの各成分、境界)が効くように、なめらかで非自明な製造解を選ぶ。
  2. 体積力は数式処理で導き、手計算のミスを避ける。
  3. 分割を2倍ずつ4段階以上変え、観測次数を表にする。
  4. 変位(L2)と勾配(H1)の両方の次数を確かめる。
  5. 誤差の積分は十分な点数のガウス積分で行い、積分誤差を混ぜない。
Coffee Break よもやま話

「ベンチマークは合ったのに」

ある研究室のコードは、いくつかのベンチマークで参照値と1%以内で一致していたため、正しいと考えられていた。MMSで調べると、応力の誤差の次数が理論値より0.5ほど低かった。原因は、曲がった境界で荷重を積分するときに使う点の数が足りないことだった。ベンチマークの参照値との比較は、誤差がある程度以下かどうかしか教えてくれないが、MMSの次数は、どこかに誤りがあることを敏感に示す。

よくある間違い

間違いと対策

間違い起きること対策
分割が2〜3段階だけバグが隠れる4段階以上
誤差の大きさだけ見る次数の低下を見逃す観測次数を計算
製造解が単純すぎる一部の項が試されない全成分が効く関数
体積力を手で導出式の誤りが混ざる数式処理を使う
誤差の積分点が少ない次数を誤る高次のガウス積分
🙋

関連する内容も知りたいです。

🎓

関連するページはMMSの概要、MMS:2次元熱伝導、MMSの収束次数、コード検証、NAFEMS LE1が参考になる。

関連シミュレーター

この分野のインタラクティブシミュレーターで理論を体感しよう

シミュレーター一覧

関連する分野

構造解析流体解析熱解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0