BiCGSTAB法 — CAE用語解説
BiCGSTAB法
先生、CFDのソルバー設定でBiCGSTABって出てきたんですけど、何の略でどんな方法ですか?
Bi-Conjugate Gradient STABilized(双共役勾配安定化法)の略。CFDのNavier-Stokes方程式を離散化すると非対称な疎行列の連立方程式になるんだけど、それを解くための代表的な反復法の一つだよ。
非対称というのは、行列の$(i,j)$要素と$(j,i)$要素が等しくないということですか?
そのとおり。構造解析では剛性行列が対称($K = K^T$)だからCG法(共役勾配法)が使える。でもCFDの流体の「対流項」が入ると行列が非対称になる——片方向の流れの影響があるから。BiCGSTABはそういう非対称行列に対応した方法で、GMRES法の代替として広く使われてる。
BiCGSTABとGMRESはどちらがいいんですか?
一概には言えないけど実務的な傾向を言うと——BiCGSTABはメモリ消費が少なくて並列化が得意。GMRESは収束がより安定してるが、反復数が増えるとメモリが線形に増大するという欠点がある(再スタートGMRESで回避できるが)。OpenFOAMのsmoothSolverや圧力方程式ではGMRES系が多く、速度方程式ではBiCGSTAB系がよく使われる。
前処理(プレコンディショナー)と組み合わせて使うと書いてあったんですけど、それは何ですか?
反復法の収束を速めるための行列変換。例えばILU(不完全LU分解)前処理を使うと、行列の条件数が改善されて収束が速くなる。BiCGSTAB単体では百回以上の反復が必要な問題でも、ILU前処理を組み合わせると数十回で収束することがある。OpenFOAMのGaussSeidel前処理やAnsysのILUも同様の発想。
関連用語も教えてください。
CFDのソルバー設定でBiCGSTABが出てきたとき、何をしてるのか理解できました!
実務ではOpenFOAMのfvSolutionで solver/tolerance/relTolを設定するとき、なぜBiCGSTABが選ばれているかを意識できると、収束不良の原因究明もしやすくなるよ。
CAE用語の正確な理解は、チーム内のコミュニケーションの基盤です。 — Project NovaSolverは実務者の学習支援も視野に入れています。
次世代CAEプロジェクト:開発者と実務者をつなぐ
Project NovaSolverは、BiCGSTAB法を含む幅広い解析分野において、実務者の知見を最大限に活かせる環境の実現を探求しています。まだ道半ばですが、共に歩んでいただける方を募集しています。
お問い合わせ(準備中)関連トピック
なった
詳しく
報告