MMS: 2次元弾性体 — トラブルシューティングガイド
より充実した内容を mms-elasticity-2d.html でご覧いただけます。
2次元弾性MMSの構成と壊れどころ
弾性体のMMSは、変位の製造解 \( \mathbf{u}_m(x,y) \) を選び、釣り合い式に代入して体積力ソースを導出します。
$$ \mathbf{b} = -\nabla\cdot\boldsymbol{\sigma}(\mathbf{u}_m), \qquad \boldsymbol{\sigma} = \mathbb{C} : \boldsymbol{\varepsilon}(\mathbf{u}_m) $$
境界条件も製造解から与えます:変位境界には \( \mathbf{u}_m \) を、トラクション境界には \( \mathbf{t} = \boldsymbol{\sigma}(\mathbf{u}_m)\cdot\mathbf{n} \) を。誤差ノルムは変位(\( L^2 \):次数 \( k+1 \))と応力・エネルギーノルム(次数 \( k \))で別々に評価します。熱伝導MMSとの違いは、①ベクトル場ゆえの成分間の取り違え、②弾性定式化の選択肢(平面応力/ひずみ)、③ロッキングという弾性特有の病理——の3点で、トラブルもこの3点に集中します。
症状1: 全体的に次数は出るが値が数%系統的にずれる
収束次数はきれいに2次なんですが、誤差の絶対値がいつまでも大きいというか、別の解に収束している気がして…。
「きれいに収束するのに違う答え」は、ソース項導出とソルバーの定式化不一致の典型サインだよ。2次元弾性で最頻出なのは平面応力と平面ひずみの取り違え——構成則の \( \mathbb{C} \) が違うから、SymPyで平面ひずみのσを導出してソルバーは平面応力で解けば、互いに矛盾のない「別の問題」を正確に解いてしまう。ヤング率・ポアソン比の定義(Eとνか、ラメのλとμか)も同じ罠がある。ソルバーのマニュアルにある構成則の式を、導出スクリプトにそのまま書き写すのが唯一の予防策だ。
症状2: トラクション境界を入れると次数が落ちる
- 法線の向き — \( \mathbf{t} = \boldsymbol{\sigma}\cdot\mathbf{n} \) の \( \mathbf{n} \) は外向き法線。辺ごとに符号を取り違えると、その辺の近傍だけ誤差が集中する(誤差の空間分布で即発見できる)
- 成分の取り違え — 左右の辺で \( t_x = \sigma_{xx} n_x + \sigma_{xy} n_y \) 等の成分合成を辺別に確認。「上下の辺だけ間違える」パターンが多い
- 境界積分の精度 — 空間変化するトラクションを等価節点力に落とす積分の次数不足。積分点を増やして感度確認
- 角の扱い — 角で2辺のトラクションが同一節点に集まる。等価節点力の重複・欠落がないか
切り分けの定石は「全周変位境界」でまず次数を出すこと。そこで合格なら内部の離散化とソース項は無罪で、トラクション境界の実装だけを単離して調べられます(MMS共通の境界切り分け術)。
症状3: ν→0.5で次数・精度が崩壊する(体積ロッキング)
ポアソン比を0.49、0.499と上げると、1次(および標準の低次)要素の変位解が急激に硬く・不正確になります。これはバグではなく非圧縮限界での体積ロッキングという定式化の限界で、MMSはこれを定量的に暴く最良の道具です。対応は2段階です。
- 診断として使う — ν=0.3では公称次数、ν=0.499で誤差が桁で悪化するなら、それは標準変位法の想定通りの挙動。「コードは正しい」ことの確認になる
- 対策済み定式化を検証する — B-bar・選択的低減積分・混合(u-p)要素・非適合要素などロッキングフリー定式化に切り替え、ν=0.4999でも次数が保たれることをMMSで実証する。これが「非圧縮に耐える」という主張の検証可能な形
同様に、細長い曲げ支配の製造解(薄い梁状領域+曲げ変形)を使うとせん断ロッキングも検出できます。MMSは「正しく解けるか」だけでなく「要素の病理がどの条件で発症するか」の系統試験としても使えるのです。
症状4: 導出は正しいのに次数が0.5〜1次分だけ足りない
体積力 \( \mathbf{b} \) の実装側の精度不足が典型です。①要素荷重の積分次数——空間変化の激しい体積力を既定の積分点数で等価節点力化すると、積分誤差が離散化誤差を上回る(対策:積分次数を上げて感度確認、または製造解の波数を下げる)。②節点集中近似——体積力を「節点値×節点体積」で与える実装は1次精度しかなく、2次要素の次数を汚す。③時間項なし・純弾性のはずが動解析ソルバーで解いて慣性が混入、という設定ミスもまれにあります。ソース項の乱数点照合が合っているのに次数が出ないなら、この「注入経路の精度」を疑ってください。
症状5: 特異行列で解けない・拘束を足したら次数が落ちた
全周トラクション境界の検証では剛体モード(並進2+回転1)が拘束されず特異になります。対処は、①製造解の値で最小限の変位拘束(1点で \( u_x, u_y \)、もう1点で回転を止める1成分——いずれも製造解の厳密値を与える)、②ゼロ固定にしてしまうと製造解と矛盾して境界誤差を注入する点に注意、です。「拘束を足したら精度が落ちた」の原因はほぼ②——拘束点にも \( \mathbf{u}_m \) の値を入れる、を徹底します。
2次元弾性向け製造解の設計メモ
- 基本形 — \( u_m = A\sin(\pi x)\cos(\pi y) \)、\( v_m = B\cos(\pi x)\sin(\pi y) \) のような三角関数系。全ひずみ成分が非自明になる係数を選ぶ
- 検証目的別に使い分け — 次数検証は滑らかな低波数解/ロッキング診断は曲げ支配・非圧縮に近い解/トラクション検証は境界で応力が非零の解
- 2次要素の超収束に注意 — 多項式(2次以下)の製造解は2次要素で厳密に再現され誤差ゼロ=次数が測れない。三角関数か3次以上を使う
- 厳密解ベンチマークとの併用 — 円孔付き無限板(Kirsch解)等の古典解は、ソース項注入なしの独立チェックとして相補的(解析解検証の作法と同じ役割分担)
チェックリスト
- ソルバーの構成則(平面応力/ひずみ・弾性定数の定義)を導出スクリプトに転記したか
- ソース項・トラクションの乱数点照合(数値微分)を通したか
- 全周変位境界→トラクション境界の順で切り分けたか
- 体積力の積分次数の感度を確認したか
- 拘束点に製造解の厳密値を与えたか(ゼロ固定にしていないか)
- 変位とエネルギー/応力ノルムそれぞれの理論次数と比較したか
- ν=0.3と0.499の両方で挙動を記録したか(ロッキングの有無の証明)
熱伝導のMMSはすぐできたのに、弾性は確認事項が多いですね…。
増えた分はすべて「ベクトル場と定式化の自由度」の分で、逆に言えば弾性MMSを一度通せば、成分・構成則・境界・要素病理のチェック観点が全部手に入る。おすすめは熱伝導→弾性→(必要なら)非圧縮・大変形と段階を上げる順路だ。そして弾性MMSの隠れた価値は要素選定の実証データになること——「うちの標準要素はν=0.499でロッキングする/しない」を自分の環境の数字で言えるのは、教科書の一般論より強い。検証インフラは一度作れば資産、はここでも同じだよ。
関連記事:MMS: 2次元熱伝導のトラブルシュート、ソース項導出のトラブルシュート、収束次数算出のトラブルシュート。
関連トピック
なった
詳しく
報告