Newton-Raphson法の失敗
Newton-Raphson法の失敗とは
先生、Newton-Raphson法が収束しない根本的な原因って何ですか?
理論と物理
Newton-Raphson法の基本と失敗の定義
Newton-Raphson法が「失敗する」とは、具体的にどういう状態を指すんですか?収束しないだけですか?
いい質問だ。単なる収束遅延とは区別される。主に3つの「失敗モード」がある。第一に、反復解が発散し、残差ノルムが10^10など極端に大きくなる。第二に、解が振動し、例えば反復ごとに変位が±1mmを行き来する。第三に、接線剛性マトリクスが特異(singular)になり、ソルバーが逆行列計算でエラーを出す。これらは全て、実務では解析が異常終了する。
なぜ接線剛性マトリクスが特異になるんですか?材料が柔らかすぎるから?
それも一因だが、より根本的なのは幾何学的または材料的不安定性だ。例えば、薄板の座屈解析で極限荷重を超えた瞬間、剛性がゼロになる。支配方程式で言うと、荷重-変位曲線の傾き、つまり接線剛性
「スナップバック」って具体的にどんな現象で、なぜ追跡できないんですか?
コンクリート柱の圧壊が典型例だ。荷重が最大値に達した後、変位を増やしながらも荷重が減少する「ひずみ軟化」領域に入る。その時、荷重-変位曲線は負の傾きになり、同じ荷重値に対して2つの変位解が存在する。Newton法は局所的な接線を頼りに次の解を予測するため、このループを飛び越えて全く違う解に「バック」してしまい、収束しない。これがスナップバックだ。
数値解法と実装
アルゴリズムの限界と改良手法
標準のNewton法がダメなら、実際のソフトウェアはどうやって非線形問題を解いているんですか?
「弧長法(Riks法)」や「一般化変位制御法」が使われる。核心は、荷重因子も未知数として追加し、制御パラメータを「弧長」にすることだ。式で書くと、求解すべき方程式系が
弧長法の「弧長」
その通りで、初期弧長設定が重要だ。Abaqusのデフォルトは、最初の増分ステップの予測変位ノルムの0.05倍など、保守的な値から始める。その後、前ステップの反復回数に基づいて動的に調整する。例えば、前ステップで反復が3回以内で収束すれば弧長を2倍に、10回以上かかれば0.5倍にする。このアルゴリズムはCrisfieldの教科書に詳細が載っている。実務では、最大弧長を制限しないと、急激な不安定現象を見逃すリスクがある。
線探索(Line Search)もよく聞きます。これは何をしているんですか?
Newton法で得た変位増分
実践ガイド
収束性を改善するための前処理と設定
実際に解析を走らせてNewton法が失敗した時、最初にチェックすべきことは何ですか?
まずはログファイルの「残差(Residual)」と「補正(Correction)」の出力を時系列で見る。Ansysの`.out`ファイルやAbaqusの`.msg`ファイルだ。残差が単調減少せずに振動しているなら、増分サイズが大きすぎる。次に、モデルの単位系が一致しているか確認。1[N]の荷重を、単位系を間違えて[tonf]と解釈された要素に加えると、剛性マトリクスが実質的に特異になる。最後に、接触定義。初期貫通があると、最初の反復で巨大な接触力が発生し、発散する。
増分サイズは具体的にどう調整すればいいですか?「小さくする」と言われますが、0.1から0.01にするような感覚ですか?
初期増分サイズは、非線形の度合いによる。弾塑性解析で降伏が起きるステップでは、初期サイズを0.01以下にすることがある。Abaqusでは「Initial」と「Minimum」を設定する。重要なのは、自動ステップ制御を有効にすることだ。Ansysの「Automatic Time Stepping」やAbaqusの「Automatic stabilization」を使えば、ソルバーが難易度に応じて0.001までサイズを落としてくれる。ただし、最小サイズを1e-10など過剰に小さくすると、計算が実質的に停止するので注意。
材料モデルの設定で、収束に影響するポイントはありますか?
大きなポイントは2つ。第一に、弾塑性モデルでは「降伏後の塑性硬化率」をゼロに近づけないこと。特に、JIS G 3131 SPHCなどの軟鋼では、降伏後の平坦域(Lüders帯)を完全な理想弾塑性(硬化率0)でモデル化すると、剛性マトリクスが特異になりやすい。わずかでも硬化率(例えば1 MPa)を与える。第二に、超弾性材料(ゴム)では、試験データからフィッティングした材料定数が、実際の変形範囲外で非物理的な挙動(例えば、体積弾性率が負)を示すことがあり、これが発散の原因になる。常に材料カーブをグラフで確認せよ。
ソフトウェア比較
各ソルバーの収束制御機能とデフォルト設定
Ansys MechanicalとAbaqus/Standardでは、Newton法の失敗に対するデフォルトの挙動は違うんですか?
大きく異なる。Ansys Mechanical(デフォルトのスパースソルバー使用時)は、反復回数がデフォルトで最大26回と多く設定されており、粘り強く収束を試みる傾向がある。一方、Abaqus/Standardのデフォルト最大反復回数は10回とやや少ない。しかし、Abaqusは「非対称ソルバー」のオプションが強力で、ある種の接触滑りや摩擦で生じる非対称剛性マトリクスを正しく扱え、収束性が改善されることがある。Ansysでは「Nonlinear Adaptive Region」という、収束が難しい領域のメッシュを自動で細かくする機能が近年追加された。
無料や低価格のCAEソフト、例えばCalculiXやCode_Asterではどうですか?収束制御は貧弱ですか?
機能としては商用ソフトと遜色ないが、デフォルト設定やユーザーインターフェースが課題だ。CalculiX(CCX)はAbaqusと類似した入力形式だが、弧長法の実装は標準的で、収束判定基準のチューニングが細かく必要になることがある。Code_Asterは非常に多様な収束制御アルゴリズムを提供するが、その分設定が複雑。例えば、`ALGO_INC`キーワードで増分法の種類を選び、`RESI_RELA`で相対残差基準を設定する。商用ソフトの「自動安定化」のようなブラックボックス化された便利機能は少なく、ユーザーが理論を理解してパラメータを設定する必要がある。
COMSOL Multiphysicsは「分離型ソルバー」が特徴と聞きます。これはNewton法の失敗と関係ありますか?
大いに関係がある。COMSOLのデフォルトは「分離型(Segregated)」ソルバーで、物理場ごとに順番に解き、全体のカップリングは反復で処理する。これは、全自由度を一度に解く「完全Newton法」に比べてメモリ使用量が少なく、各サブステップではよりシンプルな(特異になりにくい)マトリクスを扱うため、収束しやすい場合がある。しかし、強く非線形でカップリングされた問題(例えば、構造-熱伝導-電気の多物理場)では、分離型の反復回数が増え、逆に収束が遅くなるか失敗する。その場合は「完全Newton法」に切り替える必要がある。COMSOLはこの切り替えがGUIから簡単にできるのが利点だ。
トラブルシューティング
具体的なエラーメッセージとその対策
Abaqusで「THE SOLUTION APPEARS TO BE DIVERGING. CONVERGENCE IS JUDGED UNLIKELY.」というエラーが出ました。まず何を試すべきですか?
これは古典的な発散メッセージだ。即座に試すべきは3段階。1. **初期増分サイズの削減**: `.inp`ファイルの`*STEP`オプションで、`INITIAL=0.01`などに変更。2. **安定化の導入**: `*STATIC`に`STABILIZE`オプションを追加。スケール因子はデフォルト(2e-4)から始める。3. **接触設定の見直し**: 特に「硬い接触(Hard Contact)」を「軟らかい接触(Softened Contact)」や「粘性安定化(Contact Stabilization)」に変更。これで大半は解消する。
Ansysで「Solver pivot warning or error.」が出ました。「pivot」って何ですか?
ピボット誤差は、連立一次方程式を解く過程(LU分解など)で、対角成分が極端に小さいか負になったことを意味する。数値的に特異に近い状態だ。原因は、①未拘束の剛体運動(リグレッションチェックで検出)、②異なる単位系の混在(例えば、鋼のヤング率を210 GPaとすべきところを210 MPaで入力)、③極端に変形した要素(アスペクト比1000以上)による。対策は、ソルバー出力でピボット警告が出た「要素番号」と「自由度」を特定し、その周りの拘束やメッシュを確認する。Ansysでは「Newton-Raphson残差」を出力させると、残差が集中している場所が分かりやすい。
「収束はしたが、反復回数がデフォルト上限いっぱいかかっている」状態は問題ですか?
重大な警告サインだ。例えばAbaqusで「THE ANALYSIS HAS COMPLETED BUT WITH 10 ITERATIONS IN ONE INCREMENT」というメッセージは、その増分ステップが限界ギリギリで収束したことを意味する。次の少し難しいステップで確実に失敗する。この場合、ソルバーは自動的に次のステップの増分サイズを小さくするが、根本原因を除去すべきだ。接触状態の急激な変化や、材料の急激な軟化が起きていないか、反復ごとの残差グラフを確認し、問題の発生する「反復ステップ」を特定する作業が必要になる。
最終手段として、「動的解析(Explicit)に切り替える」というのを聞きますが、それは常に有効ですか?
有効な場合と、全くの間違いになる場合がある。有効なのは、準静的な問題で「スナップスルー」など不安定現象を含む場合。Abaqus/Explicitなら、慣性効果でその不安定領域を通過できる。しかし、純粋な静的な接触問題や、クリープ解析など、本来ダイナミクスが不要な問題に使うのは間違いだ。計算時間が桁違いに長くなる上、動的効果が結果に影響を与える(例えば、振動が残留する)。切り替える前に、なぜImplicit(Static)ソルバーが失敗するのかを理論的に理解することが、CAEエンジニアとしての成長には不可欠だ。
関連トピック
なった
詳しく
報告