checkMeshでFatal Errorが出なければ、メッシュは問題ない?

checkMeshでFatal Errorが出なければ、メッシュは問題ない?

記事
IT・テクノロジー
OpenFOAMで解析を始めるとき、まず実行することが多いのが checkMesh です。

結果の最後に
Mesh OK.
と表示されると、ひとまず安心します。

ただし、
「checkMeshを通過した=そのメッシュで計算が安定する」
とは限りません。
今回は、その違いを簡単に整理します。

checkMeshは何を確認しているのか
checkMesh では、メッシュの形状や接続関係についてさまざまな項目を確認できます。

例えば、
- non-orthogonality
- skewness
- aspect ratio
- cell volume
- face connectivity
などです。

致命的な問題があればエラーとして検出されます。
そのため、計算前に checkMesh を実行すること自体はとても重要です。
ただし、ここで見ているのは基本的にメッシュそのものの品質です。
実際の計算では、そこに流速、圧力、乱流、時間刻み、境界条件などが組み合わさります。

「計算できるメッシュ」と「計算しやすいメッシュ」は違う
例えば、品質がやや悪いセルがあったとします。
それが流れの変化が小さい場所にあれば、問題なく計算できるかもしれません。

一方で同じ品質のセルでも、
- 高速流が通る場所
- 急拡大・急縮小部
- 壁面近傍
- 気液界面が大きく動く場所
などに存在すると、計算の安定性に影響する可能性があります。
つまり、
メッシュ品質の数値だけでなく、「そのセルがどこにあるか」も重要
です。

数値だけ見て終わらせない
例えばnon-orthogonalityやskewnessが大きい場合、
「基準値以下だからOK」
と数字だけで判断したくなります。

しかし実際には、
- どの程度のセル数が該当するのか
- どこに集中しているのか
- 使用するsolverは何か
- 定常解析か非定常解析か
- 単相流か多相流か
などでも影響は変わります。

特に計算が発散している場合は、checkMesh の結果と実際の流れ場を一緒に見る方が原因を切り分けやすくなります。
checkMeshが通ったのに発散する場合
この場合、メッシュ以外にも原因候補があります。
例えば、
- 時間刻みが大きい
- Courant数が高い
- 境界条件が適切でない
- 初期条件が厳しい
- solver設定が条件に合っていない
などです。
逆に、発散したからといって最初からメッシュを全部作り直す必要があるとも限りません。

まず、
どの変数から不安定になったのか
どのタイミングで崩れたのか
問題が起きた場所はどこなのか
を確認していく方が効率的です。
「Mesh OK」はスタート地点
checkMesh は非常に便利なツールです。

ただ、
Mesh OK = 解析条件も含めてすべて問題なし
という意味ではありません。
「最低限、メッシュとして成立していることを確認できた」
くらいに考えて、その後はログや流れ場と合わせて判断するのがよいと思います。

ココナラでは、既存のOpenFOAMケースについて、
- 計算が途中で不安定になる
- checkMeshは通るのに発散する
- メッシュと設定のどちらを疑えばいいか分からない
- ログのどこを確認すればいいか分からない
といった場合に、ケース設定やログを確認して原因候補を整理するサービスも出品しています。
闇雲に設定を変更する前の、原因切り分けに使っていただくことを想定しています。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す