首先,我是一个相对较新的用户,我正在尝试将一个物理测试数据与我使用Dymola/Modelica构建的模型关联起来。在该模型中,“变量1”具有一个初始值,根据该初始值计算“变量2、3和4”,并使用这些变量(2、3和4)重新计算“变量1”,该“变量1”的值必须用于下一个时间步长,并且必须进行后续的重新计算。
我不确定如何将这个“更新后的变量1”作为每个时间步的输入传递给模型?有人能帮我解决这个问题吗?
谢谢。
发布于 2016-02-23 05:39:11
如果我很好地理解了这个问题,你有一个方程系统,你想要解耦,即用前一个时间步的一些初始值或系统的值来求解一组方程,让我们称这个方程组为A,然后将其结果作为下一个时间步的输入求解方程组B,依此类推。下面是一个离散的解耦系统的例子,其中解耦是通过时钟周期移位获得的:

然后以耦合的方式求解同一个系统,所以在每个时刻,所有方程都是同步求解的:

为了回复您的评论,您还可以使用pre运算符将您的模型实现到when语句中的等式部分,该运算符用于在事件期间引用离散变量的最后一个值。
model test
parameter Real timeStep = 0.1;
Real T_i[4];
Real K[4];
Real M[4];
initial equation
T_i = {1,2,3,4}; //starting value of a T
K = T_i .* 1.1 .+ 4;
M = K .* 1.1 .+ 4;
equation
when sample(timeStep,timeStep) then
K = T_i .* 10 .+ 4;
M = K .* 10 .+ 4;
T_i = pre(M) + pre(K);
end when;
end test;我希望这能帮到你
https://stackoverflow.com/questions/35561469
复制相似问题