Modelica 介质模型定常方程组的Dymola解法
我正在Dymola建立一个媒体库,类似于Helmholtz媒体,但用于氨水+水的混合物。 你会得到很多不可显式解的方程 由于Modelica中介质和流体库的结构,我需要能够从p、h和x中获得热力学状态。状态向量由d、T和x组成 这是一个如何获取状态向量的简单示例:Modelica 介质模型定常方程组的Dymola解法,modelica,dymola,Modelica,Dymola,我正在Dymola建立一个媒体库,类似于Helmholtz媒体,但用于氨水+水的混合物。 你会得到很多不可显式解的方程 由于Modelica中介质和流体库的结构,我需要能够从p、h和x中获得热力学状态。状态向量由d、T和x组成 这是一个如何获取状态向量的简单示例: model getState_phX parameter AbsolutePressure p = 500000 "pressure"; parameter SpecificEnthalpy h = 2500000 "enth
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个非线性独立方程)
如果我没有解释清楚,请告诉我。感谢您的帮助。流体属性库的基础是一个前端部分,即实际的亥姆霍兹能量状态方程(EoS)。它将
d,T,X
作为输入。这一部分或多或少是很难实现的。如果你想用p,h,X来指定热力学状态,或者你想找到多个相之间的平衡,你通常会建立一个重函数系统,并尝试用一些迭代程序来找到方程组的根。写 “制定可靠的迭代程序[用于寻根] 在为设置程序包时,通常是最关键的问题 状态方程的评估” 重复使用现有的解算器有其优点和缺点,它们通常经过很好的测试,编写它们需要很多努力,但是如果您编写自己的解算器,您可以更好地控制它的功能。据我所知,Dassl有各种各样的优势,但解决这类方程并不是它最初的目标。 尝试使用Dymola解算器查找VLE,请参见链接pdf的第3.2节。听起来很有效,但不太可靠。
MSL已经包含了一个基于Brent算法的非线性解算器,该算法只适用于一个未知对象,请参见。如果需要,可以添加其他通用解算器
在编写自己的求解器之前,您应该与
FluidPorts
传递。我不允许使用这些值生成参数
。这是因为我假设的编译和解算器实现。也许有一个解决办法。