FromModelicaをOML式と併せて使用する
OML式を使用したFromModelica関数の使用方法について説明します。
FromModelica関数はModelicaExpression
型のOML オブジェクトを返します。このオブジェクトは、基本的な関数や演算子を含む単純なOML 式で使用される場合があります。OML式では、FromModelicaが返すModelicaExpression
オブジェクトは、対応する型のOML変数として扱われます。
このOML式は、Modelicaコンポーネントのパラメータ値の定義や、後述するContextスクリプトで使用することができます。
先に提示したパラメータ値を考慮します:
FromModelica('Modelica.Electrical.MultiPhase.Functions.symmetricOrientation’, {3})
- ここで、パラメータ値の定義に上記の量の負の値が必要であるとします(特にElectrical Multiphaseライブラリの
SineVoltage
ソースコンポーネントのデフォルト値がこれに該当します)。この値は、以下のように定義できます: -FromModelica('Modelica.Electrical.MultiPhase.Functions.symmetricOrientation’, {3})
-
マイナス演算子は、FromModelica関数から返される
ModelicaExpression
オブジェクトに適用されます。この構文が許される理由は、否定演算子がこのオブジェクトに対してオーバーロードされており、結果として得られるオブジェクトには否定されたModelica式が含まれるからです。このプロセスは、ユーザーから見て透過性のあるものです。ユーザーは、FromModelicaが返す値をOMLの値とみなすことができます。多くの基本的な関数や演算子について、演算子のオーバーロードが用意されています。次の例は、コンポーネントパラメータの値を定義するために使用する、より複雑な式を示しています。
2*max(maxV,1/sqrt(FromModelica('Modelica.Constants.eps')))
-
ここでは、平方根、max関数、反転演算子、乗算演算子が、FromModelicaが返す
ModelicaExpression
オブジェクトに適用されています。この式にはOML変数(maxV)も含まれます。この変数はダイアグラムのワークスペ ースで利用可能でなければなりません(つまり、コンテキストで定義されていなければなりません)。これらの関数と演算子はModelicaExpression
オブジェクトでオーバーロードされているため、これは正しい式の記述です。この式には、例えばFromModelicaで取得したModelica関数の使用法を含めることもできます。
FromModelica('Modelica.Constants.k')*FromModelica('Modelica.SIunits.Conversions.from_degC',{T})/C
-
ここで、TとCは、ダイアグラムのワークスペースで利用可能なOML変数です。
OML式でFromModelicaを使用するのは、返されるエンティティがモデル内の別のコンポーネントのものである場合にも有効です。以下はその例で、非スカラー変数の使用と抽出演算子の適用も示しています。