Cholesky分解 — CAE用語解説
Cholesky分解
先生、Cholesky分解って線形代数の話ですか? FEMとどう関係するんですか?
FEMの心臓部だ。構造解析でKu = fという剛性方程式を解くとき、剛性マトリクスKは対称かつ正定値という特徴を持つ。Cholesky分解はこの性質を利用してK = LLTに分解する手法で、一般的なLU分解の約半分の計算量で済む。Lは下三角マトリクスで、前進消去→後退代入の2ステップで解ベクトルuを求める。Nastran・Abaqus・Ansysの直接法ソルバーはほぼCholesky系アルゴリズムを使っている。
定義
「正定値」って何を意味するんですか?
任意の非ゼロベクトルvに対してvTKv > 0 が成り立つことだ。物理的には「エネルギーが常に正」という意味で、境界条件(支持)が適切に与えられていれば剛性マトリクスは正定値になる。逆に言うと、固定支持を忘れると剛体移動モードが混入してKが半正定値になり、Cholesky分解が失敗する——「negative eigenvalue」エラーはこれが原因のことが多い。
スパース性と効率
大きな構造(百万要素とか)だとCholesky分解でも時間がかかりますよね?
そこでスパース性の活用が重要になる。FEMの剛性マトリクスは結合している要素のみ非ゼロになるから、100万自由度でも99%以上がゼロだ。スパースCholesky分解では非ゼロ要素だけ格納・演算するため、メモリも計算量も桁違いに減る。さらにフィルイン最小化(節点番号の並び替え)という最適化があって、AMD(近似最小次数)法などで非ゼロ要素の増加を抑える。MATLABのchol関数やSUPERLUがこの仕組みを使っている。
反復法(CG法など)と直接法(Cholesky)はどう使い分けるんですか?
一般則として小〜中規模(〜数十万自由度)は直接法、大規模(百万自由度〜)は反復法が有利だ。直接法は一度分解すれば複数の右辺ベクトルに素早く対応できるから、多荷重ケースや設計変数感度解析に向いている。反復法はメモリ消費が少なくGPU並列化と相性がいい。実際のソルバーはハイブリッドで、AMGなどの前処理付きCG法が大規模問題の標準になりつつある。
関連用語
数値線形代数がFEMの根幹を支えているんですね。深く知ると計算の速さが全然違う!
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
CAEの未来を、実務者と共に考える
Project NovaSolverは、Cholesky分解における実務課題の本質に向き合い、エンジニアリングの現場を支える道具づくりを目指す研究開発プロジェクトです。
プロジェクトの最新情報を見る →関連トピック
なった
詳しく
報告