前回は、微分方程式どころか、鶴亀算を計算しながら、実は鶴も亀もOpenModelicaの世界では「時系列的存在」であることにようやく気付きました。今回は、これまた微分方程式以前、御馴染みオームの法則を「実装」した抵抗1本、これが階層構造をもったオブジェクトなんだということを学んで行きたいと思います。ようやくモデリングの入口かも。
※「忘却の微分方程式」投稿順 index はこちら
例によって、OMNotebook上のDr. Modelicaを読ませていただきながら、ふと目にとまったのが、こういう記述でございます。
電圧 Voltageとは何ぞや、Real型(例によって時系列的存在)である、しかし、単位をVにて測る。電流 Currentとは何ぞや、Real型(やはり時系列的存在)である、こちらの単位はAにて測る。
読んで字のごとし、この定義に納得。
そして、このVoltageとCurrentが決まると、電子部品には必ず存在するPinというものが定義できると。以前調べたとおり、Modelicaのオブジェクトの中で、何か接続を記述するために特化したらしいオブジェクト connector型をつかい、Pinには、Voltage型の変数(繰り返しますが時系列的存在)のvとCurrent型の変数iが存在すると書くわけです。そこで、引っかかるのが、Current型についている
flow
という修飾語?らしいもの。これこそModelicaのシミュレーションの仕組みの本質に一歩踏み込むためのキーワードじゃないかと思いますが、今回は踏み込まず、見てみぬふりで通り過ぎます。
さてこういうことで、Pin「端子」というものが定義できたので、端子をもつ「デバイス」をモデリングすべし、と。なにをモデリングするかと言えば当然、一番簡単な2端子素子、抵抗でありましょう。当然標準ライブラリには、より実用的な温度で特性が変化するような抵抗の巧妙な物理モデルが含まれますが、今回は、オームの法則に集中。MyResistorはこんな感じ。
そして、上のMyResistor「理想抵抗」モデルに、3V、10Hzの電圧波形を与えて「回路」としてみたのが下のモデルです。抵抗だけでは「動く」回路にならないので、Groundと、電圧源が必要。標準のライブラリを引用させていただいております。なお、OMNotebookの中で標準のライブラリを実行する場合、以下のおまじないをしておかないとならないようです。
loadModel (Modelica)
また、import文の中で、在りもしないライブラリを呼び出しても、モデルを記述したOMNotebookのcellを評価したときには、スルーです。後で、simulateしたときに、ようやくエラーになりますので、タイプミスには気を付けてください。
実際に1秒分、シミュレーションして、みた結果(グラフは最初0.7秒くらい分しかキャプチャしてませんが。)
R1.i
と書かれているインスタンスの中のメンバ変数(と呼んでいいのかな?)iは、どんな構造になっているのか、ようやく納得がいった気がいたしまするで。
微々たる進捗だなあ。