我正在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個非線性獨立方程)
請告訴我,如果我沒有清楚地解釋我自己。感謝您的幫助。
這解釋了這個問題比原來的問題要好得多。我已經在媒體模型上投入了大量資金,可能太遲了。使用Dymola求解器,我可以在幾乎完整的熱力學場中可靠地計算出VLE。 在諮詢開發人員時,我可能會繼續使用此方法。 原始問題: 是否有通用求解方程組在modelica中查找問題的通用解法器? 仍然存在,但給出了足夠的輸入。 – 2014-10-09 11:18:09
Modelica作爲一種語言不提供任何解決方案。您可以使用Modelica編程求解器,一個求解器在MSL中實現(僅限於1D)。應該可以連接用C或Fortran編寫的包含netlib或GNU Scientific庫的解決方案的現有庫。還有兩個道理:1:完整的熱力學表面還包括超臨界部分。 2:你如何猜測開始值,以及如何將它們傳遞給求解器? – matth 2014-10-09 11:34:28
還有兩點意見:直接使用亥姆霍茲能源EoS將永遠不會很快,因爲它使用了許多和重要的術語。如果速度很重要,您還應該考慮多維查找表或樣條線。由於其數值行爲,對Tillner-Roth水+氨EoS的迭代求解器特別困難。出於這個原因,Eric Lemmon正在開發一個新的EoS,我想他會很高興地告訴你有關細節。此外,您可以聯繫DTU的Martin RyhlKærn,他也在Modelica從事氨水工作。 – matth 2014-10-09 11:51:17