2011-08-02 8 views
1

Modelicaで新しいメディアモデルを作成したい。すべての媒体モデルは、min、max、start、およびnominal属性を持つタイプ温度を持ちます。最低温度をfluidLimits.TMIN(FluidLimitsレコードのインスタンス)に格納されている値に設定したいと思いますが、リテラル以外の値があるため、min属性が無視されるという警告が常に表示されます。代わりにmin=Modelica.Constants.smallと書くことができます。Modelica - min属性を設定する

partial package SomeMediumModel 
    extends Modelica.Media.Interfaces.PartialTwoPhaseMedium(
    Temperature(min=fluidLimits.TMIN, max=600)); 

    constant FluidLimits fluidLimits; 
    ... 
end SomeMediumModel; 

FluidLimitsレコードを使用する方法の例があります: 以下の私の中のモデルの定義の最初の行を参照してください? minがfluidLimits.TMINの値を受け入れるためには、何を変更する必要がありますか?

答えて

1

なぜこれが機能しないのかよく分かりません。 fluidLimitsは定数なので、私はそれが動作するはずです。私はFluidLimitsが記録だと思いますか?

これは潜在的なバグのようです。私はあなたのツールベンダーにそれを報告し、彼らが何を言っているかを見ます。一方で、潜在的な問題を回避するには、次のようにパッケージを定義するには、次のようになります。

partial package SomeMediumModel 
    extends Modelica.Media.Interfaces.PartialTwoPhaseMedium(
    Temperature(min=FluidLimitsPackage.TMIN, max=600)); 

    package FluidLimitsPackage 
    constant Modelica.Constants.Temperature TMIN=275; 
    end FluidLimitsPackage; 
    ... 
end SomeMediumModel; 

私はあなたが持っている問題は、ツールだけで、これが真に一定であることを認識していないということである疑いがあります。このアプローチ(テストされていない、BTW)は、それを回避することができます。しかし、いずれにしても、ツールベンダーにそれを知らせて確実に報告する必要があります。

+0

ありがとうございました。私はあなたの回避策を試しましたが、まだ満足のいく方法で動作するようにはなりませんでした。私のツールはDymolaです。次の日に[email protected]に連絡します。 FluidLimitsはレコードです。 FluidLimits内の各変数が定数か、またはfluidLimitsのみがFluidLimitsレコードの定数インスタンスであるかどうかは異なりますか? – matth

+0

私は2つの問題があると思う:FluidLimitsレコードの変数TMINはTemperature型であり、この型の最小属性(Modelica.Mediaで定義されている)を設定するためにTMINを使用したいので、ある種のループがあります。これに対する解決策は、Modelica.Munitの定義の代わりにFluidLimitsレコードの定義にModelica.SIunits.Temperatureを使用することです。 2番目の問題は、min属性を設定する場所です:部分パッケージ(fluidLimits.TMINにはまだ価値がない)では機能しませんが、最終的なメディア定義では機能します。 – matth

関連する問題