CfdOFのインストール
下記を参考にFreeCADのアドオンCfdOFを使ってみます。手元の環境はWindows 11 WSL Ubutun 20.04、FreeCAD 0.19です。
README.mdのPrerequisitesをみると、ESI-OpenCFD版はv2012までの模様。手元の環境はv2112。
- OpenFOAM Foundation versions 5-9 or ESI-OpenCFD versions 1706-2012
けど、最近(2022年3月4日)のコミットでv2112にも対応したみたいなので、大丈夫かな?
Make changes for createPatch in OpenFOAM v2112
CfdOFのインストール
インストールしてみると、GitPythonが見つかりません、と言われます。
一旦FreeCADを終了して、GitPythonをインストールすることにします。
ここではキャンセルを選択。
GitPythonのインストール
GitPythonはpipでローカルにインストールします。
$ pip install GitPython
再度FreeCADを起動して、CfdOFをインストールしてみると、エラー。
アドオンPlotのインストール
すみません。README.mdにちゃんと書いてありますね。先にFreeCADのアドオンPlotをインストールするようにと。
- Run FreeCAD
- Select Tools | Addon manager ...
- Select Plot in the list of workbenches, and click "Install/update"
- Restart FreeCAD
- Repeat the above for the "CfdOF" workbench
Plotをインストールして、FreeCADを再起動します。
CfdOFのインストール
FreeCAD再起動後、無事CfdOFをインストールでき、設定画面を立ち上げることができました。
OpenFOAM v2112の環境ですが、dependency checkerも無事通過。
最初、cfMeshのインストールのボタンをクリックすると、ファイルはダウンロードしてくれたのですが、コンパイルが開始されませんでした。
よく分かりませんが、FreeCADを再起動して再度cfMeshをインストールしてみると、無事コンパイルが開始され、インストールできました。
CfdOFの動作確認
並列計算でエラー
デモファイルが$HOME/.FreeCAD/Mod/CfdOF/demosにあるので、その中のElbowで動作確認してみました。
SolverのParallelがTrueになっています。とりあえずメッシュ切って、計算してみます。
実行してみるとエラーが発生。並列計算しようとしているのに、プロセッサを1つしか認識していないみたいです。
エラーメッセージ
--> FOAM FATAL ERROR: (openfoam-2112)
attempt to run parallel on 1 processor
From static bool Foam::UPstream::init(int&, char**&, bool)
in file UPstream.C at line 297.
FOAM aborting
#0 Foam::error::printStack(Foam::Ostream&)
--> FOAM FATAL ERROR: (openfoam-2112)
attempt to run parallel on 1 processor
From static bool Foam::UPstream::init(int&, char**&, bool)
in file UPstream.C at line 297.
FOAM aborting
#0 Foam::error::printStack(Foam::Ostream&) at ??:?
#1 Foam::error::simpleExit(int, bool)
--> FOAM FATAL ERROR: (openfoam-2112)
attempt to run parallel on 1 processor
From static bool Foam::UPstream::init(int&, char**&, bool)
in file UPstream.C at line 297.
FOAM aborting
#0 Foam::error::printStack(Foam::Ostream&)
--> FOAM FATAL ERROR: (openfoam-2112)
attempt to run parallel on 1 processor
From static bool Foam::UPstream::init(int&, char**&, bool)
in file UPstream.C at line 297.
FOAM aborting
#0 Foam::error::printStack(Foam::Ostream&) at ??:?
#2 Foam::error::exiting(int, bool) at ??:?
#1 Foam::error::simpleExit(int, bool) at ??:?
#1 Foam::error::simpleExit(int, bool) at ??:?
#3 Foam::UPstream::init(int&, char**&, bool) at ??:?
#2 Foam::error::exiting(int, bool) at ??:?
at ??:?
#4 Foam::argList::argList(int&, char**&, bool, bool, bool)#2 Foam::error::exiting(int, bool) at ??:?
#5 at ??:?
#3 Foam::UPstream::init(int&, char**&, bool)? at ??:?
#3 Foam::UPstream::init(int&, char**&, bool) at ??:?
#4 Foam::argList::argList(int&, char**&, bool, bool, bool) in /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/bin/potentialFoam
#6 __libc_start_main at ??:?
#4 Foam::argList::argList(int&, char**&, bool, bool, bool) in /lib/x86_64-linux-gnu/libc.so.6
#7 ? at ??:?
#5 ? in /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/bin/potentialFoam
[OPTIPLEX:27623] *** Process received signal ***
[OPTIPLEX:27623] Signal: Aborted (6)
[OPTIPLEX:27623] Signal code: (-6)
[OPTIPLEX:27623] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x143c0)[0x7f3e6fadf3c0]
[OPTIPLEX:27623] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7f3e6f91c03b]
[OPTIPLEX:27623] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7f3e6f8fb859]
[OPTIPLEX:27623] [ 3] /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam5error10simpleExitEib+0x17a)[0x7f3e702529ca]
[OPTIPLEX:27623] [ 4] /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam5error7exitingEib+0x4a)[0x7f3e7025600a]
[OPTIPLEX:27623] [ 5] /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/lib/sys-openmpi/libPstream.so(_ZN4Foam8UPstream4initERiRPPcb+0x1ad9)[0x7f3e6f8cbe09]
[OPTIPLEX:27623] [ 6] /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam7argListC1ERiRPPcbbb+0x7e2)[0x7f3e702829c2]
[OPTIPLEX:27623] [ 7] potentialFoam(+0x31e53)[0x560a553a3e53]
[OPTIPLEX:27623] [ 8] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7f3e6f8fd0b3]
[OPTIPLEX:27623] [ 9] potentialFoam(+0x3476e)[0x560a553a676e]
[OPTIPLEX:27623] *** End of error message ***
at ??:?
#5 in /usr/lib/openfoam/openfoam2112/platforms/linux64GccDPInt32Opt/bin/potentialFoam
===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 27621 RUNNING AT OPTIPLEX
= EXIT CODE: 9
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
YOUR APPLICATION TERMINATED WITH THE EXIT STRING: Terminated (signal 15)
This typically refers to a problem with your application.
Please see the FAQ page for debugging suggestions
OpenFOAMはパッケージでインストールしたもの。
シングルコアで計算
今度は並列やめてシングルで計算してみます。
今度はOK。
ParaViewで結果表示。ちゃんと計算できてます。
手動で並列計算を実行
CfdOFで並列計算の設定で設定ファイルを書き出し、コマンドラインから計算を実行してみると問題なく計算できました。
$ mpirun -np 4 simpleFoam -parallel
$ reconstructPar
$ paraFoam
CfdOF側の問題? それとも、手元の環境の問題?
Discussion