2017-11-10 8 views
2

私は現在、Dymolaに多くのパイプを含む地域暖房ネットワークモデルをシミュレーションしており、ネットワーク全体に関するいくつかのデータ、つまりパイプラインの総熱損失を計算したいと考えています。Dymolaのクラスのすべてのインスタンスを反復処理する方法は?

これを行う明白な方法は、forループを使用してパイプごとに繰り返し、個々の熱損失を合計することです。しかし、どのパイプをどのように反復処理できるかはわかりません。次のようにネットワーク内の各パイプは、宣言私は「パイプ」を作成したクラスのインスタンスである:

replaceable model Pipe = 
     DHNAEE.Components.Pipe.PipeHeatLossMod_Double; 

各パイプは、その後、以下のようなパイプクラスのインスタンスとして定義される:

Pipe dualPipeK30_c78(redeclare package Medium = Medium,diameter=0.02, thicknessIns=0.036, length=12.3, m_flow_nominal=5,nPorts = 1) 

私の質問は、モデルのクラス "Pipe"のすべてのインスタンスを繰り返し処理し、特定の出力、つまりそれぞれの熱損失を合計する方法があるかどうかです。私は現在、後処理中にPythonでこれをやっていますが、Dymolaからこれを直接持っている方がはるかに有益です。

多くのおかげで、 キース

答えて

3

すべてのパイプは、あなたがを管理しているし、それはあなたがあなたのパイプクラスで(テストされていない)のようなものを追加することができますダイナミックな物理的性質である特別なクラスを使用する場合:

outer MyHeatCapacitor heatSink; 
    model MyHeatCapacitor 
    extends Modelica.Thermal.HeatTransfer.Components.HeatCapacitor; 
    annotation(missingInnerMessage="Need to add global heatSink"); 
    end MyHeatCapacitor; 
equation 
    connect(..., heatSink.port); 

そして、その熱損失がそのヒートシンクコンポーネントに集められます(自動的に追加されます)。

別のオプションは、(あなたがパイプクラスを変更することはできません場合は特に)将来的には可能であるかもしれない: http://www.ep.liu.se/ecp/118/026/ecp15118245.pdf https://trac.modelica.org/Modelica/browser/MCP/public/MCP-0021_ComponentIterators

関連する問題