MacでDockerを使ってOpenFOAMを動かすまで

2021/12/24, 無事openfoamをdockerを用いて動かすことができました. 下の方に,一応過去の(失敗報告)記事も残しておきます.

openFOAMを使ってみたくなったが結構dockerが複雑なので備忘録. 正直何が何やらわからんけれど.

サンプル ( pitzDaily ) を回すまで

前回の記事ではうまくいかなかったけれど, 今日再チャレンジしたら無事動いた. 私が解決したというより, 時間が解決した感じだけれど, 報告しておく. 参考にしたのは, 以下の2つで, 英語が問題ないならこちらをみてくれれば良いと思う.

  1. How To Install OpenFOAM On Mac
  2. Download v8 | macOS

Dockerのインストール

まず, Dockerを公式サイトからインストールする. 特に注意することはなく, 普通にインストールすればよい. 以下のような画面が立ち上がっていればOK. 今後, 特にこのアプリを触ることは無いけれど, アプリは立ち上がっていることを前提とする.

なお, openfoamを触る上でDockerの深い知識はいらないけど, Dockerについては, 以下のサイトが極めてわかりやすい. Docker入門(第一回)~Dockerとは何か、何が良いのか~(さくらナレッジ).

name

XQuartzのインストール

XQuartzをインストールする必然性はわからない. しかし, 上に紹介したサイトでこれを介することを勧めており, 実際これでうまく行ったのでインストールしておく. 公式サイトからインストール可能.

XQuartzを立ち上げると, 以下のようなTerminalが立ち上がる. 以後, 白いターミナルと呼ぶ.

name

openfoam作業用のディレクトリを用意

別にどこでもいいと思うけど, チュートリアルに従うにはホームディレクトリに作るのが便利.

Terminal
cd $HOME          # HOMEディレクトリに移動
mkdir openfoam    # openfoamというディレクトリ(フォルダ)を作る
cd openfoam       # openfoamに移動
mkdir run         # runというディレクトリ(フォルダ)を作る

openfoam8-macosをインストール

OpenFOAM Binary/Source Package Repository には, より新しいバージョンもあるけれど, 今回はチュートリアルにしたがって, openfoam8にしておく.

白いターミナルを立ち上げて, 以下を実行(openfoam8-macosのダウンロードと権限の付与).

白Terminal
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→セキュリティを開き, 下段のボックスにチェックを入れる(なぜかはわからん).

name

ParaViewのインストール

もちろん, ParaViewで可視化しないなら必要ない.

公式サイトからインストール可能. 今回は, チュートリアルに従って, v5.9のParaView-5.9.1-MPI-OSX10.13-Python3.8-64bit.pkgをダウンロードした. 普通にダウンロードしてからインストールする.

openfoamを立ち上げる

白いターミナルを立ち上げて, 以下のコマンドを実行.

白Terminal
cd $HOME/openfoam  # 作業ディレクトリに移動
openfoam8-macos -p # コンテナを立ち上げる. 1回目は時間がかかる. -p はParaViewも一緒に立ち上げるということ. 

テストケース ( pitzDaily ) を回す.

白いターミナル上で, 以下を実行.

白Terminal
cd $FOAM_RUN # 作業ディレクトリに移る. 
             # tutorialケースを作業ディレクトリにコピーしてくる.  
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily . 
cd pitzDaily # pitzDailyというケースに移動. 
blockMesh    # meshを作る(openfoamのコマンド)
simpleFoam   # 計算(openfoamのコマンド)

うまく行けば, 以下のコマンドをうつだけで結果をParaViewで見ることができる.

白Terminal
paraFoam

普通のTerminalで回す

一度, 以上のことをしておけば, 白ターミナルを使わなくても普通の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をココからダウンロードして, 普通にインストール. ログインしておく. ターミナルで以下のようにコマンドが働けば, インストールできてるんやと思う.

Terminal

> 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で読ますためのファイルに変換する. ( このファイル自体は空である. )

Terminal

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系やったよう?

Terminal

> docker exec -it -u 0 of_v2012 /bin/bash #これでrootで入れる
[root@3af3b5290cef ofuser]# yum install vim #これでVimが入る
	

ついてにtreeもいれた.

Terminal

[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
	

わかりやすい!

この記事のTOP    BACK    TOP