機械系高専生がOpenFOAM動かしてみた

# はじめに

こんにちは、Iwaken Lab.のJJです。
普段は奈良高専機械工学科をしています。
現在は流体可視化AR,MRの開発をしています。そのために必要な技術となるCFD解析に用いるOpenFOAMについて、インターネットの情報を一度ここに集約しようと思います。

この記事は、Iwaken Lab.アドベントカレンダー2023　シリーズ2の18日目の記事です。
https://qiita.com/advent-calendar/2023/iwakenlab

# 概要
OpenFOAMとは、Open source Field Operation And Manipulationの略称で、主に数値流体力学と連続体力学の数値解析ソフトウェアです。

機能（ソルバ）としては、
・非圧縮性流体
・圧縮性流体
・多相流体
・DNS
・燃焼
・熱輸送、浮力駆動流れ
・粒子追跡流れ
・分子動力学
・電磁気
・固体応力解析
・金融

以上のものが用意されています。技術の詳細、バックグラウンドについては公式の記事（https://openfoam.org/ が参考になると思うので、そちらを参考してください。

# 環境
・M1 MacBook Air 
・OpenFOAM11-macos

# 導入
基本的には公式ドキュメント(https://openfoam.org/download/11-macos/) を参考にしていきます。

## 1.XQuartzを入れます。
OpenFOAMで解析を行う際は、ターミナルからコマンドを叩くのではなくXQuartzをターミナルとしてコマンドを入力していきます。仕様なのか、コマンドペーストができないので全て手打ちになってしまいますが、辛抱強く、打ち間違えなく実行していきましょう！

ダウンロードはここからです。（https://www.xquartz.org/）
![スクリーンショット 2023-12-15 21.48.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/adbfad07-e26c-3e3e-a24c-ccfab18b6406.png)
Download部分を押して開きます。

インストールできたら、任意設定ですがやっておくと便利なので以下の設定をします。
![スクリーンショット 2023-12-15 21.50.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/92556785-fc82-1ef2-3226-9d23e46ce2f7.png)

設定を開き、
![スクリーンショット 2023-12-15 21.51.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/241e4ca6-5c88-caeb-9e2a-0732b6c0b1ac.png)
『ネットワーク・クライアントからの接続を許可』にチェックを入れます。

これでXQuartzの設定は以上です。

## 2.Dockerを入れる

Dockerは入っている人が多いかと思いますが、一応導入の手順だけまとめておきます。
こちらのリンク（https://docs.docker.com/get-docker/） から、
![スクリーンショット 2023-12-16 11.12.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/da3d2f7c-19ec-404e-de1f-4add6fde8730.png)

 1番上のMacのやつをダウンロードします。あとは流れに従うだけです。

 XquartzとdockerはHomebrewで入れたほうが楽だと思うので、使える方はコマンドからインストールしてください。Homebrewマジで便利。

## 3.ParaViewを入れる
後々説明しますが、コンテナ内部とは別で可視化ソフトのParaViewは動かした方が楽なのでインストールします。
https://www.paraview.org/download/

![スクリーンショット 2023-12-16 12.28.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/a16305fa-9709-42de-48ee-7a0a46812daa.png)
良さげなのを選んで入れてください。どれ入れたらいいかわからない時はHomebrew経由で。

## 3.OpenFOAMを入れる

 いよいよOpenFOAMを入れていきます。先ほど設定を変更したXQuartzを再起動して、![スクリーンショット 2023-12-16 11.44.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/fa3c047c-f8ad-9858-3733-5b8d408f403a.png)

この画面でコマンドを入力していきます。

```
sudo curl --create-dirs -o /usr/local/bin/openfoam11-macos　http://dl.openfoam.org/docker/openfoam11-macos
```

パスワードが求められるのでMacを開くときのパスワードを入力
次に↓のコマンドを入力します。

```
sudo chmod 755 /usr/local/bin/openfoam11-macos
```

ついでにこの2つも
```
sudo curl -o /usr/local/bin/openfoam-macos-file-system http://dl.openfoam.org/docker/openfoam-macos-file-system
sudo chmod 755 /usr/local/bin/openfoam-macos-file-system
```

解析するデータを入れるフォルダを用意します。

```
mkdir openfoam
cd openfoam
mkdir run
```
これでOpenFOAMの準備が整ったので、起動します。
Dockerが起動されている状態で、

``` 
cd $HOME/openfoam
openfoam11-macos
```
↑これでdockerコンテナができます。初回は少し時間がかかります。

```
openfoam11-macos -p
```
これで可視化に使うParaViewも同時に使えるようになりますが、公式も明言しているように![スクリーンショット 2023-12-16 12.08.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/255e2228-3066-286f-3ad7-159cb1fc84e2.png)

**4.The speed of ParaView running from the Docker container is very slow.**
なので、基本的には.vtk形式でエクスポートして、別途インストールしたParaViewで結果を確認する方がおすすめです。

## 4.実際に解析

これで準備ができたので、実際にOpenFOAMに入っているバックステップ流れサンプルデータの解析から可視化までやってみます。
コンテナが起動している状態で、

```
cd $FOAM_RUN
cp -r $FOAM_TUTORIALS/incompressibleFluid/pitzDailySteady .
cd pitzDailySteady
blockMesh
foamRun
paraFoam
```
これを順次実行していくとparaViewが起動すると思いますが、案の定クソ遅いので
```
foamToVTK -fields '(U)'
```
これで速度分布だけエクスポートできます。Uだと速度、pだと圧力。

エクスポートしたデータを、1番左上のファイルマークを押して選択すると、快適に可視化したデータを眺めることができます。

![スクリーンショット 2023-12-16 12.25.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3644559/bc107050-6817-0a40-551a-c47d6a989f2d.png)



### 補足
これはメッシュ切るのと解析を順次コマンドを打ち込んで実行しているので面倒です。
なので、全て実行することのできるコマンドもあります。
```
chmod +x ./Allrun
Allrun
```
これでメッシュも解析も全部やってくれます。

詳しくは　
https://www.xsim.info/articles/OpenFOAM/tutorials/incompressible-pimpleFoam-pitzDaily.html　


# 終わりに
いかがだったでしょうか？解説があまり多くない中、自分なりに手探りでやってきたまとめにしたつもりです。
実際に解析データを設定する際は、Xsim https://xsim.work/ を使うのが便利です。

単純にマシンパワー不足で解析時間がかかるのか、Docker経由でOpenFOAMを動かしているから遅くなっているのかが気になるので、今後はデスクトップPCのOSにUbuntuを採用してそこで直で動かしてみたいと思います。