解検証 — CAE用語解説
解検証
解析結果が「正しい」かどうかって、どうやって判断するんですか?実験と合ってればOK?
理論と物理
解検証の定義と目的
「解検証」という言葉をよく聞きますが、具体的には何をすることなんですか?単に結果を見て合ってるか判断するだけですか?
いい質問だ。解検証(Verification)は、数値計算の「正しさ」を確認するプロセスだ。具体的には、「立てた数理モデルを、コンピュータがどれだけ正確に解けたか」を評価する。例えば、支配方程式がナビエ-ストークス方程式であれば、離散化や反復計算によって生じる誤差が許容範囲内かどうかを調べる。
「許容範囲」というのはどう決めるんですか?感覚的なものですか?
感覚ではない。定量的な指標を使う。代表的なのは、メッシュ収束性の確認だ。例えば、ある点の応力を、粗いメッシュ、中くらいのメッシュ、細かいメッシュで計算し、その変化を見る。細かくしても結果がほとんど変わらなくなったとき、メッシュに依存しない解(メッシュ独立解)が得られたと判断する。変化が1%未満なら、実用上は収束したとみなすことが多い。
メッシュを細かくする以外に、検証の方法はありますか?
ある。もう一つの強力な手法は、製造された解析解(Manufactured Solution)を使う方法だ。これは、まず自分で解(例えば、速度場や温度場)を適当に決める。次に、その解を支配方程式に代入して、無理やり成り立つようにソース項(外力や熱源)を逆算する。最後に、そのソース項を設定してCAE解析を行い、出てきた数値解が最初に決めた解に一致するかどうかを調べる。これで、コードや設定そのものが方程式を正しく解けているか検証できる。
数値解法と実装
離散化誤差の定量評価
メッシュ収束性を調べるとき、ただ3回計算して比べるだけでいいんですか?もっとシステマティックな方法はないですか。
そのために、グリッド収束指数(GCI: Grid Convergence Index)という定量的な評価法が広く使われている。Richardson補外法に基づいていて、3段階以上の異なるメッシュサイズ
収束率って何ですか?
離散化誤差がメッシュサイズ
ソルバー側の反復計算の収束と、この離散化誤差の収束は別物ですよね?どう区別して評価するんですか?
その区別が非常に重要だ。解検証を行う際は、まずソルバーの反復収束残差を十分に小さく(例えば、10の-6乗以下に)して、離散化誤差以外の誤差を無視できる状態にしてから、メッシュ依存性を調べる。Ansys Fluentなら「残差モニター」、Abaqus/Standardなら「MSGファイル」で反履歴を確認する。反復が不十分な状態でメッシュ収束性を論じても意味がない。
実践ガイド
実務での検証ワークフロー
実際の設計業務で、毎回メッシュを3パターンも作って計算するのは時間がかかりすぎませんか?
確かに全ての解析でフルGCI解析は現実的ではない。そこで、実務では段階的なアプローチを取る。まず、類似形状の過去の解析データベースから、どの領域をどのくらいのサイズにすればよいかの「メッシュ仕様書」を作成する。例えば、自動車のボディ剛性解析なら、溶接部は5mm、平面部は20mm、といった具合だ。新しい解析では、まずその仕様通りにメッシュを作り、一度計算する。
それで終わりですか?
いや、次が重要だ。その結果を見て、応力集中が発生している領域や、結果が設計判断のボーダーラインにある領域を特定する。その「クリティカルな領域」だけを対象に、メッシュを1段階細かくした局部細密化解析を追加で行う。全体を細かくするのではなく、関心領域だけをピンポイントで検証するのだ。これで、全体の計算コストを抑えつつ、必要な部分の解精度を確認できる。
局部細密化するとき、粗いメッシュとの境界はどう処理するんですか?
それこそが実務のツボだ。Ansys Workbenchでは「メッシュコントロール」で局部細密化範囲を指定できるが、細かいメッシュと粗いメッシュの境界では、要素サイズが急激に変化しないように、移行領域を設ける必要がある。目安としては、隣接する要素のサイズ比を1.5倍以内に収める。これを守らないと、その境界で不自然な応力集中が発生し、それが検証のノイズになってしまう。
ソフトウェア比較
各ソフトウェアの検証支援機能
解検証の作業を支援する機能は、ソフトによって大きく違うんですか?
かなり違いがある。Ansys Workbenchには「Convergence」ツールがある。パラメータスタディを使ってメッシュサイズを変えた複数の解析を自動で実行し、指定した結果(最大応力など)の収束状況をグラフで可視化してくれる。一方、Abaqus/CAEにはこれに直接対応する自動化ツールは標準ではないが、Pythonスクリプトを使って同様のプロセスを組むことは可能だ。
専用の検証・妥当性確認ソフトというのはないんですか?
ある。NVIDIAが提供する「Simulation Verification & Validation Suite」は、特にCFD解析に特化して、メッシュ品質チェック、ソルバー設定のベストプラクティスとの照合、結果の統計的比較などを自動で行う。また、オープンソースでは「CEI Ensight」も結果の比較・検証機能が強い。ただし、これらは汎用ソルバーではなく、あくまで結果を評価するポスト処理ツールという位置付けだ。
COMSOL Multiphysicsはどうですか?マルチフィジックスだと検証が複雑になりそうですが。
COMSOLは「研究」モードに「メッシュ収束性の研究」という組み込みの機能がある。これを使うと、グローバルメッシュサイズや局部メッシュ設定を系統的に変化させた一連の解析をセットアップできる。マルチフィジックスの場合、各物理場で関心量が異なるので、例えば構造応力と最高温度の両方について、別々に収束性を追う必要がある。COMSOLのこの機能では、複数の目的変数を同時にモニターできるのが利点だ。
トラブルシューティング
検証時に陥りやすい問題
メッシュを細かくしていったら、かえって最大応力がどんどん大きくなり、収束する気配がありません。これはどういう状況ですか?
それは典型的な「特異点」の問題だ。鋭い角や完全に固定された点の近傍では、理論上、応力は無限大に発散する。メッシュを細かくすればするほど、その無限大に近づいていくので、数値は際限なく大きくなる。この場合、メッシュ収束性は得られない。実務的には、幾何学的な特異点をフィレットで除去するか、あるいは「構造上の不連続から十分離れた位置」の応力(例えば、ASME Boiler and Pressure Vessel Codeで規定されるストレス線形化の考え方)を評価対象にする。
メッシュを変えると、最大応力の発生場所自体が移動してしまうことがあります。これは検証として問題ありませんか?
大きな問題だ。それは、メッシュが粗すぎて真の応力集中部位を捉えられていないか、あるいはメッシュの品質(アスペクト比やスキュー角)が極端に悪く、数値的なノイズが最大値として現れている可能性が高い。まずはメッシュ品質レポートを確認せよ。Abaqusでは、アスペクト比50以上や内角が10度以下の要素は警告が出る。そのような要素が最大応力付近にないか確認し、メッシュを改善する必要がある。
ソルバーの収束判定基準を厳しくしすぎると計算時間が膨大になります。妥協点はありますか?
ある。まず、残差の基準値(10の-3乗や-4乗など)を少し緩めて計算し、関心ある物理量(抗力や平均温度)の時系列履歴をモニターする。残差はまだ振動していても、その物理量の値が一定値に落ち着いていれば、実用上は収束とみなしてよい場合が多い。ただし、これは検証作業の「最終ステップ」での話だ。メッシュ依存性を調べる「本番の検証計算」では、残差を可能な限り小さく(少なくとも10の-6乗)して、ソルバー誤差の影響を排除した状態で行うのが原則だ。検証のためには計算時間がかかっても仕方ない、というのがプロの姿勢だ。
関連トピック
なった
詳しく
報告