Modelicaのソースを表示
←
Modelica
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2018年3月}} '''Modelica'''(モデリカ)とは、オブジェクト指向のマルチドメイン・[[モデリング言語]]である。多分野に跨る複雑なシステム(例えば、機械、電気、電子、油圧、熱、制御、電力、プロセス指向のサブコンポーネントを含むシステム)の[[モデリング (科学的)|モデリング]]に適しており、特に物理現象を表現するモデルの構築で使われている。 [[オープンソース]]である為、特定のツールに依存することなく資産の共有や開発が出来る。言語仕様やメンテナンスは非営利国際組織のModelica協会によって行われており、標準[[ライブラリ]]としてフリーで公開されている。 == 特徴 == Modelicaは[[オブジェクト指向プログラミング]]言語(例えば、[[C++]]または[[Java]])と似ている点があるが、次の2点において顕著に異なる。 まず、Modelicaは[[プログラミング言語]]というよりはモデリング言語である。Modelicaで作成されたモデルは、普通に[[コンパイル]]されるのではなく、シミュレーションエンジンで解釈できるよう翻訳される。つまりシミュレーションエンジンは実行の順序を決定する為に、式を操作する事がある(シンボリック処理)。 次に、モデルの作成では、プログラミング言語に類似した予約語を含む[[アルゴリズム]]のコンポーネントが含まれているかもしれないが、主にモデルの表現においては方程式とのセットで構成される。 典型的な代入文は、以下のように表現する。下記式では、左辺(x)に右辺の式(2+y)から算出された値が代入される。 <syntaxhighlight lang="modelica"> x := 2+y; </syntaxhighlight> [[方程式]]を表現するには、以下のように表現する。下記式では、左辺と右辺の式が等しいことを表現する。 <syntaxhighlight lang="modelica"> f = m * a; </syntaxhighlight> == 歴史 == Modelicaの構想・設計は1996年9月にHilding Elmqvist氏より考案され、1997年9月にModelica仕様ver1.0がリリースされた。これをベースに[[プロトタイプ]]版の商用[[ソフトウェア]] {{仮リンク|Dymola|en|Dymola}} に実装され、2000年にはModelica言語とフリーのModelica標準ライブラリの発展を管理する為に、非営利国際組織のModelica協会が設立された。 ==ライブラリ== Modelica協会では、Molelica標準ライブラリ(MSL:Modelica Standard Library)をはじめ、フリーのライブラリを公開している。標準ライブラリやフリーのライブラリのほとんどは、Modelicaのライセンスに基づいて商用製品に使用できる。 {| class="wikitable" |+ MSLバージョン一覧 ! バージョン !! リリース日 !! モデル数 !! 関数の数 |- | 3.2 || 2010年10月 || 1280 || 910 |- | 3.1 || 2009年8月 || 922 || 615 |- | 3.0.1 || 2009年1月 || 781 || 553 |- | 3.0 || 2008年2月 || 777 || 549 |- | 2.2.2 || 2007年8月 || 740 || 540 |- | 2.2.1 || 2006年3月 || 690 || 510 |- | 2.2 || 2005年4月 || 640 || 470 |- | 2.1 || 2004年11月 || 580 || 200 |- | 1.6 || 2004年6月 || 290 || 40 |} == 実装 == Modelicaをシミュレーションする環境ツール(商用・フリー)としては、CATIA Systems、Dymola、LMS AMESim、JModelica、{{仮リンク|MapleSim|en|MapleSim}}、MathModelica、{{仮リンク|OpenModelica|en|OpenModelica}}、{{仮リンク|SCICOS|en|Scicos}}、{{仮リンク|SimulationX|en|SimulationX}}がある。 ==サンプル== 下記に単純な <math>\dot x = - c \cdot x</math> システムを表現したサンプルモデルを示す。 <syntaxhighlight lang="modelica"> model FirstOrder parameter Real c=1 "Time constant"; Real x "An unknown"; equation der(x) = -c*x "A first order differential equation"; end FirstOrder; </syntaxhighlight> この例では、'parameter'修飾子を使用し変数が時不変であることを示し、'der'[[演算子 (コンピュータ言語)|演算子]]で変数の[[微分]]を表現する。 Modelicaは主に物理領域システムを表現する為に設計された。以下に電気ドメインを例に基本構築概念を示す。 ===ユーザー定義の派生型=== modelicaでは4つのタイプ(Real,Integer,Boolean,String)の組込み型を持っている。ユーザー定義型は関連付ける[[物理量]]、[[単位]]、公称値とで他の属性を派生させられる。 <syntaxhighlight lang="modelica"> type Voltage = Real(quantity="ElectricalPotential", unit="V"); type Current = Real(quantity="ElectricalCurrent", unit="A"); ・・・ </syntaxhighlight> ===コネクタの定義=== 他のコンポーネントとコンポーネントの相互作用は、物理ポートと呼ばれるコネクタなどで定義されている。例えば、電気端子の場合は以下のように定義される。 <syntaxhighlight lang="modelica"> connector Pin "Electrical pin" Voltage v "Potential at the pin"; flow Current i "Current flowing into the component"; end Pin; </syntaxhighlight> 接頭辞に"flow"が定義されている変数(ここでは変数:i)はフロー変数と呼ばれ、コネクタ変数の合計値がゼロに定義される。 ===基本モデルコンポーネント=== 基本的なモデルコンポーネントは、モデルによって定義されており、コネクタ変数と関係を定義した方程式とで構成されている。途中経過の計算式を記載する必要はない。 <syntaxhighlight lang="modelica"> model Capacitor parameter Capacitance C; Voltage u "Voltage drop between pin_p and pin_n"; Pin pin_p, pin_n; equation 0 = pin_p.i + pin_n.i; u = pin_p.v - pin_n.v; C * der(u) = pin_p.i; end Capacitor; </syntaxhighlight> == 外部リンク == * {{Official website|name=The Modelica Association — Modelica Association}} 公式ウェブサイト [[Category:モデリング言語]] [[Category:オブジェクト指向]]
このページで使用されているテンプレート:
テンプレート:Official website
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
テンプレート:出典の明記
(
ソースを閲覧
)
Modelica
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報