MacでDockerを使ってOpenFOAMを動かすまで
最終更新:2021/12/24, 初稿:2021/06/09
2021/12/24, 無事openfoamをdockerを用いて動かすことができました. 下の方に,一応過去の(失敗報告)記事も残しておきます.
openFOAMを使ってみたくなったが結構dockerが複雑なので備忘録. 正直何が何やらわからんけれど.
サンプル ( pitzDaily ) を回すまで
前回の記事ではうまくいかなかったけれど, 今日再チャレンジしたら無事動いた. 私が解決したというより, 時間が解決した感じだけれど, 報告しておく. 参考にしたのは, 以下の2つで, 英語が問題ないならこちらをみてくれれば良いと思う.
Dockerのインストール
まず, Dockerを公式サイトからインストールする. 特に注意することはなく, 普通にインストールすればよい. 以下のような画面が立ち上がっていればOK. 今後, 特にこのアプリを触ることは無いけれど, アプリは立ち上がっていることを前提とする.
なお, openfoamを触る上でDockerの深い知識はいらないけど, Dockerについては, 以下のサイトが極めてわかりやすい. Docker入門(第一回)~Dockerとは何か、何が良いのか~(さくらナレッジ).
XQuartzのインストール
XQuartzをインストールする必然性はわからない. しかし, 上に紹介したサイトでこれを介することを勧めており, 実際これでうまく行ったのでインストールしておく. 公式サイトからインストール可能.
XQuartzを立ち上げると, 以下のようなTerminalが立ち上がる. 以後, 白いターミナルと呼ぶ.
openfoam作業用のディレクトリを用意
別にどこでもいいと思うけど, チュートリアルに従うにはホームディレクトリに作るのが便利.
cd $HOME # HOMEディレクトリに移動 mkdir openfoam # openfoamというディレクトリ(フォルダ)を作る cd openfoam # openfoamに移動 mkdir run # runというディレクトリ(フォルダ)を作る
openfoam8-macosをインストール
OpenFOAM Binary/Source Package Repository には, より新しいバージョンもあるけれど, 今回はチュートリアルにしたがって, openfoam8にしておく.
白いターミナルを立ち上げて, 以下を実行(openfoam8-macosのダウンロードと権限の付与).
sudo curl --create-dirs -o /usr/local/bin/openfoam8-macos http://dl.openfoam.org/docker/openfoam8-macos sudo chmod 755 /usr/local/bin/openfoam8-macos
白いターミナルのpreference→セキュリティを開き, 下段のボックスにチェックを入れる(なぜかはわからん).
ParaViewのインストール
もちろん, ParaViewで可視化しないなら必要ない.
公式サイトからインストール可能. 今回は, チュートリアルに従って, v5.9のParaView-5.9.1-MPI-OSX10.13-Python3.8-64bit.pkgをダウンロードした. 普通にダウンロードしてからインストールする.
openfoamを立ち上げる
白いターミナルを立ち上げて, 以下のコマンドを実行.
cd $HOME/openfoam # 作業ディレクトリに移動 openfoam8-macos -p # コンテナを立ち上げる. 1回目は時間がかかる. -p はParaViewも一緒に立ち上げるということ.
テストケース ( pitzDaily ) を回す.
白いターミナル上で, 以下を実行.
cd $FOAM_RUN # 作業ディレクトリに移る. # tutorialケースを作業ディレクトリにコピーしてくる. cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily . cd pitzDaily # pitzDailyというケースに移動. blockMesh # meshを作る(openfoamのコマンド) simpleFoam # 計算(openfoamのコマンド)
うまく行けば, 以下のコマンドをうつだけで結果をParaViewで見ることができる.
paraFoam
普通のTerminalで回す
一度, 以上のことをしておけば, 白ターミナルを使わなくても普通のTerminalで回すことができた.
cd $HOME/openfoam openfoam8-macos -p cd $FOAM_RUN # 作業ディレクトリに移る. # tutorialケースを作業ディレクトリにコピーしてくる. cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily . cd pitzDaily # pitzDailyというケースに移動. blockMesh # meshを作る(openfoamのコマンド) simpleFoam # 計算(openfoamのコマンド)
サンプルを回すまで(old)
もし読みたければ click
Dockerのインストール
Dockerをココからダウンロードして, 普通にインストール. ログインしておく. ターミナルで以下のようにコマンドが働けば, インストールできてるんやと思う.
> docker --version Docker version 20.10.6, build 370c289
open FOAMのインストール
open FOAMのインストール. ココ が一番わかりやすい. しかし, 使わなかったコマンドもあるので, 以下に記述する.
適当なディレクトリに,
- installMacOpenFOAM
- startMacOpenFOAM
./installMacOpenFOAM
を実行.
どうもこれで, コンテナができるよう. 次に, ./startMacOpenFOAM
を実行.
これで, openFOAMが起動した?
一度, コンテナを作ると, exit
でコンテナを出ても, Dockerのデスクトップアプリからof_v2012
という名のコンテナをRunすれば, このコマンドでまた入れた.
サンプルを回す
あとは, 以下のコマンドで, チュートリアルの中のcavityが回った.
- 1行目:どうも,
/home/ofuser/workingDir
というディレクトリの下に, Macのユーザのホームディレクトリ ( 〜 ) があるよう.なので, この階層の下の適当なディレクトリに移って作業をすればよい.と思ったが, そんな単純なわけでもなさそう. 以下で指定しているディレクトリが無難そうである. - 2行目:そのディレクトリに, 必要なケースファイルをコピーしてくる.
- 3行目:メッシュを作る.
- 4行目:回す.
- 5行目:結果をParaviewで読ますためのファイルに変換する. ( このファイル自体は空である. )
cd /home/ofuser/workingDir cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity . cd cavity blockMesh icoFoam touch case.foam
あとは, できたcase.foam
をparaViewのopenFOAMreaderから読ませればよい.
ここまでできたら, OpenFOAMによる熱移動と流れの数値解析(第2版) のp.22にあるチュートリアルケースに進めば良いと思う.
その他
Vimを入れたい
Vimが入っていなかった. Viは入っていいたが.
root権限でDockerに入って, Vimをダウンロードしないといけないよう.
Dockerのデスクトップアプリからof_v2012
という名のコンテナをRunしてから, 以下でいけた.
yumでインストールできたが, ディストーションが違うとやり方は異なるので注意. よくわからんが, このコンピュータに入ったのはcentOS系やったよう?
> docker exec -it -u 0 of_v2012 /bin/bash #これでrootで入れる [root@3af3b5290cef ofuser]# yum install vim #これでVimが入る
ついてにtree
もいれた.
[root@3af3b5290cef cavity]# yum install tree #outputは略 [root@3af3b5290cef cavity]# tree . ├── 0 │ ├── p │ └── U ├── constant │ └── transportProperties └── system ├── blockMeshDict ├── controlDict ├── fvSchemes ├── fvSolution └── PDRblockMeshDict 3 directories, 8 files
わかりやすい!