1. はじめに
最近、OpenFOAM というソフトウェアで流体解析ができることを知りました。軽量に動作するという話も聞き、自分の環境でも試せるかどうかを確認してみたのが本記事の内容です。
なお、インストール方法は、徳島大学 風工学研究室の OpenFOAM-11 インストール手順 [1]を参考にしました。Ubuntu 22.04 環境上で実際にビルドを行い、流体解析から結果の可視化までを一通り試しています。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
3. インストール手順
3.1 準備
sudo apt update && sudo apt upgrade -y
mkdir -p ~/OpenFOAM && cd ~/OpenFOAM
3.2. 依存パッケージのインストール
sudo apt-get install -y build-essential cmake git ca-certificates flex libfl-dev \
bison zlib1g-dev libboost-system-dev libboost-thread-dev \
libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev
sudo apt-get install -y libgl1-mesa-dev libqt5x11extras5-dev libqt5help5 \
qttools5-dev qtxmlpatterns5-dev-tools libqt5svg5-dev python3-dev python3-numpy \
libopenmpi-dev libtbb-dev ninja-build qtbase5-dev qtchooser qt5-qmake \
qtbase5-dev-tools libglvnd-dev python-is-python3 curl
- 「徳島大学風工学研究室 Ubuntu22.04LTS環境へのOpenFOAM-11のインストール」[1]のサイトから変えたところ:私の環境はpython3で構築しましたので、"python2-dev" は不要としました。
3.3 ソース取得
git clone https://github.com/OpenFOAM/OpenFOAM-11.git
git clone https://github.com/OpenFOAM/ThirdParty-11.git
3.4 環境設定
source ~/OpenFOAM/OpenFOAM-11/etc/bashrc
# 任意:自動化
echo "source \$HOME/OpenFOAM/OpenFOAM-11/etc/bashrc" >> ~/.bashrc
3.5 ThirdParty のビルド
cd ~/OpenFOAM/ThirdParty-11
./Allwmake
出力の最後の方👇:
⚠️ これは警告なので私は無視して進めました。
Build Metis decomposition
optional component Metis was not found
Build Zoltan decomposition
optional component Zoltan was not found
3.6. ParaView のビルド(Python3対応)
cd ~/OpenFOAM/ThirdParty-11
./makeParaView -python -python-lib /usr/lib/x86_64-linux-gnu/libpython3.10.so
wmRefresh
- 「徳島大学風工学研究室 Ubuntu22.04LTS環境へのOpenFOAM-11のインストール」[1]のサイトから変えたところ
を
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1に変えました。/usr/lib/x86_64-linux-gnu/libpython3.10.so
3.7 OpenFOAM 本体のビルド
以下のコマンドでビルドしましたが、私の環境ではビルドには2~3時間程度かかりました。
cd ~/OpenFOAM/OpenFOAM-11
./Allwmake
icoFoam -help
4. テスト 2次元キャビティ流れの試行
4.1 実行
以下のコマンドで、2次元キャビティ流れのシミュレーションを実行しました。
まずはチュートリアルに含まれているケースを、自分の環境で正しく動かせるかどうかを確認するのが目的です。
どのような系なのかについては、今後あらためて調べてみたいと思います。
(今回は「内容を理解した解析」ではなく、まずは自分の環境で動作確認を行うことが目的ですので、その点はご容赦ください。)
mkdir -p $FOAM_RUN
cd $FOAM_RUN
cp -r $FOAM_TUTORIALS/incompressibleFluid/cavity ./cavity
cd cavity
blockMesh
APP=$(awk '/^application/{print $2}' system/controlDict | tr -d ';')
$APP | tee log.$APP
4.2. ParaView での可視化(v5.10.1対応)
まずは以下のコマンドでParaViewを開きました。
paraFoam
そして以下の手順を実行します。
- Apply をクリック
- Coloring → U(速度)を選択
- 最終時刻ステップを選択
可視化した矢印(Glyph:速度ベクトル)は以下になります
これを表示する手順としては以下を実行しました
- Pipeline Browser で internalMesh を選択
- internalMesh を選択 → Filters → Glyph
- Properties:
- Glyph Type → Arrow
- Orientation → U
- Scale Array → U
- Scale Factor → 0.2
と設定した上で"Apply"を押下しました。
可視化した流線(Stream Tracer)は以下になります
- internalMesh を選択 → Filters → Stream Tracer
- Filters → Stream Tracer
- Properties:
- Vectors → U
- Seed Type → Line Source
- Line Parameters:
- Point1 = (0.0, 0.05, 0)
- Point2 = (0.1, 0.05, 0)
- Resolution = 20
- Integration Direction → Both
と設定した上で"Apply"を押下しました。
5. 「徳島大学風工学研究室 Ubuntu22.04LTS環境へのOpenFOAM-11のインストール」[1]のサイトから変えたところの一覧
上記の章では簡単に記載しましたが、「徳島大学風工学研究室 Ubuntu22.04LTS環境へのOpenFOAM-11のインストール」[1]のサイトから変えたところの一覧を以下に示します。
| ステップ | 徳島大学記事の記述[1] | 今回の実施内容 | 差異・理由 | その他 |
|---|---|---|---|---|
| ① ディレクトリ作成 |
mkdir ~/OpenFOAMcd ~/OpenFOAM
|
同じ | ― | ― |
| ② 基本依存パッケージ | sudo apt-get install build-essential cmake git ca-certificates flex libfl-dev bison zlib1g-dev libboost-system-dev libboost-thread-dev libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev |
同じ | ― | ― |
| ③ サードパーティ依存 | sudo apt-get install ... python2-dev python-is-python3 curl |
sudo apt-get install ... python3-dev python3-numpy ... python-is-python3 curl |
python2-dev 削除 | ― |
| ④ ソース取得 |
git clone https://github.com/OpenFOAM/OpenFOAM-11.gitgit clone https://github.com/OpenFOAM/ThirdParty-11.git
|
同じ | ― | ― |
| ⑤ 環境設定 | source $HOME/OpenFOAM/OpenFOAM-11/etc/bashrc |
同じ (+ .bashrc に追記) |
― | ― |
| ⑥ ThirdParty ビルド |
cd ThirdParty-11./Allwmake
|
同じ。出力に Metis/Zoltan not found
|
警告のみ。無視して実行 | ― |
| ⑦ ParaView ビルド | ./makeParaView -python -python-lib /usr/lib/x86_64-linux-gnu/libpython2.7.so.1 |
./makeParaView -python -python-lib /usr/lib/x86_64-linux-gnu/libpython3.10.so |
Python3.10に変更。 | ― |
| ⑧ 環境更新 | wmRefresh |
同じ | ― | ― |
| ⑨ OpenFOAM 本体ビルド |
cd ../OpenFOAM-11./Allwmake
|
同じ。icoFoam -help で動作確認済み。 |
― | ― |
| ⑩ 計算用ディレクトリ | mkdir -p $FOAM_RUN |
同じ | ― | ― |
| ⑪ チュートリアルコピー | cp -r $FOAM_TUTORIALS/incompressibleFluid/cavity . |
cp -r $FOAM_TUTORIALS/incompressibleFluid/cavity ./cavity |
v11で階層再編された可能性あり。 記事のパスが通らない環境あり。 | ― |
| ⑫ 計算 |
blockMeshpisoFoam
|
blockMesh`APP=$(awk '/^application/{print $2}' system/controlDict |
tr -d ';') && $APP` → icoFoam 実行 |
自動ソルバ抽出で icoFoam が実行された。(controlDictに application icoFoam; があったため) |
| ⑬ 可視化 |
paraFoam(操作説明なし) |
だいたい同じ | ParaView 5.10 UI対応。 | ― |
| ⑭ 環境自動設定 |
.bashrc に source ...bashrc
|
同じ | ― | ― |
6. まとめ
今回は、自分の環境(Ubuntu 22.04)に OpenFOAM-11 をインストールし、2次元キャビティ流れの渦構造を可視化するところまで確認できました。このことから、ひとまず動作確認は成功と言えそうです。
今後は、計算領域の変更方法や3次元化などにも挑戦していきたいと考えています。

