特異行列エラー
特異行列
先生、「Singular matrix」エラーが出ました。
理論と物理
特異行列の数学的意味
特異行列エラーが出たんですが、「特異」って具体的にどういう状態を指しているんですか?
連立一次方程式
「機構」状態というのは、例えばどういうモデルで起こるんですか?
典型的なのは拘束不足だ。3次元の梁要素1本だけをモデル化し、どちらの端も完全に固定していない場合、梁は空間中で並進・回転の6自由度全てに対して剛性を持たない。Abaqus/Standardでこれを実行すると、「NUMERICAL SINGULARITY」警告と共に、変位が1.0E+30といった非現実的な値になる。
材料特性や要素タイプが原因になることはありますか?
もちろんある。ヤング率を誤って0や極小値(例:1.0E-20 Pa)に設定すると、材料自体が剛性をほとんど持たなくなる。また、シェル要素で曲げ剛性のみを持つが面内剛性を持たない「膜要素」を誤使用した場合、面内方向が機構化して特異行列の原因となる。
数値解法と実装
ソルバーが特異性を検出する仕組み
ソフトはどうやって特異行列を検出しているんですか?計算途中で行列式を毎回計算するのは大変じゃないですか?
その通りで、大規模なマトリックスでは行列式を直接計算しない。直接法ソルバー(例:Ansysのスパース直接ソルバー)では、マトリックスをLU分解する過程で対角項(ピボット)が極端に小さくなることで検出する。具体的には、ピボットの絶対値が
反復法ソルバー(例えばCG法)でも同じエラーが出ますか?
出るが、挙動が異なる。共役勾配法(CG法)は正定値対称行列を前提とする。マトリックスが特異(正定値でない)だと、反復が進まない、残差が減らない、または「非正定値マトリックス」といった別のエラーメッセージになることが多い。AnsysのPCGソルバーでは「Pivot value less than tolerance」というメッセージが出る。
特異行列でも「解」が得られることがあると聞きました。それはなぜですか?
疑似逆行列を利用するからだ。特異な連立方程式
実践ガイド
エラー発生時の体系的な確認手順
特異行列エラーが出たとき、最初に何をチェックすべきですか?
まずは「境界条件の完全性」だ。3D固体モデルなら、並進3自由度と回転3自由度の計6自由度全てが過不足なく拘束されているか確認する。単純支持では不十分で、剛体移動が残っていないかチェックする。Ansys Mechanicalでは「弱ばね」オプションをオフにすると、隠れた拘束不足が顕在化する。
境界条件は問題なさそうなのにエラーが出ます。次は?
次は「要素間の連成状態」を疑う。異種要素(例えばソリッド要素とシェル要素)を共有節点で結合した場合、回転自由度が伝達されず、ヒンジ状の機構が生じることがある。Abaqusでは「*TIE」拘束や「*COUPLING」を使用するか、MPC(多点拘束)を用いて適切な自由度を連成させる必要がある。
接触解析で頻繁に出る気がします。接触が原因の特異性はどう対処しますか?
接触面が初期状態で離れすぎている「初期貫通」または「初期ギャップ」が原因だ。Ansysの場合、「Adjust to Touch」機能で初期接触状態を調整する。また、接触要素の法線方向剛性(法線スタッフネス)が低すぎると、接触面が数値的にぶら下がった状態になり、特異性を引き起こす。経験則として、基礎となる固体要素の剛性の10〜100倍の値を与える。
メッシュ自体に原因はありますか?
ある。特に「悪形状要素」だ。1次要素で内角が極端に小さい(1度未満)三角形シェル要素や、アスペクト比が1000を超えるような細長い要素は、数値積分点でのヤコビアンが特異になり、要素剛性マトリックスの計算が不安定になる。メッシュ品質チェックで「Skewness」や「Aspect Ratio」を確認し、ISO規格やソフトウェアの推奨値内に収めることが重要だ。
ソフトウェア比較
各ソフトウェアのエラーメッセージと対策ツール
Ansys、Abaqus、COMSOLで特異行列エラーの出方や対処法に違いはありますか?
メッセージとデフォルトの挙動に違いがある。Ansys Mechanicalは「A singular matrix has been encountered...」と表示し、デフォルトで「弱ばね」を導入して計算を続行しようとする。Abaqus/Standardは「THE SYSTEM MATRIX HAS 1 NEGATIVE EIGENVALUES...」や「NUMERICAL SINGULARITY」と表示し、ユーザーが「*BOUNDARY」で不足自由度を固定するまで厳格に止める。COMSOLは「Singular matrix.」と簡潔に表示し、自動メッシュ適応化を提案してくることが多い。
Ansysの「弱ばね」とは何ですか?頼っていいんですか?
数値的に微小な剛性(ばね定数)を機構方向に自動追加する機能だ。デフォルトでは有効で、多くの場合計算を続行させてくれるが、根本解決ではない。この弱ばねによる追加剛性が結果に影響を与える可能性がある。特に固有値解析やバックリング解析では絶対に無効化すべきだ。信頼性の高い解析のためには、弱ばねに依存せず、物理的に正しい境界条件を設定することが原則だ。
Abaqusで特異性の位置を特定する方法はありますか?
.msgファイル(メッセージファイル)を詳細に確認するんだ。エラーメッセージの近くに「THE ROTATION ABOUT AXIS 1 AT NODE 1005 INSTANCE PART-1-1 IS NOT CONSTRAINED.」のように、問題の自由度(並進/回転)と節点番号、部品インスタンス名が具体的に出力される。この情報をもとに、該当節点の拘束状態をPre(前処理)モジュールで確認・修正する。
COMSOLはマルチフィジックスが得意ですが、それが原因で特異性が起きることは?
よくある。例えば「構造力学」と「静電場」を連成させたとき、構造変位は定義されても電位の基準(グラウンド)が定義されていないと、電界の支配方程式が特異になる。各物理インターフェースごとに独立して境界条件が完全か確認する必要がある。COMSOLの「モデルビルダー」では、各物理インターフェースのアイコンに警告マークが表示されるので、そこから原因を辿れる。
トラブルシューティング
高度な事例と最終手段
全てチェックしたのに、非線形解析の途中ステップで突然「特異行列」が出て計算が止まります。なぜですか?
それは「構造的不安定性」が生じている可能性が高い。大きな変形により部材が座屈した、接触が離脱して拘束が失われた、材料が降伏して局部で剛性が急激に低下した(ひずみ軟化)などが原因だ。Ansysの非線形ソルバー(Newton-Raphson法)は各増分ステップで接線剛性マトリックスを評価するため、そこで特異性が検出される。対策は、増分ステップを小さくする、弧長法(Riks法)を使用する、などだ。
複数の部品をボルト結合したモデルで、ボルト締結部だけ特異性が出ます。どうすれば?
ボルト穴の周辺メッシュが独立して回転する「hourglass(砂時計)モード」が発生している。これは低減積分要素(AbaqusのC3D8Rなど)で起こりやすい。対策は3つある。1) ボルト穴周りにスイープメッシュを用いて要素形状を改善する。2) 「二次要素」(C3D20)など完全積分要素に切り替える。3) 「剛体要素」や「ビーム要素」でボルト自体をモデル化し、MPCで結合する。実際の設計ではJIS B 1083などのボルト締結体解析ガイドも参照する。
どうしても原因がわからない場合、最終的なデバッグ方法はありますか?
モデルを徹底的に単純化する「削除法」だ。まず、線形静解析でエラーを再現させる。次に、要素タイプを最もシンプルなもの(3Dなら一次完全積分六面体)に統一し、材料は等方弾性体のみ、境界条件も単一の完全固定と単一の集中荷重だけにする。この最小モデルで実行し、徐々に部品、接触、複雑な材料則などを追加していく。どこでエラーが再発するかで、原因を特定できる。これは時間がかかるが、最も確実な方法だ。
特異行列エラーを完全に防ぐ設計上のコツはありますか?
モデリングの最初に「剛体モードチェック」を行うことだ。多くの商用ソフトには、解析実行前に境界条件の妥当性をチェックする機能がある。例えば、MSC Nastranには「ASET」や「OMIT」カードを用いた剛体モードチェック機能が組み込まれている。また、設計上、物理的にあり得ない拘束(例えば、現実には微小なクリアランスがあるところを完全な面接触でモデル化するなど)を避けることも重要だ。CAEは現実の近似であることを常に意識せよ。
関連トピック
なった
詳しく
報告