はじめに
先日OpenFOAM-v1906がリリースされました。せっかくなので最新のParaViewと一緒にインストールする方法をまとめてみました。
注意
- この記事の内容(コマンド等)に関して一切の責任を負いかねます。
sudo
を用いたコマンドが頻出します。入力ミス、コピペミス、私のミスなどで重大なエラーが生じる可能性がありますのでコマンド実行の際にはその意味を確かめてから実行してください。- インストール時の環境変数がAnacondaと競合することがあります。念の為OpenFOAMインストール時にはAnacondaは無効化するのが無難です。
- 【未解決】本記事では以下の機能をインストールできませんでした。
- ParaViewの
-mpi
オプション:7/12現在ParaViewで並列計算を有効にするとインストールできない事例を確認しています。(参考) - PVFoamReader:ParaViewのOpenFOAMケース表示プラグインであるPVFoamReaderをインストールできませんでした。
- ParaViewの
環境
- OS : Ubuntu 18.04 LTS(VirtualBox内)
- OpenFOAM : v1906
- ParaView : 5.7.0-RC1
- Python : 3.6.8
- インストール日 : 2019/07/11〜7/13
参考
以下のサイトを見ながらインストールしました。困ったら全部良く読みましょう。
- OpenFOAM® Installation From Source
- doc/Build.md · master · Development / OpenFOAM-plus · GitLab
- Installation/Linux/OpenFOAM-v1806/Ubuntu - OpenFOAMWiki
- はじめに
- 1. Requirements
- 2. OpenFOAMなどのダウンロード
- 3. ParaView-5.7.0-RC1をダウンロード
- 4. ParaViewのバージョンを指定するファイル
- 5. 環境変数の設定
- 6. ParaViewのコンパイル
- 7. OpenFOAMのコンパイル
- 8. インストールの確認
- 最後に
1. Requirements
まずはOpenFOAMやParaViewを動かすためのライブラリなどをインストールします。(Python3も入れます)
sudo apt update && sudo apt -y upgrade sudo apt install build-essential flex bison cmake zlib1g-dev libboost-system-dev libboost-thread-dev \ libopenmpi-dev openmpi-bin gnuplot libreadline-dev libncurses-dev libxt-dev \ qt5-default libqt5x11extras5-dev libqt5help5 qtdeclarative5-dev qttools5-dev \ libqtwebkit-dev freeglut3-dev libqt5opengl5-dev texinfo \ libscotch-dev libcgal-dev python python-dev \ libglu1-mesa-dev python3 python3-dev libglu1-mesa-dev qt4-dev-tools
仮想マシンの場合
VirtualBoxなどの仮想マシンの場合は以下の操作が必要になるそうです。(OpenFOAM wiki)
sudo apt install mesa-utils scons llvm-dev sudo sed -i~orig -e 's/# deb-src/deb-src/' /etc/apt/sources.list sudo apt update sudo apt build-dep mesa
2. OpenFOAMなどのダウンロード
各ソースをダウンロード&解凍していきます。
# ディレクトリの作成 mkdir OpenFOAM && cd OpenFOAM # OpenFOAM-v1906のダウンロードと解凍 wget https://sourceforge.net/projects/openfoam/files/v1906/OpenFOAM-v1906.tgz tar -xzf OpenFOAM-v1906.tgz # ThirdParty-v1906のダウンロードと解凍 wget https://sourceforge.net/projects/openfoam/files/v1906/ThirdParty-v1906.tgz tar -xzf ThirdParty-v1906.tgz # decomposeParのためのmetisがはいっていないためダウンロードと解凍 cd ThirdParty-v1906 wget http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz tar -xzf metis-5.1.0.tar.gz
3. ParaView-5.7.0-RC1をダウンロード
公式サイトから"ParaView-v5.7.0-RC1.tar.gz"ダウンロードします。
そしてこれをさきほど作成された~/OpenFOAM/ThirdParty-v1906の中で解凍し、解凍されたディレクトリの名前をParaView-v5.7.0に変更します。
そうするとディレクトリの構成はmetisも含めて以下のようになっているかと思います。
4. ParaViewのバージョンを指定するファイル
現在ThirdParty-v1906ではデフォルトでParaView-v5.6.0をインストールする設定になっています。これを変更するにはOpenFOAM側の設定を変更する必要があります。 例えばターミナルに以下のコマンドを入力しファイルを開きます。
gedit ~/OpenFOAM/OpenFOAM-v1906/etc/config.sh/paraview
ここで57行目のParaView_VERSION=
を5.7.0に変更することでParaViewのバージョンを指定することができます。
... # # Note # When _foamAddLib is unset (eg, called from makeParaView or from foamPV): # - the ParaView_VERSION variable is retained. #------------------------------------------------------------------------------ # USER EDITABLE PART: Changes made here may be lost with the next upgrade ParaView_VERSION=5.7.0 ParaView_QT=qt-system cmake_version=cmake-system ...
※後に出てくる./makeParaView
の際に./makeParaView 5.7.0
のように引数にバージョンを記述することで同様に5.7.0をインストールすることもできます。
しかしこれだとOpenFOAM側のutilitiesであるparaFoam
で呼び出すことができません。
今回はこれも踏まえてOpenFOAM側のconfigファイルを変更しました。
5. 環境変数の設定
ターミナル(bash)起動時にOpenFOAM1906の環境変数を読み込むためにbashrcに追記を行います。
echo "alias of1906='source \$HOME/OpenFOAM/OpenFOAM-v1906/etc/bashrc'" >> $HOME/.bashrc echo "of1906" >> $HOME/.bashrc . $HOME/.bashrc
No completion added for /home/inabower/OpenFOAM/OpenFOAM-v1906/platforms/linux64GccDPInt32Opt/bin
... incorrect platform, or not yet compiled?
上のようなメッセージが出たら準備完了です。更に確認したい場合にはgedit $HOME/.bashrc
などのコマンドで.bashrcファイルを開いて最後の行に
alias of1906='source $HOME/OpenFOAM/OpenFOAM-v1906/etc/bashrc' of1906
が追加されていればOKです。aliasによりof1906
と入力すればOpenFOAM-v1906の環境をセットできるようになります。そのためv1906をデフォルトで使用しないのであればof1906
での行は削除して構いません。
その場合はターミナルを開くたびにof1906
入力することになります。
ちょっといじる
私の環境だとこのまま./makeParaView
すると2時間後くらいに以下のエラーが出てしまいコンパイルができませんでした。
CMake Error at /home/inabower/OpenFOAM/ThirdParty-v1906/ParaView-v5.7.0/CMake/ParaViewClient.cmake:522 (message): Failed to convert servermanager XML: xmlpatterns: could not exec '/usr/lib/qt5/bin/xmlpatterns': No such file or directory make[2]: *** [Plugins/AcceleratedAlgorithms/paraview_help/AcceleratedAlgorithms_doc.xslt] Error 1 make[1]: *** [Plugins/AcceleratedAlgorithms/CMakeFiles/AcceleratedAlgorithms_doc.dir/all] Error 2 make: *** [all] Error 2 Command exited with non-zero status 2
苦肉の策ですが、以下のようにqt4から持ってくるとエラーは解消しました。
sudo cp /usr/lib/x86_64-linux-gnu/qt4/bin/xmlpatterns /usr/lib/qt5/bin/
※ もし/usr/lib/qt5/bin/xmlpatterns
が既にあるようでしたらこの操作は問題ありません。
- こことかを見ながらqt5のxmlpatternsをaptからインストールしようと試みたのですが叶いませんでした。もし方法をご存じの方がいましたら教えてください。
6. ParaViewのコンパイル
新しいターミナルを開き、以下のコマンドでParaViewをインストールしていきます。-python
-python-lib
-python-include
ではPython3のライブラリの場所を指定します。
「ファイルが見つからない」と言われた場合にはfind /usr/lib -name "libpython3*"
などのコマンドで探してみましょう。
cd $WM_THIRD_PARTY_DIR ./makeParaView -python -python-lib /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0 -python-include /usr/include/python3.6m/ > log.makeParaView
終了まで数時間かかります。なお新しいターミナルで以下のコマンドを入力することでインストールの進行状況を見ることができます。
tail -f $WM_THIRD_PARTY_DIR/log.makeParaView
...
-- Installing: /home/inabower/OpenFOAM/ThirdParty-v1906/platforms/linux64Gcc/ParaView-5.7.0/lib/python3.6/site-packages/paraview/vtk.py
====
Installation complete for paraview-5.7.0 with qt-5.9.5
ParaView_DIR=/home/inabower/OpenFOAM/ThirdParty-v1906/platforms/linux64Gcc/ParaView-5.7.0
You may need to update the OpenFOAM environment by running:
wmRefresh
====
Done
というようなメッセージができたらインストール成功です。
7. OpenFOAMのコンパイル
いよいよOpenFOAMをコンパイルしていきます。
foam ./Allwmake -j 4
4
はコンパイルの並列数です。各自のCPUの数に合わせて数字を入れてください。
2019-07-13 12:32:07 +0900 ======================================== Finished compile of cfMesh with OpenFOAM-v1906 Gcc system compiler linux64GccDPInt32Opt, with SYSTEMOPENMPI openmpi-system 2019-07-13 12:32:07 +0900 ======================================== OpenFOAM-v1906 Gcc system compiler linux64GccDPInt32Opt, with SYSTEMOPENMPI openmpi-system api = 1906 patch = 0 bin = 285 entries lib = 133 entries ========================================
こんなのが表示されたら完了です。(途中でインストールを中断したりしたので数などが異なる可能性があります。)
8. インストールの確認
ちゃんとインストールされているかどうかを確認していきます。
軽いソルバー(potentialFoam) + paraFoam
今回インストールしたものの中で、まず軽いソルバーの実行とその結果の表示ができるかを確認します。
ソルバーはpotentialFoamで試してみて、それをparaFoam
で表示します。
paraFoamはParaViewがインストールされた状態でOpenFOAMをインストールすると搭載される機能で、OpenFOAMのケースをコマンド一つで開くことができるようになります。
mkdir $WM_PROJECT_USER_DIR && cd $WM_PROJECT_USER_DIR cp -r $FOAM_TUTORIALS/basic/potentialFoam/pitzDaily/ ./ cd pitzDaily ./Allrun paraFoam
Cannot use ParaView reader module library (PVFoamReader) - not built?
Consider building the reader module
cd $WM_PROJECT_DIR/applications/utilities/postProcessing/graphics/PVReaders
./Allwclean
./Allwmake
Continuing with builtin reader: paraFoam -vtk
※Skip Zero Timeの表示を外すこと
エラーメッセージが表示されましたが、結果を表示することができました。
このエラーメッセージは「PVFoamReaderはインストールされませんでしたがvtkOpenFOAMReaderを使ってケースを表示しました」みたいな意味です。 PVFoamReaderはOpenFOAMで用意されたPluginで、vtkOpenFOAMReaderは元々ParaViewに備わっているVTK由来の機能です。 主な違いはSetを読み込めるかどうかかだったと思います。
なお今現在は表示されているエラーメッセージ通りにコマンドを入力してもPVFoamReaderのコンパイルは成功しません。(Qtの問題?)
SCOTCH(decomposePar)
次にThirdPartyとしてインストールされている並列計算のための分割手法であるSCOTCHの確認を行います。 以下のようにchtMultiRegionFoamのチュートリアルをコピーしてきて実行するとデフォルトでは並列数4で計算が行われます。 その際にdecomposeParではSCOTCHを用いて分割が行われます。
cd $WM_PROJECT_USER_DIR cp -r $FOAM_TUTORIALS/heatTransfer/chtMultiRegionFoam/multiRegionHeater/ ./ ./Allrun paraFoam -builtin
ちゃんと計算が行われていたらOKです。
Python3
最後にPython3の機能が搭載されているかをチェックします。
先程開いたParaViewのメニューバーでView
→Python Shell
をチェックすると下にコンソールが現れます。
ここをクリックすると以下のように環境が表示されますので、Python3環境であることが確認できます。
>>> Python 3.6.8 (default, Jan 14 2019, 11:02:34) [GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux >>> from paraview.simple import *
試しに以下のようなPython3のコマンドを実行してみても良いかと思います。
最後に
お疲れ様でした!