ランク不足エラー
ランク不足
先生、ランク不足って特異行列と同じですか?
理論と物理
ランク不足の物理的意味
「ランク不足エラー」というメッセージが出ました。ランクって、行列の話ですよね? それがCAEの解析でなぜ問題になるんですか?
その通り、数学的には行列の階数(ランク)が不足している状態です。CAEでは、有限要素法の全体剛性マトリクス
支えはつけたつもりなんですが…。具体的に、どのような支持条件の付け方がまずいと、このエラーにつながるんでしょうか?
典型的なのは、過剰な対称条件の適用です。例えば、X, Y, Zの3方向の並進と3方向の回転、合計6つの剛体モードを拘束する必要があります。XZ平面に対称面を設定してY方向変位を拘束し、さらにYZ平面に対称面を設定すると、X方向とZ方向の変位も拘束されます。しかし、回転拘束は不足したままなので、モデルはY軸周りに回転する剛体モードを持ち、ランク不足になります。
回転の拘束…。梁やシェル要素を使ったときも気をつける必要がありますか?
非常に重要です。例えば、板の曲げを表すシェル要素では、1つの節点に5つまたは6つの自由度(並進3、回転2or3)があります。端面の全節点に「ピン支持」(並進のみ拘束)を適用すると、回転自由度はフリーのままです。この板は支えられた点を中心に「ちょうちん」のように回転する剛体モードを持ち、ランク不足を引き起こします。回転も拘束する「固定支持」が必要です。
数値解法と実装
ソルバーはどのように検出するか
ソルバーは、具体的にどの段階でランク不足を検出してエラーを出すんでしょうか? 計算の最初ですか?
主に2つの段階です。1つ目は「前処理」段階で、境界条件を適用した後の剛性マトリクスの対角項をチェックします。ゼロまたは極端に小さい値があると警告を出します。2つ目は、直接法ソルバー(LDLT分解など)の分解過程です。ピボット要素
「数値的に」特異ということは、理論的には支えられているけど、数値計算上はダメというケースもあるんですか?
はい、それが「スティフネス比」の問題です。例えば、金属部品(ヤング率210GPa)にゴムブッシュ(ヤング率7MPa)が取り付けられ、金属部のみを固定した場合。ゴム部分の剛性が金属に比べて
反復法ソルバー(CG法など)を使っても同じエラーが出ますか?
出ますが、挙動が異なります。直接法は分解時にエラーで停止します。一方、反復法は収束せずに発散する、または反復回数が最大値に達して停止することが多いです。AnsysのICCGソルバーなどでは、前処理段階で剛体モードを検出し、警告メッセージ「Rigid body motion is possible...」を出力します。エラーではなく警告で済む場合もありますが、結果は物理的に無意味です。
実践ガイド
エラー発生時のチェックリスト
実際にエラーが出たら、最初に何を確認すべきですか? 順序立てたチェックリストが欲しいです。
次の順で確認するのが効率的です。
接触条件が原因のケースをもう少し詳しく教えてください。「離れる」だけだとダメなんですか?
はい。例えば、平らな板が別の平らな板の上に載っているだけのモデルを考えます。接触を「離れることはできるが、摩擦はない(すべり自由)」と設定すると、面外方向(垂直方向)には離れる可能性があるため拘束されず、面内方向(水平方向)も摩擦がないため拘束されません。この状態で上面に荷重をかけると、下板は固定されていても、上板は水平方向に自由に動け(並進剛体モード)、また傾くこともできる(回転剛体モード)ため、ランク不足になります。現実には静止摩擦がありますが、線形静解析では通常それは考慮されません。
マテリアルの剛性比が極端な場合、エラーを避ける実用的な方法はありますか?
二つのアプローチがあります。第一は「仮想的な弱いばね」を追加する方法です。Ansysでは「Weak Springs」オプションがあり、ソルバーが自動的に剛体モード方向にごく弱いばね剛性(例えば、構造の代表剛性の1e-6倍)を追加し、数値的な特異性を回避します。第二は「多段階解析」です。まず、非常に柔らかい部品を(近似的に)剛体として扱い変位を求め、その変位を強制変位として柔らかい部品だけの解析にかけ直す方法です。いずれにせよ、結果の解釈には注意が必要です。
ソフトウェア比較
各ソフトウェアのエラーメッセージと対策ツール
Ansys、Abaqus、COMSOLで、ランク不足エラーはそれぞれどのようなメッセージで出るんですか?
ソフトウェアによって表現が異なります。
Abaqusで「Zero pivot」と自由度番号が出力された場合、その番号からどうやって問題の節点や方向を特定するんですか?
Abaqusの自由度番号は、節点番号(n)と自由度種類(d)から
COMSOLには「弱拘束」や「仮想ばね」のような自動対策機能はありますか?
はい、「弱拘束」の機能が組み込まれています。固体力学インターフェースの「弱拘束」フィーチャーを追加すると、選択した境界に、変位を完全に固定するのではなく、ペナルティ法による弱い拘束を施加えます。これはラグランジュ乗数法の代わりにばねを用いるようなもので、数値的安定性を保ちつつ、近似的な拘束を実現します。また、ソルバー設定で「不安定なモデルを許容する」オプションを有効にすると、直接ソルバーが特異性を無視して計算を進めようとしますが、得られる解は信用できません。根本的な拘束条件の見直しが第一選択です。
トラブルシューティング
高度な原因とデバッグ手法
拘束も接触も一通り確認したのに、まだランク不足エラーが出ます。他に考えられる高度な原因はありますか?
いくつか考えられます。
MPCのサーキットについて詳しく教えてください。どうやってデバッグすればいいですか?
具体例を挙げます。節点A(主)と節点B, C(従)をRBE2で剛体結合し、節点BとCを完全固定したとします。一見、節点Aも固定されます。しかし、節点D(主)と節点A, E(従)を別のRBE2で結合し、節点Dに何の拘束も施加えていない場合を考えてください。節点AはB,Cを通じて固定されていますが、同時に節点Dの従節点でもあります。節点Dが自由なら、MPCの関係上、節点AもDに「引っ張られて」自由になってしまう可能性があります。このような「拘束経路のループ」を発見するには、結合関係を図示するか、ソルバーの詳細出力で「ゼロピボット」が発生している自由度が、MPCに関連する主節点かどうかを確認します。Ansysの場合は「/DEBUG」コマンドで内部マトリクスをダンプして調査できますが、高度な作業です。
どうしても原因がわからない場合、モデルを単純化してテストする以外に、ソルバー側で強制的に計算を進める「逃げ道」はありますか?
最終手段として存在しますが、結果の信頼性は大きく損なわれます。
関連トピック
なった
詳しく
報告