Fluentユーザが最も馴染みのある(かつ絶対に見たくない)エラー文「floating point exception」について解説します。
floating point exceptionとは

floating point exceptionは和訳すると「浮動小数点例外」ですが、この言葉だけではエラーの内容は分かりません。
このエラーは、Fluentの計算結果が表現不可能な場合に表示されるエラーメッセージです。
たとえば、ゼロで割る、負の数の平方根を取ろうとする、浮動小数点表現の限界を超えているなど、さまざまな理由で発生する可能性があります。
浮動小数点例外エラーメッセージは、シミュレーションの設定またはモデル構成に問題があるか、ソルバーが数値的不安定に陥っていることを示します。
・不適切な境界条件
・非現実的または不十分な材料特性
・メッシュ品質の問題
などの要因によって生じます。
解決策
一概に原因を特定できるエラー文ではないため、解決策を明確に示すことは困難ですが、
・モデルのセットアップを見直す
・メッシュや境界条件を修正する
・ソルバーの設定を変更する
などの方法で解決する場合が場合があります。
モデルのセットアップを見直す
floating point exceptionの具体的な対策として、以下の例が考えられます。
物理モデル(models):物理モデルの選択も、シミュレーションの安定性と精度に影響を与えます。物理モデルをON/OFFして、問題を切り分けることで、どの物理モデルが収束性を悪化させているのか確認すると、原因が特定できることがあります。
乱流モデルの設定:乱流モデルを使用している場合、そのモデルの設定は解の安定性と精度に影響を与える可能性があります。最もシンプルな層流モデルで収束性を確認するとよいでしょう。乱流モデルのパラメータによっても収束性が変わる可能性もあります。
メッシュや境界条件を修正する
メッシュや境界条件を修正することで、収束性が改善する可能性があります。
境界条件(boundary Conditions): 不適切な境界条件が、最もエラーの原因になりやすい印象です。たとえば、速度入口が非現実的な速度で定義されている場合、浮動小数点例外エラーに遭遇することがあります。流量が多すぎor少なすぎ、発熱量多すぎ、圧力高すぎ、断熱しすぎ、などの境界条件の妥当性を確認しましょう。temperature limited to 1.0000 e+10 in 512 cells on zoneなどのエラーが表示されている場合、特定の変数が頭打ちしているため、境界条件の見直しで改善する可能性があります。
物性値(Material Properties):物理的に妥当でない、または定義が不十分な材料特性も、浮動小数点例外エラーにつながる可能性があります。材料プロパティが適切に定義され、物理的に妥当であることを確認するために材料プロパティをレビューすることは、この種のエラーの防止に役立ちます。
メッシュ品質:メッシュの品質が悪いと、浮動小数点例外エラーが発生する可能性があります。メッシュの品質が高く、適切に解像されていることを確認するためにメッシュをレビューすることは、この種のエラーの防止に役立ちます。
初期条件:不適切な初期条件も浮動小数点例外エラーにつながる可能性があります。初期条件をレビューして、それが物理的に妥当で、よく定義されていることを確認します。
ソルバーの設定を変更する
ソルバーの設定によって、収束性が向上する可能性があります。
Convergence Criteria(収束基準):ソルバーは、特定の基準が満たされたときに終了します。たとえば、残差ベースの収束基準を使用している場合、特定の変数の残差が指定された許容値以下になると解が停止します。残差が減少しない場合、シミュレーションに問題があることを示している可能性があります。許容誤差を大きくすることで、問題を解決できるかもしれません。
Time Stepの設定:シミュレーションが過渡的である場合、タイムステップサイズはソリューションの安定性と精度に影響を与える可能性があります。安定性を確保し、ソルバーが浮動小数点例外エラーに遭遇するのを防ぐために、タイムステップサイズを調整する必要がある場合があります。
Solver Options:ソルバーによって、解法に影響を与えるオプションが異なります。たとえば、Solution>methodsの設定項目であるpressure-velocity coupling optionsは、解の安定性に影響を与える可能性があります。SIMPLE, PISOなど複数のスキームを試すことで、収束性が改善する可能性があります。Divergence detected in AMG Solverなど、ソルバーの問題の場合、このオプションを修正することで改善する可能性があります。
緩和係数(Under-Relaxation Factors):緩和係数と呼ばれるものです。解を安定させ、振動を防止するために使用されます。緩和係数を小さくすることで、収束性が改善する可能性があります。
memo:どれから見ればいい? floating point exceptionエラーの要因となりうる例を挙げました。どれを優先して確認すべきかは、計算によりますが、 ①境界条件(boundary Conditions) ②緩和係数(Under-Relaxation Factors) ③物性値(Material Properties) ④物理モデル(models) ⑤ソルバーオプション(Solver Options) の順に、計算の前提条件が妥当かどうかを確認することをおすすめします。 発散する直前の計算結果を出力して、コンター図などを確認しながら、温度や圧力、流速が異常に高い点がないか確認しましょう。
Images used courtesy of ANSYS, Inc.
コメント