Modelica 如何使用上一个间隔中变量的值作为等式的输入。。。。?

Modelica 如何使用上一个间隔中变量的值作为等式的输入。。。。?,modelica,openmodelica,dymola,Modelica,Openmodelica,Dymola,是否可以使用时变变量的先前值 例如: 假设管道的入口温度为298K,具有指定的均匀质量流量(m_流量),现在假设我使用100瓦的加热器加热管道。 出口温度将达到更高的温度,假设为302K,现在如果我必须使用此出口温度作为我的入口温度(在循环水的意义上),我将如何操作 是否可以根据前一时间步的出口温度更新进口温度值?因此,在下一次迭代中,入口温度将与上一次迭代中的欧莱特温度相同(换句话说,流体将再循环) 谢谢您无法访问上一时间步中的值。在Modelica中,最接近的方法是使用延迟(exp,T)获取

是否可以使用时变变量的先前值

例如: 假设管道的入口温度为298K,具有指定的均匀质量流量(m_流量),现在假设我使用100瓦的加热器加热管道。 出口温度将达到更高的温度,假设为302K,现在如果我必须使用此出口温度作为我的入口温度(在循环水的意义上),我将如何操作

是否可以根据前一时间步的出口温度更新进口温度值?因此,在下一次迭代中,入口温度将与上一次迭代中的欧莱特温度相同(换句话说,流体将再循环)


谢谢

您无法访问上一时间步中的值。在Modelica中,最接近的方法是使用
延迟(exp,T)
获取时间单位之前的值T。

为了为您描述的系统设置合适的模型,我建议您查看以下示例:

Modelica.Thermal.FluidHeatFlow.Examples.IndirectCooling

modelica标准库版本。3.2. 您可以放置环境或控制体积组件,而不是一根管道,以更好地满足您的需要。此外,使用连续可微方程(延迟函数不是),您将受益于Modelica代码的一些优点,例如,您将能够在更广泛的情况下重用您的模型,解决反问题,解决初始值问题

我希望这有帮助,
马可

时间步根本没有进入它。使用有关timestep信息的模型是错误的。大自然不知道也不关心集成时间步,模型应该反映这一点


在我看来,您想要捕获的是传输延迟。传输延迟是由分子、电子等通过系统所需的时间引入的延迟。因此,假设您希望建模的是入口流体到达出口所需的时间。同样,这与积分时间步长无关,而是与流体的速度和它必须移动的距离有关。一旦你知道这需要多长时间(通过系统的先验知识或通过观察模拟结果本身),你就可以按照马可的建议使用延迟运算符。

我没有很好地解释自己,对此感到抱歉。我完全同意Michael的观点,只是为了澄清一下,我建议使用连续可微方程,就像我引用的用于构建示例的Modelica类中一样,而不是使用延迟运算符。