こんにちは(@t_kun_kamakiri)
オープンCAE@横浜での勉強会があり、最近の取り組んで「OpenFOAMのマルチリージョンソルバとOpenModelicaの連成」を発表しました。

発表の動機としてはこちらの勉強会で話したように、OpenFOAMのマルチリージョンソルバとOpenModelicaとの連成をしたかったが、FMI規格に準じたFMU4FOAMではバージョンが古いことと、マルチリージョンソルバに対応していないなどありました。
そこで、結局自分で作るしかないと思い立ったことがはじまりです。今回はマルチリージョンソルバとOpenModelicaの連成を無理やりしてみたというのを発表しました。
発表資料
発表資料は用意しておらず、ブログ記事を画面共有して発表しました。
最近、発表資料用に用意する時間がなくて(前日の深夜3時くらいまで自宅で仕事をしつつ、朝も猫の病院連れていくなど)、ブログ記事をそのまま報告するスタイルにしています。
正直、ブログ記事をそのまま発表するには情報量が選択されていないなど、発表用には向かないとは思いながらも形にはなるので、当分この発表スタイルで行きます。
(最初にどんな目的の発表内容なのかをブログの前段に差し込むようにして、発表用前提のブログスタイルにするのもありか)
今回の発表の内容を簡単に紹介します。
まずOpenFOAMのマルチリージョンソルバとOpenModelicaの連成ができるようになりました。

計算の流れは以下です。

具体的に行ったのはこちらの計算です。

OpenModelicaに値を渡す用の流出する温度とターゲット温度を計算しています。

結果としてターゲットのオレンジ線になるようにOpenModelicaでPID制御をしています。

PID制御の比例ゲイン、微分ゲイン、積分ゲインなどの値も適当なのでうまくは終息しませんが、ひとまず計算できたことを確認しました。
Q&A
今回はいろいろと質問が多くて、興味持ってくれたのか、説明がわかりにくかったのかは不明ですが、こちらとしては意見を多くもらえたので発表した価値を十分感じました。
- Q:OpenFOAMで計算したものを出力、それをOpenModelicaで読み込む、またOpenFOAMに与えるということをしているだけですか?
A:はいそうです。OpenModelicaのスクリプトファイルでファイルの読み書きをしようとしたが、それが難しかった。なのでPythonを介して行った。 - コメント:FMI規格に準じた方が他のソフトとの連携もしやすい。simulaterを介した方がやりやすいかもしれない。
でも結局Pythonなどを使わないといけなくて、手間になる。
単純にOpenModelicaをコマンドで動かせるのであれば、OpenFOAMの計算途中でOpenMoedelicaをコマンド実行で動かせばいいだけ - Q.計算時間はFMU4FOAMとさほど変わらないか?
A.OpenFOAMにからすると途中で余計なOpenModelicaの計算をさせているので、OpenFOAMの計算とリアルの計算はある - Q.externalを使わないのは?チュートリアルを使うこともできる。
A.そちらも試そうと思ったが解読したりして時間がかかりそうなので、今回のように実装してみた。 - Q.n+1回目はちゃんとn回目の値を読み込んでいるのか?
A.OpenFOAMの内部的にはΔt刻みで計算しているので、その時間スケールで毎回OpenModelicaも計算させている。 - Q.温度変化に対してΔt刻みで制御すると過度に制御していないか?実温度変化で制御した方がいいのでは?
A.おっしゃる通り、今回はΔt刻みでPID制御しましたが、それは実用を考えるとやりすぎなので、OpenModelicaを計算させるタイミングはコントロールできると思う。
まとめ
今年最後の勉強会の発表となりました。
発表した内容は、いろいろと苦労した点があるので、発表できてかつ色々な意見を頂けたのはよかったです。
勉強会の告知として以下興味あればオープンCAE学会の運営までご連絡くださいとのことで、個人的には興味ありですね。
- OpenBLのスパコン利用講習会(3月頃)
- JHPCNで何かやりたい人向け
発表会のあと眠すぎたので、16時半に勉強会が終わって21時くらいまで寝ました。



