0. はじめに
OpenFOAM1はオープンソースの流体解析ツールで、運用コストが掛からないことから、導入を考えている方が多いのではないでしょうか。2
OpenFOAMの導入には、Linux環境が必須のため、Windowユーザは仮想化環境構築、デュアルブート等の対応が必要でした。
しかし、2017年のWindows 10 Fall Creators Updateで、Windows 10の正式機能にLinux互換環境「Windows Subsystem for Linux (WSL)」が搭載されました。3
これにより、Window上で簡単にLinux OSを導入できるようになったので、OpenFOAMの環境構築も大変導入しやすくなりました。ここでは、
Windows Subsystem for LinuxでLinux環境構築から、OpenFOAMのチュートリアル実行までを記します。4
1. WSLの設定(Windows10上でLinux Subsystemを有効化)
表示されたウィンドウの右側にあるプログラムと機能
を選択します。
表示されたウィンドウの左側にあるwindowsの機能の有効化または無効化
を選択します。
開いたWindowの中からWindows Subsystem for Linux
を探し、チェックしてOKを選択します。インストールが始まり、再起動を要求されたら従って下さい。
これにて準備完了です。
2. Linux(Ubuntu)をインストール
LinuxディストリビューションをMicrosoft Store
からインストールします。
スタートメニューから、Microsoft Store
を探し、選択します。
検索窓にUbuntu
と入力し、検索すると配布ディストリビューションが引っかかるので、それを選択し、入手を選択して下さい。
以下の枠中のものは、ubuntu 16.04 LTSです。
2018年4月26日にUbuntu 18.04 LTSがリリースされたため、WSL用にも配布されているようです。
どちらでも構いませんが、本記事は16.04で進めます。5
インストールが終われば、スタートメニューにUbuntuが追加されますので、選択して起動して下さい。
なお、Ubuntuの起動は、コマンドプロンプトで
bash
と打ち込むことでも起動できます。
Ubuntuの起動
起動直後に、インストール中と画面表示されるため、暫く待ちます。
完了すると、Ubuntuで使用するユーザ名とパスワード名の設定が要求されるので、入力して下さい。(文字入力し、Enterで実行)
なお、Passwordの項目での入力文字は表示されませんので、ご注意下さい。(再入力を求められるので、どちらもミスがないよう注意)
無事設定が完了すると、以下のように指定したユーザ名@PC名: $
と表示されます。これでひとまず設定が完了です。
Ubuntuの初期設定
OpenFOAMを入れる前に、Ubuntuの必要最低限の設定を済ませていきます。
リポジトリの更新
Linuxでは、コマンドで1行打ち込むだけで、アプリのインストールが出来ます。(もちろん、GUIでも可能です。)
これは、Ubuntuではaptと呼ばれるパッケージ管理ソフト6で、アプリの実行ファイルやマニュアルなど、関連ファイルをパッケージにまとめて管理しているためです。(ざっくりのイメージなので、間違ってたらすみません。)
パッケージをインストールするには、以下のようにコマンドを打つことで可能です。なお、先頭の$は入力の必要はありません。また、sudo
は、root権限で実行する(管理者権限で実行する)ための命令文で、実行した後にパスワードの入力が求められますので注意して下さい。
$ sudo apt install "パッケージ名"
[sudo] paddword for "USER":"パスワード"
デフォルトの設定では、パッケージの置き場のアクセス先が海外サーバーになっているため、通信速度が遅い場合があります。
そのため、日本のサーバーに切り替えるために、以下を実行します。
$ sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
なお、無視しても問題ありません。
パッケージのアップデート、アップグレード
OS(つまりUbuntu)をインストール仕立てホヤホヤなので、アップデートしましょう。まず以下を実行し、これによってソフトウェアの更新情報をネットから取得します。
$ sudo apt update
その後、以下のコマンドで、内部ソフトを更新します。更新しますか?と聞かれるので、y
と入力して下さい。
$ sudo apt upgrade
以上の更新作業は、定期的に実行するようにしましょう。
Vim(エディタ)などは、インストールされるはずですが、使えない場合にはapt
でインストールしましょう。
$ sudo apt install vim
$ sudo apt install build-essential
ここまでで、Ubuntuの設定が完了です。
3. OpenFOAMのインストール
本題です。
OpenFOAMのリポジトリを追加
デフォルトでは、aptにOpenFOAMのレポジトリ(つまり置き場)が設定されていないため、以下で設定します。
$ sudo add-apt-repository http://dl.openfoam.org/ubuntu
$ sudo sh -c "wget -O - http://dl.openfoam.org/gpg.key | apt-key add -"
リポジトリの更新
前章と同様に以下を実行してリポジトリを更新します。
sudo apt-get update
OpenFOAMのインストール
OpenFOAMを以下のコマンドでインストールします。(18/05/17現在はv5.4のパッチリリースが最新ですが、5.0でも問題ないと思います。)
sudo apt-get install openfoam5
以上でインストールが始まりますので、完了するまで待ちましょう。
OpenFOAMの初期設定
次に、ubuntuにログイン時に毎回読み込まれる設定ファイルを編集します。設定ファイルはホームディレクトリに置いていますので、以下でホームディレクトリに移動します。cd
はディレクトリの移動命令で後ろの指定パス先に移動します(空欄の場合、ホームディレクトリが自動で指定)。
$ cd
もしくは、以下で移動します。($HOMEは、デフォルトの変数「HOME」に格納している文字を引用しています。)
$ cd $HOME
ホームディレクトリに設定ファイルが存在することを確認します。
ls
はディレクトリ内のフォルダ、データ名を表示する命令で、-alF
オプションを付けることで、隠しファイルも含めて表示します。
ls -alF
すると、以下のように.bashrc
があることがわかります。これが設定ファイルです。
.bashrc
にOpenFOAMの起動設定するファイルの読み込み命令を書き込みます。
以下の命令では、echo
の書き込み命令で.bashrc
の末尾に書き込みます。
$ echo "source /opt/openfoam5/etc/bashrc" >> .bashrc
vimなどのエディタで直接.bashrcを編集してもよいです。
$ vim .bashrc
書き込んだ後は、設定を反映させるために以下を実行します。
source $HOME/.bashrc
以上で初期設定が完了です。
正常動作しているか確認するために、以下を試します。
simpleFoam -help
以下のように、使い方が表示されれば、正常動作しています。
Username@User-PC:~$ simpleFoam -help
Usage: simpleFoam [OPTIONS]
options:
-case <dir> specify alternate case directory, default is the cwd
-fileHandler <handler>
override the fileHandler
-listFunctionObjects
List functionObjects
-listFvOptions List fvOptions
-listRegisteredSwitches
List switches registered for run-time modification
-listScalarBCs List scalar field boundary conditions (fvPatchField<scalar>)
-listSwitches List switches declared in libraries but not set in
etc/controlDict
-listTurbulenceModels
List turbulenceModels
-listUnsetSwitches
List switches declared in libraries but not set in
etc/controlDict
-listVectorBCs List vector field boundary conditions (fvPatchField<vector>)
-noFunctionObjects
do not execute functionObjects
-parallel run in parallel
-postProcess Execute functionObjects only
-roots <(dir1 .. dirN)>
slave root directories for distributed running
-srcDoc display source code in browser
-doc display application documentation in browser
-help print the usage
Using: OpenFOAM-5.x (see www.OpenFOAM.org)
Build: 5.x-197d9d3bf20a
Username@User-PC:~$
4. Xmingのインストール
前章でOpenFOAMをインストールし、解析を実施する環境は構築できました。
次に、Linux用のGUIを設定することで、ポスト処理用ソフトParaview
を起動出来るようにします。
ここでは、X Server としてXmingを導入します。なお、Xmingに縛られなくても良いです。
X serverの補足説明
UNIX/Linuxにおいては、X Window System(以下、X)を使用してGUIを実現していることが多い。Xでは画面表示を行うアプリケーション(Xサーバー)と、GUIを備えた個々のアプリケーション(Xクライアント)が分離されており、Xクライアントが描画命令をXサーバーに送信し、Xサーバーがそれを実際に描画するというクライアント/サーバー構成が取られている。このときXサーバーとXクライアントは同一のマシン上で動作している必要はなく、たとえば遠隔地にあるUNIX/Linuxマシン上でXクライアント(=アプリケーション)を動作させ、その結果を手元にあるWindowsマシン上で動作するXサーバーで表示させる、といったことが可能だ。
(フリーのWindows用Xサーバー「Xming」のインストールと基本設定、使い方より引用
以下からインストーラーをダウンロードし、インストールして下さい。特殊な設定は必要ありません(デフォルトのままで大丈夫です。)
Xming X Sever for Windowのインストール
インストールしたら、スタートメニューからXLaunch
で起動しましょう。
デフォルトの設定では、Multiple windows
、Display number : 0
に設定されているはずなので、次へ
を押してゆき、デフォルト設定のまま、完了
まで進めて下さい。
これにより、Xming Serverが起動し、右下のアイコンに格納されていることが確認できます。
Ubuntu側の環境変数
Ubuntuの環境変数DISPLAYに、X serverのDieplay numberを設定することで、WSL上のUbuntuでGUIソフトが使用可能になります。
以下で設定が可能です。(.bashrc
に環境変数を書き込む)
$ echo "export DISPLAY=:0" >> $HOME/.bashrc
$ source $HOME/.bashrc
なお、この設定はXmingインストール後に、一度だけでよいです。
設定が上手くいっているか確認するために、以下を実行してみましょう。目のウィンドウが現れれば、設定が出来ていることになります。
$ xeyes
これで、全ての設定が完了です。
5. OpenFOAMを試してみる
設定が完了したため、インストール済みのOpenFOAMのチュートリアルであるPitz&Dailyを実行してみます。
まず、チュートリアルのケースファイルをフォルダごと、ホームディレクトリにコピーします。cp
は、後ろのパスに指定しているデータを、その後ろで指定しているパスにコピーする命令です。
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily $HOME
なお、チュートリアルのケースファイルを格納しているフォルダは、以下でアクセスできます。
$ tut
これは、tut
という命令をするとcd $FOAM_TUTRIALS
を実行するというように設定されているためです。これは、alias
を実行すると確認できます。
$ alias
コピーしたフォルダの中に移動します。
cd $ cd pitzDaily
フォルダの中を確認すると、以下のフォルダ構成になっていることが確認できます。ls
はフォルダの中のデータ名を表示する命令です。フォルダの中は、0
、constant
、system
のフォルダ構成であることがわかります。それぞれに解析の設定条件が格納されています。
$ ls
0 constant system
-
0
: フィールド(場)の設定ファイル(U,p,Tなど)を格納するディレクトリ。境界条件や、初期値を設定する。0は初期時刻の意味で、解析を実行すると、同様の形式の計算結果ファイルを含むディレクトリが出力時刻の名前で作成される。
-
constant
: メッシュや物性値、乱流モデルなどの設定が含まれるディレクトリ。
-
system
: 計算の制御の設定ファイルなどが含まれるディレクトリ。離散化スキーム、ソルバー、解析時間などを設定できる。
次にメッシュを生成します。これにより、メッシュが生成され、解析の準備が完了します。
$ blockMesh
解析を実行します。ここでは、標準ソルバーのsimpleFoamを実行します。完了すると、0秒以外のフォルダが生成されます。
$ simpleFoam
最後に、出力した結果を`Paraview`で確認します。なお、paraFoam
はParaviewに解析結果を引き渡してくれます。
$ paraFoam
paraview
が起動したら、Apply
ボタンを押します。
すると、モデルが表示されますので、Solid Color
の中からU
を選びます。するとモデルに色が着き、時間を進めると、速度分布の経時変化が確認できます。
チュートリアルには、他にも様々なケースファイルが格納されているため、幾つか動かしてみると良いでしょう。
まとめ
Windows 10 上でOpenFOAMが動作する環境を構築しました。
白紙の状態から解析体系を構築するよりも、チュートリアルが充実しているため、解析したい体系に似た内容のチュートリアルのケースをコピーし修正するのが良いです。多分これが一番早いと思います。7
補足
-
OpenFOAM Foundationが提供するバージョンと、OpenCFD社(ESIグループ)がリリースするバージョンがあります。違いはよく分かりません。(Debian系とRed Hat系の関係みたいなもの?) ↩
-
業務で運用するには、Code Verificationが問題になると思いますが。また、ライセンスフリーと言えども運用に掛かるコスト(人件費)も問題です。だからといって、商用コードにライセンス費を払えば流体解析が出来るようになる訳ではないですけどね。 ↩
-
Windows PowerShell ェ… ↩
-
n番煎じですが。ご愛嬌。 ↩
-
Debian系を導入することが解せなければ他のディストリビューションを入れて下さい。噂ではfedoraも利用できるようになるとか。 ↩
-
RedHat系ならyumで管理します。 ↩
-
出典:ニコニコ大百科掲載記事 ↩