オンライン流体解析CATCFDzeroのTips集のページです。
「計算が発散してしまう」、「計算が収束しない」場合の対処法について説明します。
目次
発散に対する対処
計算が発散するというのは、計算中の値が大きくなりすぎたりして異常な結果になり、計算続行が不可能になることです。メッセージは以下のように「エラー:発散しました。」と出力されます。
原因はいろいろ考えられます。
境界条件を確認する
例えば、流入境界を設定しているが、出口境界(圧力境界)を設定していない場合は、流量のバランスが取れず(入ってくるだけで出ていかない)発散します。
この場合は、境界条件が適切か見直してください。
また、設定した条件値が大きすぎたり、正負が逆であったりする場合も発散の原因になります。
緩和係数を下げる
境界条件など入力条件が正しいのに計算初期で発散する場合は、緩和係数を下げてみることをおすすめします。
デフォルトで緩和係数は、速度、乱流が0.7、圧力が0.3になっています。これを、速度、乱流0.5、圧力0.2にしてみてください([詳細設定]>[緩和係数])。
計算初期で発散する場合はこれでうまくいく場合が多いです。これでもまだ発散する場合はもう少し緩和係数を下げてみてもいいですが、あまり改善しないかもしれません。その場合は、他の原因を考えた方がよいでしょう。
緩和係数の詳細は次の記事も参照してみてください。
浮力計算の設定
浮力計算を行っていて計算初期に発散する場合は、基準温度の設定に注意してください。基準温度は予想される場の平均温度に設定するのがよいです。もしくは、境界条件で設定した温度と同じ値を入れてみると発散回避できる場合もあります。
収束しない場合に対する対処
計算は、残差が判定基準を満たすと計算が収束した旨のメッセージを出力し終了します。
ところが、様々な原因により、残差が下がらず計算が収束しない場合があります。この場合、計算の最大の反復回数に到達してしまいます。
収束しない原因はいろいろあります。
非定常性を持つ場合
例えば、非定常性のある問題を扱っている場合などです。CATCFDzeroは定常計算に対応しており、非定常の問題は扱えません。カルマン渦などのように、明らかに非定常的な解を持つものは定常計算では収束しません。
※結果を見るとカルマン渦が出ているようですが、あくまで定常解析なので、得られた解は正確ではありません。
この場合、モニターや残差のグラフは大きく振動していることが分かります。
物理的に非定常な現象を、無理やり定常状態にすることは残念ながらできません。
緩和係数の調整
非定常性がない場合で、収束しない場合は、前述の緩和係数を下げるという対処方法が有効です。値は前述と同様です。
この場合、収束しない状態でのモニターや残差のグラフは、
のように微妙に振動していますが、緩和係数を下げると、
のようにきれいに収束する場合があります。
収束しにくい問題は、圧力境界から逆流がある場合や、浮力計算の場合などです。このような場合は、緩和係数を下げて計算してみることをおすすめします。
緩和係数を下げて計算する場合、デフォルトの反復回数で収束しない場合は、反復回数を大きくしてみる必要があるかも知れません。デフォルトは1000回ですが、残差が順調に落ちている場合で反復回数の上限に達するようであれば、反復回数を大きくして収束させるようにしてください。
収束判定にこだわりすぎない
これはCATCFDzeroだけでなく、他の汎用CFDソフトにも言えることですが、収束しないからといって、その結果が全く使い物にならないかというと決してそうではありません。
残差による収束判定は、解がどれだけ方程式を満たしているかということを意味します。そういう意味では収束するにこしたことはありませんが、設定や条件、メッシュなどが複雑な場合はバランスが取りにくく収束しにくいことが多いです。実際の現場で実用的にCFDを使う場合は、残差にこだわりすぎず、モニター点の値がある程度安定しているか、出口の温度や、物体にかかる力など評価したいポイントの値が安定しているか(ある程度の幅で振動している)などで、収束とみなし結果とすることはよくあります。最近では、残差に加え様々な評価ポイントのモニターで収束を判定するソフトも多いです。
どうしても収束しにくい場合は、モニターなどの推移も合わせて評価してみてください。
残差と収束判定については次の記事も参照してください。