如何检索 Modelica 中实际值的时间步长?
How can i retrieve the time step size for real value in the Modelica?
我想知道如何获得实际值的每个时间步长以将其用于等式。
我试图找到功能或其他东西,但我找不到。
其实我是想按体积对压力进行积分,但是Modelica中的积分器只支持时间积分。所以我决定将 (delta_volume/delta_time) 乘以压力的积分。这就是我这样做的原因。
伪代码如下
Work=Integral(pressure);
但是我想要的是按体积对压力进行积分,而不是按时间。所以应该改成这样
Work=(Integral(pressure)) * (delta Volume/delta time);
我无法使用增量时间的常量值,因为求解器无法处理固定时间步长的模型。
请回复我如何获得每个时间步长的真实值。
如果你不想积分p dt
但是p dV=p dV/dt dt
那么你必须将p
乘以der(V)
,有乘法块Modelica.Blocks.Math.Product
和微分Modelica.Blocks.Continuous.Der
;或者使用 Modelica.Blocks.Continuous.Derivative
作为近似导数。
请注意,Dymola 会自动检查单位,在这种情况下,会检查积分 p*der(V)
是否与工作兼容(即 "J")- 它应该是。
不确定我是否正确理解你的问题,但你不能通过
计算功率
Power = pressure * volumeFlowRate = pressure * der(volume);
然后计算
der(Work) = Power;
除此之外,关于您的实际问题:无法从模型的 Modelica 代码中检索求解器的步长。
我想知道如何获得实际值的每个时间步长以将其用于等式。 我试图找到功能或其他东西,但我找不到。
其实我是想按体积对压力进行积分,但是Modelica中的积分器只支持时间积分。所以我决定将 (delta_volume/delta_time) 乘以压力的积分。这就是我这样做的原因。
伪代码如下
Work=Integral(pressure);
但是我想要的是按体积对压力进行积分,而不是按时间。所以应该改成这样
Work=(Integral(pressure)) * (delta Volume/delta time);
我无法使用增量时间的常量值,因为求解器无法处理固定时间步长的模型。
请回复我如何获得每个时间步长的真实值。
如果你不想积分p dt
但是p dV=p dV/dt dt
那么你必须将p
乘以der(V)
,有乘法块Modelica.Blocks.Math.Product
和微分Modelica.Blocks.Continuous.Der
;或者使用 Modelica.Blocks.Continuous.Derivative
作为近似导数。
请注意,Dymola 会自动检查单位,在这种情况下,会检查积分 p*der(V)
是否与工作兼容(即 "J")- 它应该是。
不确定我是否正确理解你的问题,但你不能通过
计算功率Power = pressure * volumeFlowRate = pressure * der(volume);
然后计算
der(Work) = Power;
除此之外,关于您的实际问题:无法从模型的 Modelica 代码中检索求解器的步长。