概要
- OpenFOAM-4.1をDockerを使ってmacOSで起動する手順の紹介
- OpenFOAMの正式HPの手順通りやったら簡単にできましたが、可視化でつまづいたのでその代替手段について
必要環境
HPより引用:https://openfoam.org/download/4-1-macos/
- Intelのハードウェアが乗っている2010年以降のモデル
- macOSは10.10.3 Yosemiteより新しいこと
- 最低4GBのRAM
- version 4.3.30より以前のVirtualBoxがインストールされていないこと
Docker for Macを使用するために必要な環境らしいです。
Dockerのダウンロード
Dockerは、軽量な仮想化環境です。
Dockerはそのままではただの空箱ですが、Linuxで動くソフトのパッケージ(コンテナ)をDockerにマウントすることで、Macのターミナルからソフトを使うことができるようになります。
Docker for Macをインストールします。
https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
Stable channel(安定版)のGet Docker for Macをクリックしてdmgをダウンロードし、インストールします。
Applications内のDocker.appをクリックし、起動します。
$ docker --version
として、バージョンが表示されればOKです。また、
$ docker ps -a
を実行すると、これまで実行したコンテナリストの一覧を確認することができます。
初期状態では何も表示されません。試しにhello-worldをDockerから起動すると以下のようになります。
(引用:https://docs.docker.com/engine/getstarted/step_one/#step-2-install-docker)
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
535020c3e8ad: Pull complete
af340544ed62: Pull complete
Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker Engine CLI client contacted the Docker Engine daemon.
2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker Engine daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com
For more examples and ideas, visit:
https://docs.docker.com/userguide/
必要なファイルを自動的にダウンロードしています。
一度ダウンロードすると、次回以降の起動は速くなります。
openfoam4-macosのダウンロード
以下サイト
http://dl.openfoam.org/
の、docker/openfoam4-macosをダウンロードします。
実行権限を与え、PATHが通っているディレクトリに移動します。
$ sudo chmod 755 openfoam4-macos
$ sudo mv openfoam4-macos /usr/local/bin
XQuartzのインストール
-
以下のサイト
https://www.xquartz.org/
からXQuartzをダウンロードし、インストールします。 -
XQuartzを起動します。
-
XQuartz → 環境設定 → セキュリティ
「ネットワーク・クライアントからの接続を許可」にチェックを入れます。 -
XQuartzを再起動します。
XQuartzは、dockerで可視化ソフトを立ち上げたり、gnuplotで描画するときに必要です。
何らかのコマンド入力時に
cannot connect to X server
とエラーが出たら、dockerからexitして、XQuartzを起動したのちに再びdockerを起動する必要があります。
openfoam-macos-file-systemのダウンロード
以下サイト
http://dl.openfoam.org/
の、docker/openfoam-macos-file-systemをダウンロードします。
実行権限を与え、PATHが通っているディレクトリに移動します。
$ sudo chmod 755 openfoam-macos-file-system
$ sudo mv openfoam-macos-file-system /usr/local/bin
openfoam-macos-file-systemは、dockerにOpenFOAMのファイルシステムをマウントするのに使います。
$HOME以下にopenfoamディレクトリを作成し、openfoamにファイルシステムをマウントします。
$ mkdir $HOME/openfoam
$ cd $HOME/openfoam
$ openfoam-macos-file-system mount
openfoamディレクトリが、dockerを起動した際のホームディレクトリになります。
また、docker実行時にopenfoam以下にファイルを保存すると、Mac側とファイルを共有できます。
openfoam4-macosの実行
openfoamディレクトリ内で、openfoam4-macosを実行します。
$ cd $HOME/openfoam
$ openfoam4-macos -p
-pオプションは、可視化ソフトであるparaFoamを使うために必要です。
必要ファイルがダウンロードされ、
OpenFOAM-4.1(1)
と表示されれば成功です。
$ pwd
/home/openfoam
と、ホームディレクトリがopenfoamになっていることを確認します。
OpenFOAMの実行
runディレクトリを/home/openfoam以下に作成します。
$ mkdir -p $FOAM_RUN
ls
するとrunディレクトリが生成されているのがわかります。
OpenFOAMのチュートリアルを実行します。
$ cd $FOAM_RUN
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
$ cd pitzDaily
$ blockMesh
$ simpleFoam
計算が実行され、結果ファイルが生成されます。
0 100 200 298 constant postProcessing system
結果の可視化
$ paraFoam -builtin
を起動すると、paraviewが立ち上がる…はずだったのですが、以下のエラーが出ました。
Created temporary 'pitzDaily.OpenFOAM'
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error: BadValue (integer parameter out of range for operation) 2
Extension: 149 (Uknown extension)
Minor opcode: 3 (Unknown request)
Resource id: 0x0
エラーを追いかけるに、ドライバ関係が上手くいっていない?
http://askubuntu.com/questions/541343/problems-with-libgl-fbconfigs-swrast-through-each-update
https://www.centos.org/forums/viewtopic.php?t=56273
わからないので、ひとまずMacにparaviewをインストールしました。
http://www.paraview.org/download/
dockerに戻り、pitzDailyディレクトリ内で、
$ paraFoam -builtin -touch
と打ち、pitzDaily.foamを生成します。
これをMacにインストールしたparaviewから開くと、読み込めました。
今のところ、実用上はこれで問題ないです。