残差 — CAE用語解説

カテゴリ: 用語集 | 2026-01-15

理論と物理

残差とは何を表しているのか

🧑‍🎓

CAEの解説でよく「残差」という言葉が出てきますが、具体的に何の「残り」を意味しているんですか?

🎓

良い質問だ。最も単純な例で説明しよう。支配方程式、例えば熱伝導の定常問題を考える。支配方程式は

$$ \nabla \cdot (k \nabla T) + Q = 0 $$
だ。これを離散化して数値的に解くとき、近似解
$$ \hat{T} $$
を代入しても、この等式は完全には成り立たない。その「成り立たなさ」、つまり方程式の左辺に残る値が残差Rだ。式で書けば
$$ R = \nabla \cdot (k \nabla \hat{T}) + Q $$
となる。物理的には、このRがゼロに近づくほど、計算された温度場が熱のつり合いを満たしていることを意味する。

🧑‍🎓

ということは、残差が大きいと、計算結果は物理法則から大きく外れている、ということですか?

🎓

その通り。例えば、強制対流のCFD解析で運動量方程式の残差が10^0(=1)のオーダーで止まっている場合、それはナビエ-ストークス方程式がほとんど満たされていないことを示す。非圧縮性流れであれば、連続の式(質量保存)の残差は、流入質量流量の0.1%以下、例えば1e-4 kg/s程度まで収束させることが一般的な目標だ。

🧑‍🎓

「収束させる」と言いますが、数学的には残差を完全にゼロにすることはできないのですか?

🎓

できない。理由は主に二つある。第一に、コンピュータは有限の精度(倍精度で約15桁)で計算するため、丸め誤差が必ず生じる。第二に、非線形問題や連立方程式を解く反復解法では、無限回の反復が必要になる。実務では、残差が十分小さくなり、かつ監視したい物理量(抗力、最大応力など)の変化が微小(例えば0.1%以内)になった時点で「収束した」と判断する。

数値解法と実装

ソルバーはどうやって残差を減らすのか

🧑‍🎓

ソフトウェアの中では、残差を減らすために具体的にどんな計算が行われているんですか?

🎓

核心をつく質問だ。例えば陰解法のFEMソルバーでは、支配方程式を

$$ [K]\{u\} = \{F\} $$
のような線形システムに離散化する。ここで残差ベクトルは
$$ \{R\} = \{F\} - [K]\{u\} $$
と定義される。ソルバー(直接法の場合はMUMPSやPARDISO、反復法の場合はCG法やGMRES)は、この
$$ \{R\} $$
のノルムを最小化するように解
$$ \{u\} $$
を更新していく。非線形問題では、さらにニュートン-ラフソン法のような反復を用いて、線形化した方程式の残差を各ステップでゼロに近づける。

🧑‍🎓

CFDで「残差カーブ」を見ますが、なぜ方程式ごと(X速度、Y速度、連続など)に残差の大きさが全然違うんですか?

🎓

それは各方程式が持つ物理的なスケールと、ソルバー内での「スケーリング」による。例えば、Ansys Fluentではデフォルトで「スケールされた残差」を表示する。これは残差をその方程式の代表的な流量や力で割ることで、無次元化し比較可能にしている。それでも差が出るのは、解くのが難しい方程式だからだ。特に圧力-速度連成の要である連続の式(質量保存)の残差は、他の運動量方程式より1〜2桁小さくならないと流れ場は収束しない。これが「収束のネック」になることが多い。

🧑‍🎓

反復計算で、残差が一度下がったまた上がる「振動」が見られることがあります。これは何が原因ですか?

🎓

それは不安定性の兆候だ。主な原因は三つ考えられる。第一に、物理的に不安定な現象(例えば、カルマン渦や燃焼不安定)を定常ソルバーで解こうとしている。第二に、非線形性が強すぎて、ソルバーの緩和係数が大きすぎる。第三に、メッシュ品質が悪く、離散化誤差が大きい場合だ。振動する場合は、まずアンダーリラクセーション係数をデフォルトの0.7から0.3など小さくして試すのが定石だ。

実践ガイド

収束判定の実際

🧑‍🎓

実務では、残差がいくつまで下がれば「収束した」と安心して結果を採用できるのでしょうか?

🎓

絶対的な閾値はないが、経験則はある。構造解析(線形静解析)では、ソルバーの相対残差ノルムが1e-6以下であれば十分な精度と言える。一方、CFDの場合はより複雑だ。Ansys Fluentのマニュアルでは、スケールされた残差が「連続の式で1e-3、その他で1e-6」を一つの目安としているが、これはあくまで目安だ。最も重要なのは、関心ある物理量(例えば翼型の抗力係数Cd)の監視で、それが200〜300反復以上変化しなくなったことを確認することだ。残差だけ見て判断してはいけない。

🧑‍🎓

メッシュを細かくすると、かえって残差が下がりにくくなることがあると聞きました。なぜですか?

🎓

鋭い指摘だ。その現象は、離散化誤差が減ることで、数値的な拡散(人工粘性)が減ることが原因の一つだ。特にCFDでは、粗いメッシュでは数値拡散が流れの変動を「なだめて」いたのが、細かいメッシュでは物理的な不安定性がそのまま現れるため、残差の振動が収束しにくくなる。また、メッシュ数が増えると条件数が悪化し、反復ソルバーの収束性が低下する。この場合は、マルチグリッド法のような高度なソルバーアルゴリズムの使用が必須になる。

