LoginSignup
11
10

More than 5 years have passed since last update.

macOS SierraでOpenFOAM-4.1をdockerから起動

Posted at

概要

  • 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のインストール

  1. 以下のサイト
    https://www.xquartz.org/
    からXQuartzをダウンロードし、インストールします。

  2. XQuartzを起動します。

  3. XQuartz → 環境設定 → セキュリティ
    「ネットワーク・クライアントからの接続を許可」にチェックを入れます。

  4. 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から開くと、読み込めました。
今のところ、実用上はこれで問題ないです。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10