是否可以使用时变变量的先前值
例如:假设我的管道入口温度为 298K,具有指定的均匀质量流量(m_flow),现在假设我正在使用 100 瓦的加热器加热管道。出口温度将达到假设 302K 的更高温度,现在如果我必须使用这个出口温度作为我的入口温度(从某种意义上说我正在循环水),我会怎么做?
是否可以根据前一个时间步的出口温度更新入口温度的值?因此,对于下一次迭代,入口温度将与前一次迭代中的出口温度相同(换句话说,流体将再循环)。
谢谢
是否可以使用时变变量的先前值
例如:假设我的管道入口温度为 298K,具有指定的均匀质量流量(m_flow),现在假设我正在使用 100 瓦的加热器加热管道。出口温度将达到假设 302K 的更高温度,现在如果我必须使用这个出口温度作为我的入口温度(从某种意义上说我正在循环水),我会怎么做?
是否可以根据前一个时间步的出口温度更新入口温度的值?因此,对于下一次迭代,入口温度将与前一次迭代中的出口温度相同(换句话说,流体将再循环)。
谢谢
时间步根本没有进入它。使用有关时间步长信息的模型是错误的。自然不知道也不关心积分时间步长,模型应该反映这一点。
在我看来,您想要捕捉的是运输延迟。传输延迟是分子、电子等通过系统所花费的时间所引入的延迟。因此,大概您希望建模的是入口流体到达出口所需的时间。同样,这与积分时间步长无关,而是与流体的速度和它必须行进的距离有关。一旦您知道这需要多长时间(通过对系统的先验知识或通过查看模拟结果本身),您可以按照 Marco 的建议使用延迟算子。
您无法访问上一个时间步中的值。您可以在 Modelica 中获得的最接近delay(exp,T)
的值是用于获取 T 单位时间前的值。
为了为您描述的系统设置合适的模型,我建议您查看示例:
Modelica.Thermal.FluidHeatFlow.Examples.IndirectCooling
modelica 标准库版本。3.2. 您可以放置一个环境或控制音量组件,而不是一根管道,以更好地满足您的需求。此外,使用连续和可微方程(延迟函数不是),您将受益于 Modelica 代码的一些优点,例如,您将能够在更广泛的情况下重用您的模型,解决逆问题,求解初始值问题, ...
我希望这会有所帮助,马可