2014-10-08 56 views
2

我正在Dymola中構建一個類似於Helmholtz-Media的媒體庫,但是對於氨水+混合物。 你會得到很多不明確可解的方程。Dymola爲媒體模型求解平穩方程系統

由於Modelica中介質和流體庫的結構,我需要能夠從p,h和x得到熱力學狀態。狀態向量由d,T和x組成。

這是一個簡單的例子,如何讓狀態矢量:

model getState_phX 
    parameter AbsolutePressure p = 500000 "pressure"; 
    parameter SpecificEnthalpy h = 2500000 "enthalpy"; 
    parameter SI.MassFraction x = 0.7 "mole fraction of amonia"; 
    parameter Real[2] start = getStart_Td_phx(p,h,xL); 
    output ThermodynamicState state(d(start=start[2]),T(start=start[1]),X={(1 - xL),xL}); 
    DerivateFull f = Derivates(state); 
equation 
    p = (1 + f.delta*f.phirdelta)*R*state.T*state.d/molarMass(state); 
    h = state.T*R*(1 + f.delta*f.phirdelta + f.tau*f.phirtau + f.tau0*f.phi0tau0)/molarMass(state); 
end getState_phX; 

請不要介意方程的部分。它們由許多依賴於狀態向量的部分(總和和日誌)組成。 這是由Dymola的求解器以良好的起始值解決的。但我並不需要Dassl的所有'時間依賴'解決能力。

在庫中是否存在用於解決這種平穩方程系統而沒有求解器的問題? 使用這些模型是否可以使用此模型創建函數?

我知道我可以通過手,但對於媒體-模型的其他部分(VLE)寫一個簡單的解決者,我需要高度可靠的固定解算過(但4個非線性獨立方程)

請告訴我,如果我沒有清楚地解釋我自己。感謝您的幫助。

回答

1

您的流體屬性庫的基礎是前向部分,即實際的亥姆霍茲能量狀態方程(EoS)。它需要d,T,X作爲輸入。這一部分或多或少地實施。
如果你想使用p,h,X來指定熱力學狀態,或者如果你想找到多個階段之間的平衡,你通常會建立一個resdual函數系統,並嘗試使用一些迭代程序來找到方程系統的根。 Span (2000)寫入

「爲 設置時的節目包狀態方程的評價的可靠迭代過程[用於求根] 往往是最關鍵的問題製劑」。

重新使用現有的解算器都有優點和缺點,他們通常是非常行之有效的,寫他們需要花費很多努力,但如果你寫你自己的求解器,你有什麼它做更多的控制。據我所知,Dassl有不同的優勢,但解決這種方程不是它的原始目標。 Olson, Tummescheit and Elmqvist (2005)試圖使用Dymola解算器來查找VLE,請參閱鏈接pdf的第3.2節。聽起來像它的工作,但不是很可靠。
MSL已經包含一個基於布倫特算法的非線性求解器,該求解器僅與一個未知值一起工作,請參見Modelica.Math.Nolinear.solveOneNonlinearEquation。如果你願意,你可以添加額外的通用求解器。在編寫你自己的求解器之前,你應該聯繫接口的開發人員(它將在未來的MSL版本中進行擴展,以包含多組分,多相混合物),並考慮重新使用像RefProp,CoolProp,FluidProp或MultiFlash等現有流體屬性庫,僅舉幾例。

+0

這解釋了這個問題比原來的問題要好得多。我已經在媒體模型上投入了大量資金,可能太遲了。使用Dymola求解器,我可以在幾乎完整的熱力學場中可靠地計算出VLE。 在諮詢開發人員時,我可能會繼續使用此方法。 原始問題: 是否有通用求解方程組在modelica中查找問題的通用解法器? 仍然存在,但給出了足夠的輸入。 – 2014-10-09 11:18:09

+0

Modelica作爲一種語言不提供任何解決方案。您可以使用Modelica編程求解器,一個求解器在MSL中實現(僅限於1D)。應該可以連接用C或Fortran編寫的包含netlib或GNU Scientific庫的解決方案的現有庫。還有兩個道理:1:完整的熱力學表面還包括超臨界部分。 2:你如何猜測開始值,以及如何將它們傳遞給求解器? – matth 2014-10-09 11:34:28

+0

還有兩點意見:直接使用亥姆霍茲能源EoS將永遠不會很快,因爲它使用了許多和重要的術語。如果速度很重要,您還應該考慮多維查找表或樣條線。由於其數值行爲,對Tillner-Roth水+氨EoS的迭代求解器特別困難。出於這個原因,Eric Lemmon正在開發一個新的EoS,我想他會很高興地告訴你有關細節。此外,您可以聯繫DTU的Martin RyhlKærn,他也在Modelica從事氨水工作。 – matth 2014-10-09 11:51:17