2

私は現在、いくつかの非常に単純な例を試して Modelica を学んでいます。Incompressible次のような非圧縮性流体のコネクタを定義しました。

connector Incompressible
  flow Modelica.SIunits.VolumeFlowRate V_dot;
  Modelica.SIunits.SpecificEnthalpy h;
  Modelica.SIunits.Pressure p;
end Incompressible;

ここで、質量流量または体積流量のソースを定義したいと考えています。

model Source_incompressible
  parameter Modelica.SIunits.VolumeFlowRate V_dot;
  parameter Modelica.SIunits.Temperature T;
  parameter Modelica.SIunits.Pressure p;
  Incompressible outlet;
equation 
  outlet.V_dot = V_dot;
  outlet.h = enthalpyWaterIncompressible(T);  // quick'n'dirty enthalpy function
  outlet.p = p;
end Source_incompressible;

ただし、を確認するSource_incompressibleと、次のようになります。

The problem is structurally singular for the element type Real.
The number of scalar Real unknown elements are 3.
The number of scalar Real equation elements are 4.

私はここで途方に暮れています。明らかに、モデルには 3 つの方程式があります。4 番目の方程式はどこから来たのでしょうか?

洞察に感謝します。

4

2 に答える 2

3

ドミニク、

ここでいくつかの問題が発生しています。Martin が指摘しているように、コネクタはアンバランスです (そのコネクタには「スルー」と「アクロス」のペアが一致していません)。流体システムの場合、これは許容されます。ただし、集中的な流体特性 (エンタルピーなど) は、いわゆる「ストリーム」変数としてマークする必要があります。

確かに、このトピックはかなり複雑です。このトピックに関するオンラインの Modelica ブックに高度な章を追加する予定ですが、まだ時間がありません。Modelica.Fluidそれまでの間、ライブラリおよび/またはその作成者の 1 人である Francesco Casella によるこのプレゼンテーションをご覧になることをお勧めします。

于 2014-05-26T13:25:24.657 に答える
1

そのコネクタは物理コネクタではありません。潜在的な変数ごとに 1 つのフロー変数が必要です。少しでもお役に立てれば、これは OpenModelica のエラー メッセージです。

Warning: Connector .Incompressible is not balanced: The number of potential variables (2) is not equal to the number of flow variables (1).
Error: Too many equations, over-determined system. The model has 4 equation(s) and 3 variable(s).
Error: Internal error Found Equation without time dependent variables outlet.V_dot = V_dot

これは、接続されていないコネクタが流れに対して 1 つの方程式を生成するためです。

outlet.V_dot = 0.0;

これは、outlet.V_dot が以下で置き換えられることを意味します。

outlet.V_dot = V_dot;

そして、あなたは得る:

0.0 = V_dot;

ただし、V_dot はパラメーターであり、方程式セクションで割り当てることはできません (パラメーターが fixed=false の場合は初期方程式が必要であり、デフォルトの場合はバインディング方程式が必要です)。

于 2014-05-23T13:45:55.313 に答える