忘却の微分方程式(5) OpenModelica、インストールのついでに

JosephHalfmoon
JosephHalfmoon

前回まで、ブロックダイアグラムを描けば、微分方程式も「解けて」しまうScilab+Xcosを触っておりました。そこでついつい(手が滑った?)Modelicaモデルなるものにまで触れてしまいました。Xcosがもっているもともとのブロック共とは異なる出自で、異なる「考え方」の「部品」です。調べてみるとModelica自体は、「モデリング」のための言語処理系でもあり、ライブラリでもあり、なかなか面白そう。そこでついついModelicaネイティブな処理系に手を出してみることに相成りました。

まず、申告しておきますが、Modelicaやっていると「微分方程式」からは離れたところに行ってしまうかもしれないです。まあ、Scilab+Xcosにしても別に微分方程式用の処理系ではないので、どっちやっていても状況は似たようなものなのですが。

まず、以下のModelicaのご本家へいき、処理系をダウンロードさせていただくことにいたしました。

OpenModelica.org

Open Source Modelica ConsortiumというNPOのサイトでございます。当然、という感じでGitHubでソースも公開されておるのですが、そんな元気はないので、ダウンロードのページから OpenModelica の

Windows版の64bitオフィシャル版のバイナリ

をダウンロードさせていただきました。ダウンロードしたバージョンは1.14.1でした。ファイルサイズは、約1.3Gバイトほどありました。当方環境で、ダウンロード時間は測っていないのですが、だいたい5,6分くらいで終わった感じで、ストレスはありませんでした。md5sumが置かれているので、一応ファイルを確認し、解凍、インストールを行いました。しかし、インストールには時間がかかりました。まあ、多数のライブラリやモデルなどを含む環境なのでファイルの数が多くなるのはしかたがないのだと思いますが、オプショナルなライブラリを含めて、実サイズで以下のようになりました。

約5.66GB、ファイル数で20万、フォルダ数で2万4千

当然、DISK上のサイズはこれより大きく約6GB弱あります。インストール時にどんなファイルが書き込まれているのか詳細を流しながらやっていたことも多少影響しているかもしれませんが、かなり時間がかかりました。(正直に言うと、眠くなったので、ひと眠りして起きたら完了していました。)

あまり時間がかかるので、その間、先達がOpenModelicaの「心」について何か語っておられないかとWebをあさっておりました(日本語で。英語のサイトは多数あるのですが眠いのでパス。)その中で「良いな」と思った資料が以下です。

OpenModelica速習 2011年8月 株式会社電通国際情報サービス

略称ISID社は、最近、何かと話題?の電通様のIT関連会社さんのようです(ISID社さん自体は話題になってはいないと思います。)私がXcos上でModelicaモデルを触ってみてモヤモヤしていた「心」の部分に、答えを与えてくださいましたよ。P.9 『因果律と非因果律を知ろう』から1箇所引用させていただきます。

Modelicaでは部品に、振舞い・特性を定義しておきます。グラフィカル表現は、信号の流れではなく部品同士の関係(接続状態)を定義します(非因果律的)。ブロック線図表現では因果律表現しかできません。

ああ、Scilab+Xcosで私が引っかかっていたところはここでした。Xcosは、まさにブロック線図をそのまま描けるツールです。そしてそのとき部品間の接続に使われる黒の三角矢印のポートからのポートへと引かれる線の中には(見えないですが)時刻と紐ずけられたベクトルが流れておると。それを受け取ったブロックは流れ込んでくる時系列情報を「処理」して出力ポートから再び時系列情報を流し出す。まさに因果律の関係でした。 ところが、XcosではModelicaモデルは四角のポートを持っており、三角のポートとは直接接続できません。四角のポートは四角のポート同士接続し、三角のポートにデータを送りたいときは、そこに四角と三角の橋渡しをする特殊なブロックを配置する必要がありました。ようやくこの意味が理解できた感じ。電通様?ありがとう。

しかし、IT系の電通関連会社とはいえ、なぜにOpenModelicaなどの入門資料を提示したりしているのだろう。蛇足ですが大いに気になりました。その理由は以下のプレス資料みると明らかです。

ISID、「iQUAVIS」のモデルベース開発(MBD)支援機能を大幅拡張

ああ、モデルベース開発の関連製品のビジネスをやられていたのですね。MBDにModelicaモデルを利用しているのか。上記のプレス資料の片隅に一言書かれていましたよ、注釈として。またまた1行引用させていただきましょう。

* OpenModelicaとの連携に対応。その他 Modelica言語を用いた1Dシミュレーションツールとの連携は、ユーザー環境に応じてカスタマイズ対応可能。

おおそうか、「MBD業界」では、Modelicaのようなものを「1Dシミュレーション」と呼んでいるのですね。さすがに、MBDという用語はよく見かけるし、Matlab+Simulinkなども使ったことがあるので知っていたのですが、1Dという言い方は知りませんでした。これについて、どなたか説明されていないか?

明治大学の大富浩一先生(多分、機械系の先生)が良い資料を書かれていました。

1DCAE・MBDの目指すところ、現状、課題、そして今後

最後のページに注目。1箇所引用させていただきます。

仕様がある程度明確な場合:MBD

仕様をゼロから考える場合:1DCAE

ほえほえ、そんな感じなのですか。しかし、これだけ資料を読ませていただいていても、インストールは終わりませんでした。お陰で、Modelicaの「心」はある程度分かった?(本当か)けれども。実際、動かしてみるのは次回だな!

忘却の微分方程式(4) Xcos、Modelica、RC回路に手こずる へ戻る

忘却の微分方程式(6) OpenModelica、触ってみる へ進む