2014-10-08 47 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