製造解の方法(MMS)の概要と手順

カテゴリ: V&V・製造解の方法 | 2026-10-01 改稿
CAE visualization for mms overview theory - technical simulation diagram
MMS(製造解法)の概要と手順

理論:解を先に決める

概要

🙋

自作の熱解析のコードを検証したいのですが、熱伝導率が温度で変わる問題には厳密解が見つかりません。どうすればいいですか?

🎓

製造解の方法(MMS)を使おう。発想を逆にして、先に『こうなってほしい解』を決めてしまうんだ。その解を方程式に代入すると、左辺と右辺が合わない分が出てくる。それを源項として方程式に足してやれば、決めた解がその方程式のちょうどの解になる。あとはその源項を入れてコードで解き、格子を細かくしていったとき、誤差がスキームの理論どおりの速さで減るかを確かめる。解が見た目で合っているかではなく、誤差の減り方で判定するのがポイントだよ。

例題の方程式

$$ -\frac{d}{dx}\left(k(u)\frac{du}{dx}\right) = f(x), \qquad k(u) = 1 + u^2, \qquad u_{MMS} = \sin(\pi x) + x $$

熱伝導率が解に依存する非線形の拡散方程式。製造解は滑らかで、両端で0と1になる形を選んだ。

源項と収束次数

$$ f(x) = -\frac{d}{dx}\left(k(u_{MMS})\frac{du_{MMS}}{dx}\right), \qquad p_{obs} = \frac{\ln(e_{2h}/e_h)}{\ln 2} $$

源項は記号計算(sympyなど)で求めると、手計算の誤りを防げる。格子幅を半分にしたときの誤差の比から、見かけの収束次数を求める。

Coffee Break よもやま話

解を作るという逆転の発想

解析解のある問題は数が限られ、実際のソフトが扱う非線形・多次元・複雑な境界の方程式には、ほとんど使えない。1980年代にスタインバーグとローチが、解を先に決めて源項で方程式を合わせる方法を示し、2000年代にローチやサリ、ノウプらが、プログラムの検証の標準的な手順として整理した。いまでは乱流モデルを含む流体のコードや、固体・熱・電磁気のソフトの検証に広く使われ、ASMEの検証の規格でもコードの検証の中心的な方法とされている。

計算例:小さなバグを見つける

有限差分で、面の熱伝導率を両隣の平均の温度で評価する正しい実装と、左側の値だけで評価する誤った実装(1文字の違い)を比べた。ピカール反復で解き、節点の最大誤差を求めた。

分割数正しい実装の誤差次数誤った実装の誤差次数
101.13×10⁻²—4.62×10⁻²—
202.85×10⁻³1.982.13×10⁻²1.11
407.10×10⁻⁴2.001.04×10⁻²1.03
801.78×10⁻⁴2.005.15×10⁻³1.02
1604.44×10⁻⁵2.002.56×10⁻³1.01
🙋

誤った実装でも誤差は1%くらいで、格子を細かくすれば減っていくんですね。これだと気づけなさそうです。

🎓

そこがMMSの強みだ。誤差の大きさだけ見ると、誤った実装も『だいたい合っていて、細かくすれば良くなる』ように見える。グラフに描けば製造解とほとんど重なるだろう。でも誤差の減り方は、正しい実装が2次、誤った実装が1次で、はっきり違う。面の係数を片側の値で評価したことで、2次精度のはずのスキームに1次の誤差が入り込んだんだ。実際の問題では、この差が細かい格子でも消えない数%の誤差として残る。MMSは、見た目では分からない誤りを、次数という数字で浮かび上がらせてくれる。

手順とコツ

  1. すべての項(対流・拡散・源・非線形の係数)がきちんと効く製造解を選ぶ。単純すぎる解は誤りを隠す。
  2. 源項と境界条件は記号計算で求め、コードに自動で書き出す。
  3. 4段階以上の格子で解き、誤差のノルムと次数を求める。
  4. 境界条件・格子の種類・非線形の反復の設定を変えて、それぞれ確かめる。
  5. 結果を自動テストにして、コードを変えるたびに次数を確かめる。
Coffee Break よもやま話

「境界だけ1次」

ある流体のコードをMMSで検証したら、内部の格子点の誤差は2次で減るのに、全体の最大誤差は1次でしか減らなかった——という例がある。誤差の分布を見ると、壁の境界の隣の点だけで誤差が大きく、境界条件の実装が1次精度になっていた。壁でのこう配を片側の差分で近似していたのが原因で、2次の片側差分に直すと全体が2次になった。MMSでは、誤差の大きさだけでなく分布も見ると、誤りの場所まで特定できる。

よくある間違い

間違いと対策

間違い起きること対策
誤差の大きさだけで判断次数の低下を見落とす次数を必ず求める
単純すぎる製造解一部の項が効かず誤りが隠れるすべての項が効く解
源項を手計算源項自体の誤り記号計算で自動化
反復の収束が不十分次数が乱れる厳しい収束判定
格子2つで判断漸近範囲か分からない4段階以上
🙋

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

関連シミュレーター

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

シミュレーター一覧

関連する分野

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