2011-08-02 24 views
1

我想在Modelica中創建一個新的介質模型。所有介質模型都具有最小,最大,起始和標稱屬性的類型溫度。我想將最小溫度設置爲fluidLimits.TMIN(這是FluidLimits記錄的一個實例)中存儲的值,但我總是會收到警告,指出min屬性被忽略,因爲它具有非文字值。寫作min=Modelica.Constants.small而不是作品。 見下面我介質模型定義的第一行:Modelica - 設置最小屬性

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; 

我懷疑您遇到的問題是,工具只是沒有認識到這是一個真正的常數。這種方法(未經測試,順便說一句)可能會解決這個問題。但無論如何,您都應該將其報告給您的工具供應商,以確保他們意識到這一點。

+0

謝謝你的回答。我試過你的解決方法,但還沒有讓它以令人滿意的方式工作。我的工具是Dymola,我將在接下來的幾天內聯繫[email protected]。 FluidLimits是一個記錄。 FluidLimits內部的每個變量是常量還是隻有fluidLimits是FluidLimits記錄的常量實例纔有區別? – matth

+0

我認爲存在兩個問題:FluidLimits記錄中的變量TMIN是Temperature類型,我想使用TMIN來設置此類型的min屬性(它在Modelica.Media中定義),所以存在某種類型的循環。解決此問題的方法是在FluidLimits記錄的定義中使用Modelica.SIunits.Temperature而不是Modelica.Media定義。第二個問題是我設置min屬性的地方:它不適用於部分包(其中fluidLimits.TMIN還沒有值),但它在最終的介質定義中起作用。 – matth