🧑‍🎓

解析を実行する前に、収束の見通しを立てるためのチェックリストはありますか?

🎓

ある。私が学生に課している最低限のチェックリストはこれだ:

1. **物理モデルの選択**: 乱流モデルはRANSで十分か?遷移や分離を捉えるならSST k-ωを。 2. **初期条件**: 完全なゼロ初期値は非線形問題では危険。可能なら簡易計算結果や期待される値を与える。 3. **ソルバー設定**: 定常/非定常の選択は正しいか?非定常なら時間ステップ幅(CFL数)は適切か。 4. **緩和係数**: デフォルト値から始めるが、発散する場合は0.2まで下げる覚悟を。 5. **監視点の設定**: 残差と同時に、最低3点(入口、代表点、出口)の圧力・速度を監視する。 これを守るだけで、無駄な計算時間を大幅に減らせる。

ソフトウェア比較

ソフトごとの残差の扱い方

🧑‍🎓

Ansys、Abaqus、COMSOLなどで、残差の表示の仕方や収束基準の設定方法に違いはありますか?

🎓

大きな違いがある。まず**Ansys Mechanical** (構造)では、ソルバー出力に「力の残差」や「収束ノルム」が表示され、デフォルトの収束基準は力とモーメントの残差が0.5%以下など相対値で設定される。**Abaqus/Standard**は「残差」という用語を、接触条件が満たされていない力として表示し、平衡反復の収束判定に用いる。

🧑‍🎓

CFDソフトではどうですか?OpenFOAMのようなオープンソースは?

🎓

**Ansys Fluent**や**STAR-CCM+**は、先述したようにスケールされた残差をカラー付きのカーブでリアルタイム表示するのが特徴で、ユーザーにとって非常に見やすい。一方、**OpenFOAM**はデフォルトで「初期残差」を各反復ごとに表示する。これは各方程式の線形ソルバーに入力される残差の大きさで、最終的な収束状態とは異なる。OpenFOAMでは`solutionNorm`などの関数オブジェクトを設定して、真の残差ノルムを監視する必要がある。この点で、初心者にはハードルが高い。

🧑‍🎓

COMSOLは「マルチフィジックス」が売りですが、残差の扱いは特殊ですか?

🎓

その通りだ。**COMSOL Multiphysics**は、複数の物理場を完全に連成して解く「Fully Coupled」アプローチをよく使う。この場合、全物理場の変数を含む単一の大きな残差ベクトルを扱う。収束プロットは、この全体の残差ノルムを示す。各物理ごとの残差を細かく見るには、「分離アプローチ」に切り替える必要がある。マルチフィジックス問題では、ある物理場の残差が別の物理場の収束を妨げる「収束の足を引っ張り合い」が起きるため、この全体残差の監視が特に重要になる。

トラブルシューティング

残差が下がらない・発散するとき

🧑‍🎓

解析を走らせたら残差が全く下がらず、横ばいのままです。最初に疑うべき原因は何ですか?

🎓

まず**境界条件の矛盾**を疑え。例えば、流入速度と流出圧力を同時に指定した閉じた流路で、質量保存が成立たない設定をしていないか。第二に**メッシュ品質**、特にスキュー角が70度を超える悪い要素や、アスペクト比が1000を超える極端に細長い要素がないかチェックせよ。Abaqusならば、VERIFICATION CHECKを実行するとこれらの問題を検出してくれる。

🧑‍🎓

残差が最初は下がるのですが、ある時点で急に跳ね上がり、その後「NaN」(非数)エラーで計算が止まります。これは典型的な何かのサインですか?

🎓

これは**数値的发散**の古典的なパターンだ。特にCFDで、密度や圧力が局所的に物理的にあり得ない値(例えば負の密度)になったときに発生する。原因は、強い圧力勾配や衝撃波を粗いメッシュで捉えようとしたり、緩和係数が大きすぎる場合だ。対策は、まずより保守的な初期条件と緩和係数(0.2以下)で再計算すること。それでもダメなら、高次精度スキームではなく、まずは1次風上差分など安定な離散化スキームで計算を始め、解が安定してからスキームを変更する「スキームの段階的変更」が有効だ。

🧑‍🎓

「残差は収束しているが、物理量がまだ振動している」という状態です。これは収束とみなしていいのですか?

🎓

いいえ、それは**疑似収束**と呼ばれる状態で、最も危険なパターンの一つだ。残差の収束基準が緩すぎる(例えば1e-3)ために、ソルバーは「これ以上解を更新しなくていい」と判断するが、物理的にはまだ定常状態に達していない。この場合、必ず非定常解析に切り替えるべきだ。例えば、カルマン渦のような周期的な現象を定常ソルバーで解こうとすると、必ずこの状態に陥る。監視点の物理量の時間履歴(定常解析では反復履歴)を必ず確認し、周期的またはランダムな振動がないか確認することが、良い結果を得るための鉄則だ。

この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0
Written by NovaSolver Contributors
Anonymous Engineers & AI — サイトマップ
プロフィールを見る