Raspberry Pi 4BでOpenFOAM (Docker使用)

初投稿です．

最近Raspberry Pi 4B 8GBを初購入してOpenFOAMを導入してみたのですが，案外古い記事ばかりでそのまま適用が出来ず，またLinuxに疎い部分もあって多少苦戦したので，備忘録代わりに書き残しておきたいと思います．

マシン：Raspberry Pi 4B 8GB
OS：Raspberry Pi OS (64bit) 2023-02-21
クライアント：MobaXterm Portable v23.0

基本的な流れは，[公式で紹介されている通りです．](https://openfoam.org/download/10-linux/ "Download v10 | Linux") Raspberry OSはDebianがベースだそうなので，Debianにおけるやり方に沿って進めていきます．

### Dockerの導入
ではまず最初に，Dockerを導入していきます．
```
sudo apt-get -y update
curl -fsSL https://get.docker.com/ | sh
```
<br>

導入が出来たら，Dockerグループにユーザーを追加します．dockerコマンドを打つにはroot権限が必要なためです．
```
sudo usermod -aG docker $(whoami)
```
<br>

ここまで来たら，一度Raspberry Piを再起動します．
```
sudo reboot
```
<br>

### OpenFOAMの導入・実行
続けてOpenFOAMのDockerコンテナをダウンロードして展開します．公式では`http://dl.openfoam.org/docker/openfoam10-linux`から落とすように書かれていますが，このコンテナの場合，ARMアーキテクチャを導入するRaspberry Piでは正常に展開できないそうです．そのため，自分自身でARM用にDockerコンテナを構築しようと，色々試みましたが上手くいきませんでした．ARMアーキテクチャはApple M1チップでも使用されているので，情報自体はそこそこ見つかるんですけどね…

幸い，[Github上でARM用に構築されたDockerコンテナ](https://github.com/gerlero/openfoam-docker-arm "OpenFOAM for ARM via Docker")を公開してくださっている，素晴らしい方がいらっしゃいましたので，こちらを使って見ます．

```
sudo sh -c "wget https://raw.githubusercontent.com/gerlero/openfoam-docker-arm/main/openfoam-docker-arm -O /usr/bin/openfoam-docker-arm"
```
<br>

ダウンロードしたDockerコンテナの権限を変更します．
```
sudo chmod 755 /usr/bin/openfoam-docker-arm
```
<br>

ここまで来たら，後はOpenFOAMを実行してみましょう．まずはDockerコンテナの作業ディレクトリを作成し，移動しましょう．
```
mkdir -p $HOME/OpenFOAM
cd $HOME/OpenFOAM
```
<br>

最後に，Dockerコンテナを起動します．最初の起動時はイメージのダウンロード・展開のため時間がかかります．
```
openfoam-docker-arm
```
<br>

最初の環境構築が終わり，以下の表示が出ればOpenFOAMの環境構築～起動は無事に成功です．
```
---------------------------------------------------------------------------
  =========                 |
  \\      /  F ield         | ARM OpenFOAM in a container [from @gerlero]
   \\    /   O peration     |
    \\  /    A nd           | github.com/gerlero/openfoam-docker-arm
     \\/     M anipulation  | www.openfoam.com
---------------------------------------------------------------------------
 Release notes:  https://www.openfoam.com/news/main-news/openfoam-v2212
 Documentation:  https://www.openfoam.com/documentation/
 Issue Tracker:  https://develop.openfoam.com/Development/openfoam/issues/
 Local Help:     more /openfoam/README
---------------------------------------------------------------------------
System   :  openSUSE Leap 15.4
OpenFOAM :  /usr/lib/openfoam/openfoam2212
Build    :  _fd8c5e00-20221221 OPENFOAM=2212 patch=0

Note
    Different OpenFOAM components and modules may be present (or missing)
    on any particular container installation.
    Eg, source code, tutorials, in-situ visualization, paraview plugins,
        external linear-solver interfaces etc.
---------------------------------------------------------------------------
```
<br>
<br>


### Paraviewの導入・実行
OpenFOAMの計算結果可視化に用いるParaviewに関しては，複雑なことは無く，[公式で説明されてる通りです．](https://linux-packages.com/ubuntu-jammy-jellyfish/package/paraview "paraview on Ubuntu 22.04 LTS (Jammy Jellyfish)") 先ほどのOpenFOAMが起動したままであれば，`exit`コマンドで一旦戻って打ち込んでください．
```
sudo apt update
sudo apt install paraview
```
<br>
<br>

### 緒言
本記事では，Raspberry Pi 4BにおけるOpenFOAMの導入方法について紹介しました．このマシンでわざわざ数値流体を扱おうとする奇特な方がどこまでいるのか…？とも思いますが，そんな奇特なチャレンジをされる方の参考になればと思います．

また，私の方では，Raspberry Piを4枚購入したので，これらでOpenFOAMによる並列計算を行う，いわばスーパーコンピューティングの技術を再現できればいいなと思案しています．この件についても，何かしら難しい所があれば，備忘録的に記事にしたいなと思います．

##### 引用一覧
https://openfoam.org/download/10-linux/ (Download v10 | Linux)
https://github.com/gerlero/openfoam-docker-arm (OpenFOAM for ARM via Docker)
https://linux-packages.com/ubuntu-jammy-jellyfish/package/paraview (paraview on Ubuntu 22.04 LTS (Jammy Jellyfish))