我正在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