😊

CfdOFのインストール

2022/03/13に公開

下記を参考にFreeCADのアドオンCfdOFを使ってみます。手元の環境はWindows 11 WSL Ubutun 20.04、FreeCAD 0.19です。
https://qiita.com/Sagittarius_Chiron/items/c0f5a8c856c999c8d308

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

https://github.com/jaheyns/CfdOF/commit/30cd85ddc792255153d294801133558fdc921185

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