CFD解析の発散
CFD解析の発散とは
先生、OpenFOAMで流体解析を回したら「Floating point exception」で落ちました…
CFDの発散は、速度場や圧力場の値が計算中に無限大に発散してしまう現象だ。原因は多岐にわたるが、メッシュ品質、境界条件の不適切さ、時間刻みの設定が三大原因だ。
構造解析の収束失敗とは性質が違うんですか?
構造のFEAは通常暗黙的に解くので「収束しない」という形で現れる。CFDの場合、特に陽解法ベース(多くのFVMソルバー)ではCFL条件を超えると即座に値が発散する。
エラーメッセージと対策
OpenFOAM
メッセージ: #0 Foam::error::printStack(Foam::Ostream&) at ??:? --> FOAM FATAL ERROR: Floating point exception
もしくは:
Maximum number of iterations exceeded. Solution has diverged.
OpenFOAMではまずCourant数を確認する。system/controlDictのmaxCoを0.5以下にするか、adjustTimeStep yesで自動調整させる。メッシュのcheckMeshで非直交性(non-orthogonality)が70度を超えていないか確認。
Ansys Fluent
メッセージ: Divergence detected in AMG solver: pressure correction. Solution is diverging.
Fluentではsolver settingsでUnder-Relaxation Factor(URF)を下げる。圧力のURFを0.3→0.1、運動量のURFを0.7→0.3に下げるのが初手。Coupled solverなら CFL numberを5→1に下げる。
STAR-CCM+
STAR-CCM+ではResidual Monitorが指数関数的に増大する場合は発散。URFの低減やメッシュ改善が必要。Polyhedral meshはtetrahedral meshより安定する。
メッシュの品質がCFDでは特に重要なんですね。
CFDでは非直交性(non-orthogonality)、スキューネス(skewness)、アスペクト比が特に重要だ。OpenFOAMのcheckMeshでは、非直交性 > 65度、スキューネス > 4.0の要素があると警告が出る。
ソルバーエラーの原因特定に費やす時間は、もっと短くできるはず。 — Project NovaSolverはエラー診断体験の改善を研究テーマの一つとしています。
Project NovaSolver — CAE実務の課題に向き合う研究開発
「CFD解析の発散をもっと効率的に解析できないか?」——私たちは実務者の声に耳を傾け、既存ワークフローの改善を目指す次世代CAEプロジェクトに取り組んでいます。具体的な機能はまだ公開前ですが、開発の進捗をお届けします。
進捗通知を受け取る →