残差モニタ — CAE用語解説
残差モニタ
CFD収束の判断指標
CFDの計算中に出てくる「残差(Residual)」って何を表しているんですか?
理論と物理
残差の物理的意味
「残差」って、ソルバーのログでよく見る「Residual」のことですよね。これが収束しないと計算が止まったりしますが、そもそも「残差」とは物理的に何を表しているんですか?
良い質問だ。物理的には、支配方程式の「バランスの崩れ」を定量的に表したものだ。例えば、非定常熱伝導の支配方程式を離散化すると、各セル(または節点)で以下のような形になる。
「誤差」と言っても、温度の誤差[K]とは単位が違いますよね? ログに出てくる「1e-3」のような無次元数は、どうやって計算されているんですか?
その通りで、生の残差Rは[W/m³]などの物理単位を持つ。ソフトウェアはこれを無次元化してモニタリングする。代表的な方法は「初期残差」で規格化する方法だ。Ansys Fluentでは、最初の反復(0ステップ目)で計算された各方程式の残差のスケールを基準として、その後の反復での残差を割る。つまり、
連続の式、運動量、エネルギー方程式など、複数の残差が出てきますが、どの残差が一番重要なんですか? 例えば、非圧縮流れの計算で、連続の式の残差だけが下がらない場合は?
状況によるが、非圧縮流れでは「連続の式(質量保存則)の残差」が最も重要だ。なぜなら、圧力と速度を結合する役割を担っており、これが収束しないと流れ場全体が物理的に意味をなさなくなるからだ。特にSIMPLE法族を使う場合、連続の式の残差は「圧力修正方程式」を解くことで低減される。これが1e-3以下に下がらない場合、メッシュ品質(特に歪みの大きいセル)や、圧力と速度の結合スキームの設定(例:Rhie-Chow補間)に問題がある可能性が高い。
数値解法と実装
ソルバー内部での残差計算
ソルバーは具体的にどのタイミングで、どのデータを使って残差を計算しているんですか? 反復ごとに全セルの値を読み直していると、計算コストが大きくならないでしょうか?
コストは確かにあるが、収束判定には必須の作業だ。典型的なCFDソルバー(OpenFOAM, Fluent)の流れを説明しよう。1回の反復(例:1回のpressure-velocity coupling)が終わった後、最新の変数場(p, U, Tなど)を用いて、各セルで支配方程式の離散化形式を再評価する。この時、隣接セルからの流束やソース項を全て計算し直し、方程式のバランスをチェックする。この「バランスの崩れ」の総和が残差として集計される。コストを抑えるため、残差計算の頻度を下げる設定(例えば5反復に1回)を持つソルバーもある。
「残差のノルム」とありますが、L1ノルム、L2ノルム、最大値ノルムなど、どのように使い分けられているんですか? 収束判定の厳しさが変わりそうですが。
商用ソフトではほぼL1ノルム(絶対値和)か、最大値ノルム(無限大ノルム)が使われる。Ansys FluentのデフォルトはL1ノルムだ。全セルの残差絶対値を足し合わせるので、全体としての「誤差の総量」を反映する。一方、Abaqus/Standardのような構造解析ソルバーでは、力の残差(不平衡力)の最大値ノルムをよく見る。これは、どこか一箇所でも大きな不平衡力が残っていると、構造全体の平衡が得られていないと判断するためだ。L2ノルム(二乗和平方根)は感度が高すぎて、局所的な数値ノイズに影響されやすいため、収束判定の主流ではない。
非線形問題では、反復ごとに残差が振動したり、一度下がった後にまた上がったりすることがあります。これはソルバーのバグではなく、アルゴリズム上の必然なんですか?
その通り、アルゴリズム上の特性だ。特にニュートン・ラフソン法を用いる構造の非線形解析ではよく見られる。現在の解から接線剛性マトリックスを計算し、変位増分Δuを求めるが、これは線形化された系での解だ。実際の非線形系に戻って不平衡力(残差)を計算すると、線形化による誤差のため、残差が必ずしも単調減少しない。Abaqusのドキュメントにも「残差の振動は、非線形性が強い領域で生じる正常な挙動」と記載されている。対策としては、より小さな増分ステップを設定したり、線形探索法(Line Search)を有効にしたりする。
実践ガイド
収束判定の実際
実務では、残差をどの値まで下げれば「収束した」と判断して良いですか? 教科書には「1e-3」と書いてありますが、いつもそれで大丈夫なんですか?
1e-3はあくまで目安で、絶対的な基準ではない。重要なのは「残差が下がり切ったか」と「監視対象の物理量が定常状態に達したか」の両方を確認することだ。例えば、航空機の揚抗力計算では、残差が1e-5まで下がっても、揚力係数CLがまだ0.1%も変動していることがある。逆に、複雑な乱流計算では残差が1e-3で頭打ちになっても、壁面せん断力や熱流束は十分に定常化している場合もある。私の経験則では、まずは残差を1e-3以下にし、その上で主要な物理量(抗力、最大温度、最大応力など)の時系列をプロットし、変動が無視できるレベル(例えば0.1%以内)に収まっているかを確認する。
「残差は下がっているが、物理量が振動している」場合、まず何を疑えばいいですか? メッシュを細かくするべきですか?
メッシュ細分化は最終手段だ。まず疑うべきは「時間刻み(または荷重増分)が大きすぎないか」だ。特にCFDの非定常計算や、構造の動的解析では、時間刻みΔtが物理現象の時間スケールに対して大きすぎると、数値的な不安定性が生じ、物理量が振動する。例えば、カルマン渦の剥離周波数が100Hzなら、少なくともその20倍、Δt=0.0005秒以下で計算する必要がある。次に、ソルバーの緩和係数(アンダーリラクセーション)が適切か確認する。初期計算では0.5や0.7など控えめな値から始め、安定してきたら0.9などに上げて収束を加速させる。
逆に、「物理量は定常に見えるが、残差が下がらない(1e-2で停滞)」というケースでは? この結果は信用できるんですか?
非常に危険な状況で、結果を安易に信用してはいけない。残差が1e-2で停滞するということは、計算領域のどこかに「大きなバランスの崩れ」が固定化していることを意味する。よくある原因は二つだ。第一に、境界条件の設定ミス。例えば、流入速度と流出条件が質量保存を厳密に満たしていない。第二に、メッシュの極端に悪いセル(アスペクト比1000以上や、負の体積に近いセル)が存在し、そこでの離散化誤差が巨大な残差を生み出している。この場合、そのセル周辺の物理量(流速や応力)は全く信用できない。必ずメッシュ品質レポートを確認し、歪みの大きいセルを修正すべきだ。
ソフトウェア比較
各ソフトウェアでの残差モニタリング
Ansys FluentとSiemens Star-CCM+で、残差のモニタリングの仕方や考え方に違いはありますか?
基本的な概念は同じだが、インターフェースとデフォルト設定に違いがある。Fluentは「Residual Monitors」画面で各方程式ごとに目標値(Criteria)を1e-3などと設定し、それを下回ると収束とみなす(判定を有効にする場合)。一方、Star-CCM+は「残差プロット」は提供するが、デフォルトでは残差による自動停止機能はオフに近い。代わりに「物理量モニター」(例えば抗力)の変化率が一定値以下になることを収束条件とすることが推奨されている。これは、Star-CCM+が「残差だけでは収束の十分条件ではない」という立場を強く取っているからだ。
構造解析ソフト(Abaqus, Nastran)では、CFDのような「連続の式の残差」はなく、「力の残差」が中心だと思います。これはどのように計算され、どの値が目標になるんですか?
その通りだ。構造解析では「節点不平衡力(残差力)」が主要な収束指標だ。Abaqus/Standardでは、各増分ステップ内の平衡反復において、外力と内部節点力の差として計算される。メッセージファイルに出力される「FORCE BALANCE」の項目がそれだ。目標値は「平均力」に対する比で設定されることが多い。例えば、Abaqusのデフォルト収束基準は、残差力の最大値が「時間平均された力の0.5%」以下になることだ。NastranのSOL 400(非線形)でも同様で、残差力ノルムが「適用荷重ノルム」の一定比率(デフォルトは0.01=1%)以下になることが条件となる。
マルチフィジックスソフトのCOMSOLは、電磁気、構造、流体など様々な物理場を扱います。残差のモニタリングは物理場ごとに独立しているんですか、それとも統合されているんですか?
COMSOLは「分離型アプローチ」を取る場合と「完全結合型アプローチ」を取る場合で異なる。デフォルトの「完全結合」ソルバーを使用すると、全ての変数(温度、変位、電位など)を一つの大規模な連立方程式系として扱う。したがって、出力される残差は「全方程式の統合された残差ノルム」一つだけの場合が多い。一方、「分離型」ソルバーを選択すると、物理場ごと、あるいは方程式ごとにソルバーが順次実行され、各ソルバー段階で独立した残差がモニターできる。後者の方が、どの物理場の収束が悪いのかを特定しやすいが、強結合現象には向かないというトレードオフがある。
トラブルシューティング
残差関連のエラーと対策
Fluentで計算中に「残差が発散しました」というエラーで停止することがあります。最初の数ステップでいきなり1e+10とかになる場合、まず何をチェックすべきですか?
即座に発散する場合、ほぼ間違いなく「初期条件」または「境界条件」に物理的に不可能な設定がある。チェックリストはこうだ:1. 初期圧力場が極端に高い/低い(例えば、非圧縮流で1e5 Paなのに初期条件を1e10 Paにしている)。2. 流入速度と流出面積がつじつま合わず、質量保存が大きく崩れる(流入質量流量 1 kg/s、流出面積が極小など)。3. 乱流パラメータ(乱流エネルギーkや散逸率ε)の初期値が非現実的(k=1000 m²/s²など)。まずは、全ての初期値を「一様で穏やかな値」にリセットし、緩和係数を非常に小さく(0.1など)して再計算してみる。
「残差は順調に下がるが、ある値(例えば1e-4)で完全に頭打ちになり、それ以下には絶対に下がらない」という壁にぶつかることがあります。これはソルバーの限界ですか?
それは「マシンイプシロン」や「離散化誤差のフロア」に到達した可能性が高い。倍精度浮動小数点演算では、数値的な丸め誤差の限界がおよそ1e-16程度だが、離散化された方程式系を解く過程では、メッシュの切り方や数値スキーム自体に理論的な誤差が含まれる。例えば、二次精度の風上差分スキームを使った場合、その離散化誤差はメッシュサイズの二乗に比例する。メッシュが粗ければ、この誤差が1e-4程度で頭打ちの原因になる。対策は、メッシュを局所的に細かくするか、より高次精度の数値スキーム(例えば、三次精度のQUICKや、MUSCLスキーム)に変更することだ。
構造解析で、最終的な残差が収束基準を満たしているのに、応力や変位の結果が明らかに物理的に不自然(例えば、荷重点から離れた場所に極端な応力集中)な場合、何が考えられますか?
これは危険なサインで、「局所的な剛性マトリックスの異常」を示唆している。考えられる原因は二つ。第一に、「剛体モード」の存在だ。拘束不足で一部の部品が未拘束のまま計算され、全体の平衡は(数値的に)成立しても、部品内部の応力が不定になる。第二に、「要素品質の極端な悪化」だ。アスペクト比が1000を超えるような要素や、内角が1度以下の要素があると、要素剛性マトリックスの条件数が悪化し、数値誤差が膨大になる。その要素周辺の応力結果はゴミ同然だ。対策は、まずモデルチェックツールで未拘束の剛体モードがないか確認し、次にメッシュ品質レポートで最悪の要素を特定してリメッシュすることだ。
定常計算なのに、残差が周期的に上下を繰り返す(例えば、1e-3と1e-2の間を振動する)場合、計算を続けるべきか、止めるべきかの判断基準は?
それは「限界サイクル」に陥っている可能性が高く、通常は計算を止めて原因を究明すべきだ。定常ソルバーで残差が振動するのは、ソルバーが二つ以上の解の状態を行き来していることを意味する。原因は、1) 物理的に不安定な流れ(例えば、キャビティ流れの定常解は実際には存在せず、非定常渦が発生する)を定常ソルバーで無理やり解こうとしている、2) 非線形性が強すぎてソルバーの反復が振動する(乱流モデルの切り替えや、緩和係数の調整が必要)、のどちらかだ。まずは、監視している物理量(抗力など)が振動に連動して変動しているか確認する。変動しているなら、それは非定常現象なので、非定常ソルバーに切り替えるのが正解だ。
関連トピック
なった
詳しく
報告