条件数 — CAE用語解説
条件数
先生、「条件数」って数値解析の授業で出てきたんですが、CAEでどう関係するんですか?
直接つながっている。FEMの剛性方程式 [K]{u}={f} を解くとき、行列Kの条件数κ(K)が大きいほど数値誤差が増幅される。κ(K) = ||K|| * ||K^-1|| で定義されて、1.0が理想、1e6を超えてくると数値的にヤバいと思ったほうがいい。「精度が出ない」「収束しない」というFEM解析の悩みの多くは、実は条件数の問題が根っこにある。
定義
条件数が大きくなるのってどういうときですか?
FEMで条件数が悪化する原因は主に3つだ。①メッシュのアスペクト比が極端に大きい(細長い要素)——刚性が一方向だけ極端に高くなる。②材料定数の桁が大きく違う異材接合——鋼とゴムを同じモデルに入れると剛性の比が10^5オーダーになる。③ほぼ非圧縮性材料(ゴム、ソフト組織)——体積剛性と偏差剛性の比が大きい。どれもメッシュや材料の設定で対処できるから、まず原因を特定することが大事だ。
数値的影響と対策
条件数が悪いとどんな問題が起きるんですか?
直接法(LU分解)では丸め誤差が増幅されて解が不正確になる。反復法(CG法、GMRES)では収束が遅くなるか発散する。例えばκ=1e8 の系では倍精度(有効桁15〜16桁)で使える有効桁が7〜8桁に落ちる。実務でよく見るのは「変位は収束したように見えるが応力が変な値になる」というケース——これは条件数の悪さで解が精度を失っているサインだよ。
条件数を改善する方法はありますか?
いくつかある。一番効くのはプリコンディショニング(前処理)だ。不完全LU分解(ILU)や代数的マルチグリッド(AMG)を前処理に使うとκが大幅に下がって反復法の収束が改善する。メッシュ側の対策としては要素のアスペクト比を2〜5以下に保つ、異材境界での要素サイズを段階的に変える、などが有効だ。AbaqusやAnsysはデフォルトで自動スケーリングをしてくれるが、大規模モデルでは自分でプリコンディショナを選べるかどうかがソルバー選定の重要ポイントになる。
実際にモデルの条件数ってどうやって確認するんですか?
ほとんどのFEMソルバーはログに「max/min ratio」や「condition estimate」を出力する。Abaqusはwarning: zero pivot やexcessive distortion を出すし、OpenFOAMのfvSolution設定でsolverPerformanceのlogs を見ると残差履歴でわかる。Pythonならnp.linalg.cond(K)で直接計算できるが、大規模行列では計算自体が重いので普通はestimator(RandomSVD等)を使う。とにかく解析前にメッシュ品質レポートのアスペクト比をチェックするのが早道だよ。
関連用語
条件数、深いですね。メッシュ品質と数値精度がつながっているとわかりました!
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
条件数の実務で感じる課題を教えてください
Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。
お問い合わせ(準備中)関連トピック
なった
詳しく
報告