OpenFOAM入門

カテゴリ: オープンソースCAE | 2026-10-02 改稿
CAE visualization for openfoam intro theory - technical simulation diagram
OpenFOAM入門

理論:ケースの構成と、時間刻み・格子の決め方

概要

🙋

OpenFOAMを始めたいのですが、GUIがないと聞いて不安です。何から手をつければいいですか?

🎓

公式のチュートリアルを1つ、そのまま動かすところからだ。OpenFOAMでは1つの解析を「ケース」と呼ぶフォルダで表し、中に3つのフォルダがある。0/には各変数(速度Uや圧力p)の初期値と境界条件、constant/には物性(動粘度など)とメッシュ、system/には計算の時間や出力(controlDict)、離散化の方法(fvSchemes)、連立方程式の解き方(fvSolution)、メッシュの作り方(blockMeshDict)を書く。最初はキャビティ流れ(上蓋だけが動く正方形の箱)のケースを複製して、blockMeshでメッシュを作り、icoFoamで解き、ParaViewで見る。この一連が動いたら、設定を1つずつ変えて結果の変化を確かめていく。GUIがない代わりに、すべての設定がテキストとして残るので、条件の比較や自動化がしやすい。

レイノルズ数・クーラン数・計算量

$$ Re = \frac{U L}{\nu},\qquad Co = \frac{U\,\Delta t}{\Delta x} \le 1,\qquad \text{cost} \propto N^2 \times N = N^3\ \ (\text{2D}) $$

U は代表速度(上蓋の速さ)、L は代表長さ(箱の一辺)、ν は動粘度、Δt は時間刻み、Δx は格子幅、N は一辺の分割数。icoFoamは非圧縮・層流の非定常ソルバーで、PISO法で圧力と速度を連成させる。

Coffee Break よもやま話

ロンドンの研究室から世界へ

OpenFOAMのもとになったFOAMは、1990年代にロンドンのインペリアル・カレッジで、C++で偏微分方程式を「方程式の見た目のまま」書けるライブラリとして開発された。2004年にオープンソースとして公開されてからは、企業や大学の利用が急速に広がった。ソルバーのコードが支配方程式とほぼ同じ形で読めることが、研究者が独自のモデルを組み込みやすい理由になっている。

計算例

例1:動粘度とレイノルズ数(上蓋1 m/s、一辺0.1 m)

動粘度 νレイノルズ数粘性拡散の時間 L²/ν
0.01 m²/s101秒
0.001 m²/s10010秒
0.0001 m²/s1,000100秒

チュートリアルの設定はν = 0.01(Re = 10)で、終了時刻0.5秒。

例2:格子の細かさと計算量(クーラン数1、0.5秒まで)

格子格子幅時間刻みステップ数格子数計算量(20×20を1)
20×200.0050 m0.0050 s1004001
40×400.0025 m0.0025 s2001,6008
80×800.00125 m0.00125 s4006,40064
🙋

Reを1000にしたいので、動粘度を0.0001に変えるだけでいいですか?

🎓

それだけでは足りない。まず、Reが上がると箱の隅にできる小さな渦や、壁の近くの急な速度変化を表すために、20×20では粗すぎる。少なくとも80×80程度に細かくし、時間刻みもクーラン数が1を超えないように小さくする必要がある。次に、流れが落ち着くまでの時間が長くなる。粘性で運動量が箱全体に広がる時間の目安 L²/ν は、Re = 10の1秒に対してRe = 1000では100秒で、0.5秒で止めると途中の状態を見ているだけになる。endTimeを延ばし、中心線の速度分布が時間とともに変わらなくなったことを確かめてから結果を使う。さらにRe = 1000では、格子を細かくしても結果が変わらなくなるか(格子収束)を必ず見る。キャビティ流れには詳しい参照解(Ghiaらの表)があるので、それと比べるのが最初の検証として最適だ。

始め方の流れ

  1. チュートリアルのcavityケースを作業フォルダに複製する。
  2. blockMeshでメッシュを作り、checkMeshで品質を確認する。
  3. icoFoamで解き、ログで残差とクーラン数を確認する。
  4. ParaViewで速度と圧力を見る(paraFoamまたはfoamToVTK)。
  5. 設定を1つずつ変え、参照解と比べて検証する。
Coffee Break よもやま話

「すぐ発散した最初の改造」

チュートリアルを動かせた人が次にやりがちなのは、格子を細かくして、そのまま走らせることだ。ある学生は40×40にしたとたん計算が発散した。ログを見ると、クーラン数が2近くになっていた。格子幅を半分にしたのに、時間刻みを0.005秒のままにしていたためだ。時間刻みを0.0025秒にすると問題なく収束した。OpenFOAMでは controlDict で adjustTimeStep を使い、最大クーラン数を指定して時間刻みを自動で調整させることもできる。

よくある間違い

間違いと対策

間違い起きること対策
格子だけ細かくするクーラン数超過で発散時間刻みも小さく
Reを上げて同じ終了時刻途中の状態を見る定常を確かめる
境界名の不一致起動時にエラー0/とメッシュの名前を揃える
checkMeshを飛ばす悪い要素で発散品質を確認
参照解と比べない誤りに気づかないベンチマークで検証
🙋

関連する内容も知りたいです。

関連する分野

構造解析流体解析熱解析
この記事の評価
ご回答ありがとうございます!
参考に
なった
もっと
詳しく
誤りを
報告
参考になった
0
もっと詳しく
0
誤りを報告
0