OpenFOAM

OpenFOAMとOpenModelicaの連携!FMU4FOAMを使った方法と例題の実行

こんにちは(@t_kun_kamakiri

🚀 OpenFOAMとOpenModelicaを連携して、より高度なシミュレーションを実現しませんか? 🚀

OpenFOAMは、オープンソースのCFD(数値流体力学)解析ソフトウェアとして広く使用されています。一方、OpenModelicaは、制御システムや機械・電気回路などのシステムシミュレーションに特化したツール です。これらを組み合わせることで、流体解析 + 制御モデルの連携 や、マルチフィジックス解析 が可能になります。

しかし、OpenFOAMとOpenModelicaを直接統合するのは容易ではありません。そこで登場するのが、FMU(Functional Mock-up Unit)を活用した「FMU4FOAM」 です。FMU4FOAMを利用すれば、FMI(Functional Mock-up Interface)規格に基づき、OpenFOAMでOpenModelicaのシミュレーションモデルを実行 できます。

本記事では、「OpenFOAMとOpenModelicaをFMUで連携する方法」 を初心者向けに詳しく解説します。インストールから設定、実際のシミュレーションの実行まで、エラー対策も含めて解説するので、この記事を読めばスムーズに統合解析ができるようになります!

この記事でわかること

  • OpenFOAMとOpenModelicaの連携方法(FMU4FOAMの活用)
  • FMUを使ったシミュレーション統合の手順
  • よくあるエラーとその解決策

OpenFOAMとOpenModelicaとの連携を行うことで、どのようなことができるのかは以下の記事を読むと良いでしょう。

それでは、さっそくOpenFOAMとOpenModelicaを連携する方法を見ていきましょう!

  • WSL2(OpenFOAM v2412が使用できる状態)
  • gitがインストールされている状態(gitコマンドが使用できる)

FMU4FOAMのビルド

FMUFOAMのビルドについて以下の記事を参考にしました。

git lab:FMU4FOAM(v2406以降対応)が比較的最新(2025/3/16時点)なので、これに沿ってビルドしていきます。
ただし、いくつかそのままでは上手く行かない部分があったので、それについても解説しながらビルドする手順を示します。

FMUFOAMのクローン

OpenFOAMの環境に入っていることを前提として始めます。

まずは適当なフォルダを作成してクローンします。
この記事では以下フォルダにクローンします。

20250315_FMU4FOAMフォルダにいるものとして、以下のコマンドでクローンを作成します。

クローンができたらFMU4FOAMフォルダに移動します。

以下のコマンドで依存関係も含めてクローンします。
今回はECI4FOAM をクローンしています。

準備ができました。
ここからgit lab:FMU4FOAM(v2406以降対応)のREADME.mdからビルドしていくのですが、はじめにECI4FOAMのビルドをしないと上手く行かなかったので、そちらからはじめます。

ECI4FOAMのビルド

こちらのECI4FOAMのREADME.mdを参考にインストールします。

次にlibzmqcppzmqをシステムにインストールする必要があります。
作業場所はどこでも良いですが、以下のフォルダとします。

ECI4FOAMではcd ~/SoftwareのようにHOMEディレクトリで作業していますが、WindowsからWSL2のHOMEディレクトリは見つけにくかったりするので、今回はCドライブにあるフォルダで作業をします。
※ちなみにHOMEディレクトリ\\wsl.localhost\Ubuntu-22.04\homeにあります。

まずは、lizmqをビルドします。

zmq

続いて、cppzmqをビルドします。

cppzmq

FMUFOAMのビルド

ここからFMU4FOAMに従ってビルドします。

ではスクリプトを実行します。

エラーが出たらどこでエラーが出ているかを確認すると良いです。
build-ECI4FOAM.shはそこまで難しいスクリプトではないので、スクリプト内のコマンドをひとつずつ実行してエラー箇所を特定すると良いでしょう。

build-ECI4FOAM.sh

続いて環境変数を設定しておきます。

 

Allwmakeでもエラーが生じた場合は、スクリプト内のコマンドをひとつずつ実行してエラー箇所を特定すると良いでしょう。

Allwmake

ちなみに実行すると以下のようなエラーが出ました。
(おそらく皆さんの環境でも出るでしょう)

これはFMU4FOAM/src/OF_FMU/FMUのビルドで失敗しているようです。
パスがうまくリンクされていないためのエラーですので、以下のように修正します。

修正1:FMU4FOAM/src/OF_FMU/FMU/Make/options

以下のように修正します。

修正2:FMU4FOAM/src/OF_FMU/pyFMUSim/Make/options

以下のように修正します。

再度Allwmake -j4を実行すると上手く行きます。

warningなどが出ますがエラーではないので問題なくビルドできます。

Allwmakeにより以下の$FOAM_USER_LIBBINフォルダにライブラリが生成されています。以下のように生成されていれば成功です!

$FOAM_USER_LIBBIN = /home/kamakiri/OpenFOAM/kamakiri-v2412/platforms/linux64GccDPInt32Opt/lib

手順的には以下のコマンドで環境変数の設定をしているようですが、たぶん不要です。

例題:Temperature Control in a Flange

では、例題を実行してみましょう。

OpenModelicaのモデル部分がこちらです。

OpenFOAMのモデル部分がこちらです。

元々のOpenModelicaで用意されている例題は以下のように熱伝導によって温度を検知し(温度計測)、rampで設定した温度(グラフの赤線)との温度差が2℃以上である場合は、電気回路のスイッチをオンに切り替え、電流が流れることで発熱を起こしheatCapacititorに熱量を与えるというモデルです。
「Temperature Control in a Flange」のモデルは熱伝導の部分のinput情報をOpenFOAM側で行っているということです。

OpenFOAMとOpenModelicaの連携のための設定はこちらに詳細の解説があります。

例題の実行

OpenModelicaをPythonで操作するライブラリをインストールします。

インストールができたら、フォルダを移動移動します。

Allrunスクリプトを実行して計算させます。

エラーが出たらAllrunスクリプトの中身をひとつずつ実行してエラー箇所を特定すると良いでしょう。

Allrun

controlledTemperature.csvファイルが出力されていれば成功です。

あとはグラフにするためにPythonプログラムを使用していますので、実行します。

Allplot.py

※padasのバージョンによってはaxT.plot(T["time"].to_numpy, T["model.root.system1.Tin"].to_numpy, label="Tin")のようにSeries型をnumpy型に変換しないとエラーになる場合があります。

以上でFMU4FOAMのビルドと例題の実行の解説を終わります。

まとめ

今回の記事では、OpenFOAMとOpenModelicaをFMU4FOAMを使って連携する方法 を詳しく解説しました。まず、libzmqcppzmq などの依存ライブラリをインストールし、ECI4FOAMをビルドした後、Allwmake -j4 を実行してFMU4FOAMをコンパイルしました。

その後、例題「Temperature Control in a Flange」を実行し、controlledTemperature.csv が正しく出力されることを確認しました。さらに、Pythonスクリプト Allplot.py を使用してシミュレーション結果を可視化し、データ分析まで行いました。これにより、OpenFOAMとOpenModelicaの連携手順や、FMUを活用したシミュレーションの流れが理解できるようになり、実際の計算環境を構築するスキルが身につきます。

OpenFOAMを使った制御系やマルチフィジックス解析に興味がある方にとって、FMU4FOAMの導入手順やエラー解決のポイントが明確になり、スムーズにセットアップできるようになります。

計算力学技術者のための問題アプリ

計算力学技術者熱流体2級、1級対策アプリをリリースしました。

  • 下記をクリックしてホームページでダウンロードできます。
  • LINE公式に登録すると無料で問題の一部を閲覧できます
    ※LINEの仕様で数式がずれていますが、アプリでは問題ありません。

OpenFOAMに関する技術書を販売中!

OpenFOAMを自宅で学べるシリーズを販売中です。
OpenFOAM初学者から中級者向けの技術書となっていますので、ぜひよろしくお願いいたします。

次回の技術書典18に向けて内容を考え中です。
乞うご期待!!

見出し画像

おすすめ参考図書

☟こちらは、OpenFOAMの日本語書籍が無い中唯一わかりやすい参考書だと思います。

OpenFOAMによる熱移動と流れの数値解析(第2版)

OpenFOAMによる熱移動と流れの数値解析(第2版)

3,520円(06/24 15:31時点)
Amazonの情報を掲載しています

☟こちらもOpenFOMの古いバージョンでの和訳になります。さすがにこちらはバージョンに対する日本語でのケアはしていないので、OpenFOAMに慣れている方は購入しても良いかと思います。僕は「日本語でまとまっている内容」なので少し重宝しています。

OpenFOAMプログラミング

OpenFOAMプログラミング

Mari´c,Tomislav, H¨opken,Jens, Mooney,Kyle
8,250円(06/24 19:49時点)
Amazonの情報を掲載しています

☟以下に、もっと初心者向けの同人誌を紹介しておきます。
初心者は「ってか、まずどうやってOpenFOAMをインストールするの?」というところからつまずきがちです。
そんな時は、以下の書籍をおすすめします。

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

改訂新版 OpenFOAMの歩き方 (技術の泉シリーズ(NextPublishing))

川畑 真一
1,320円(06/24 19:48時点)
発売日: 2022/04/15
Amazonの情報を掲載しています

インストール方法とチュートリアルで流体解析を体験・・・ちょっと高度な解析まで解説があります。著者曰くOpenFOAMのバージョンの追跡を行いながら、書籍をアップデートするようなので安心ですね。

関連記事もどうぞ

COMMENT