GMRES法 — CAE用語解説
GMRES法
先生、CFDのソルバー設定で「線形ソルバー:GMRES」って出てくるんですけど、CG法と何が違うんですか?
定義
GMRESの正式名称と、どういうアルゴリズムなのか教えてください。
Generalized Minimal RESidual法の略で、非対称行列にも使えるKrylov部分空間法の反復ソルバーだよ。CG法は対称正定値行列にしか使えないけど、GMRESはそういう制約がない。CFDのNavier-Stokes方程式を離散化すると非対称行列が出てくるから、GMRESの出番が多いんだ。
なるほど、非対称でもOKなのが強みなんですね。でも反復数が増えると遅くならないんですか?
いいところに気づいたね。GMRESは反復ごとにKrylov基底を蓄積するからメモリがどんどん増えるんだ。そこでrestart(m)といって、m回反復したら基底をリセットする手法が標準的に使われてる。OpenFOAMだとGMRES(30)とかGMRES(50)みたいに設定するでしょ。
数値解法における役割
restartの回数を増やせば必ず収束が良くなるんですか?
理論上はそうだけど、実際にはメモリが足りなくなるし、計算コストも増える。実務ではrestart数を増やすより前処理(プリコンディショナー)を工夫した方が効果が大きいことが多いよ。ILU前処理とGMRESの組み合わせはCFDの定番だね。
前処理が大事なんですね。収束しないときはまず前処理を見直せってことですか?
その通り。あとは行列の条件数が悪いケースだとGMRES単体では苦戦するから、メッシュ品質やスキームの見直しも含めてトータルで考えるのが実務のコツだよ。
関連用語
GMRES法の周辺で知っておくべき用語を教えてください。
このあたりは押さえておきたいね。
CG法との使い分けがクリアになりました。まずはOpenFOAMの設定で前処理を変えて収束の違いを試してみます。
いいね。残差の収束履歴をログで確認しながらやると、ソルバーの挙動が手に取るようにわかるようになるよ。
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
GMRES法の実務で感じる課題を教えてください
Project NovaSolverは、CAEエンジニアが日々直面する課題——セットアップの煩雑さ、計算コスト、結果の解釈——の解決を目指しています。あなたの実務経験が、より良いツール開発の原動力になります。
お問い合わせ(準備中)関連トピック
なった
詳しく
報告