M1 MacでOpenFOAM環境構築

# 目次
[前書き](#前書き)
[必要なソフトウェアのインストール](#必要なソフトウェアのインストール)
[OpenFOAMのインストール](#OpenFOAMのインストール)
[参考](#参考)

# 前書き
OpenFOAMをMacOS上に導入したので、その経緯を書き残します。
今回はDockerを使って導入しました。

なお、使用した筆者のノートパソコンは以下の通りです。

- Macbook Air
- Apple M1
- Sonoma 14.1.2（23B92）

# 必要なソフトウェアのインストール

まずDockerの導入をします。
Dockerについては各種、解説記事や動画をご覧ください。

Macへのインストールはこちらから

https://docs.docker.com/desktop/install/mac-install/

私はM1チップが搭載されているパソコンなので、``Docker Desktop for Mac with Apple silicon``からインストールしました。
ダウンロードが終了すると、Mac内に``Docker.dmg``が現れるので開きます。すると以下のような画面になるので、DockerのアイコンをドラッグしてApplicationに入れてください。

![Docker1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3639393/08b0929f-dbbc-f6a6-7272-fa9e5ee1d167.png)

終了するとアプリの欄にDockerが現れるので開きます。諸々了承しながら進んでいくと、以下のような画面が出てくるので、recommended settingsを選びます。

![Docker2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3639393/18adf6ef-55be-fdd1-de5d-eaf215541ddb.png)

その後自分のPCアカウントのパスワードを入れて、進んでいくと終了です。


合わせてX quartzとParaViewをダウンロードしておきます。
X quartzは``XQuartz-2.8.5.pkg``をダウンロード、ParaViewは``ParaView-5.12.0-RC1-MPI-OSX11.0-Python3.10-arm64.pkg``をダウンロードしました。

https://www.xquartz.org/

https://www.paraview.org/download/

ダウンロード後は開き、指示に従ってセッティングしてください。
X quartzに関しては、セッティング後に タブバーの X quartz > 設定 > セキュリティ に進んで2項目ともにチェックを入れておいてください。（参考までに、これは以下のページのStep4に当たります。）

https://openfoam.org/download/8-macos/

![X_quartz.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3639393/b506f7c1-055f-5f05-e3ea-f3c5287abe17.gif)

一度、設定を変えたらX quartzを閉じて再度立ち上げること。そうしないと変更が反映されない。

# OpenFOAMのインストール

以下のサイトの手順に従う。

https://openfoam.org/download/8-macos/

```X quartz-C:X quartz
sudo curl --create-dirs -o /usr/local/bin/openfoam8-macos http://dl.openfoam.org/docker/openfoam8-macos
```

出力結果は以下のような感じになるはずです。

```X quartz-C:X quartz:result
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6024  100  6024    0     0  11652      0 --:--:-- --:--:-- --:--:-- 11651
```

続けて

```X quartz-C:X quartz
sudo chmod 755 /usr/local/bin/openfoam8-macos
```

2つ目のコードは特段、出力結果は出ないはずです。

その次に、ホームディレクトリ``$HOME``下に、``openfoam``という名前のディレクトリを作っておきます。それに加えて``openfoam``の中に``run``というディレクトリも作っておきます。
Finderアプリから作ってもいいですが、ターミナル上でコマンドを打ってつくることもできます。
その場合は以下の通り。

```C -C:C
cd $HOME
mkdir openfoam
cd openfoam
mkdir run
```

それが終わったら今度はX quartz上での作業。先ほど作った``openfoam``に移ったのち、OpenFOAMを立ち上げます。

```X quartz-C:X quartz
cd $HOME/openfoam
openfoam8-macos
```

すると ``/usr/local/bin/openfoam8-macos``が立ち上がり、以下のような出力結果が出ます。終わるまでにカップ麺を用意するくらいの時間はかかります。

```X quartz-C:X quartz:result
Launching /usr/local/bin/openfoam8-macos
User: ユーザー名とか出てくる
192.168.0.11 being added to access control list
Unable to find image 'openfoam/openfoam8-paraview56:latest' locally
latest: Pulling from openfoam/openfoam8-paraview56
a31c7b29f4ad: Already exists 
a959ccbf45b0: Already exists 
fad8081ee9ff: Already exists 
0267f06c088c: Already exists 
e6329846a041: Already exists 
a48fbb9b33e8: Already exists 
ccc2af79db6c: Pull complete 
c6121b76e6a7: Pull complete 
eddf82ff4e00: Pull complete 
6438260b8deb: Pull complete 
c47492234805: Pull complete 
0e8381fa2767: Pull complete 
1d41ee1540ac: Pull complete 
Digest: sha256:b307565bb6a8f65be82caa9c552e708eb2888e5e35f90f0b620e6f48b8bfa507
Status: Downloaded newer image for openfoam/openfoam8-paraview56:latest
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Welcome to the OpenFOAM v8 Docker Image

Provides bash terminal with OpenFOAM 8 and ParaView 5.6.0

Produced and maintained by CFD Direct (https://cfd.direct), on behalf of the
OpenFOAM Foundation (https://openfoam.org), the owner and distributor of
OpenFOAM as free, open source software under the General Public Licence v3.

Further Resources:
* OpenFOAM User Guide:      https://cfd.direct/openfoam/user-guide
* C++ Source Guide:         https://cpp.openfoam.org
* OpenFOAM Training:        https://cfd.direct/openfoam-training
* Running in the Cloud:     https://cfd.direct/cloud
* Issue (Bug) Reporting:    https://bugs.openfoam.org
* Subscribe to Newsletter:  https://cfd.direct/news
* Contributors to OpenFOAM: https://openfoam.org/dev/contributors

7a498c825d1f: ~>> 
```

部分部分で細かいところが違う可能性はあります。番号はその時々で変化します。

これ以降は ~>> の後にコマンドを打っていけばOKです。
試しに以下のコードを実行してみましょう。``openfoam``下の``run``ディレクトリに行き、チュートリアルとして用意されている``pitzDaily``をそこにコピーして、実施するコードです。
最後の``paraFoam``で、ParaViewを立ち上げて可視化します。

```X quartz -C:X quarz
cd $FOAM_RUN
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
cd pitzDaily
blockMesh
simpleFoam

paraFoam
```

すると以下のような出力が出るはずです。
少しいじってみてやると、流速なども表示できます。

![ParaView.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3639393/1cf8748a-0646-5d7a-675a-8616abcd02aa.gif)

以上です。

# 参考

### 主に参考にした解説

https://www.youtube.com/watch?v=sN07haozWH4

https://openfoam.org/download/8-macos/

### インストール関係

https://docs.docker.com/desktop/install/mac-install/

https://www.xquartz.org/

https://www.paraview.org/download/

### おすすめの書籍

https://nextpublishing.jp/book/14720.html

ただmacOS上への導入方法へはあまり書いておらず、結局ネット上の解説を頼ることになる。