首先,我是一个相对较新的用户。我正在尝试将物理测试数据与我使用 Dymola/Modelica 构建的模型相关联。在这个模型中,“变量 1”具有一个初始值,基于该初始值计算“变量 2,3 和 4”,这些变量(2,3 和 4)用于重新计算“变量 1”和“变量”的这个值1" 必须用于下一个时间步,并且必须进行后续的重新计算。
我不确定如何将这个“更新的变量 1”作为输入传递给每个时间步的模型?有人可以帮我解决这个问题吗?
谢谢。
首先,我是一个相对较新的用户。我正在尝试将物理测试数据与我使用 Dymola/Modelica 构建的模型相关联。在这个模型中,“变量 1”具有一个初始值,基于该初始值计算“变量 2,3 和 4”,这些变量(2,3 和 4)用于重新计算“变量 1”和“变量”的这个值1" 必须用于下一个时间步,并且必须进行后续的重新计算。
我不确定如何将这个“更新的变量 1”作为输入传递给每个时间步的模型?有人可以帮我解决这个问题吗?
谢谢。
如果我很好地理解了这个问题,您有一个要解耦的方程组,即使用系统在前一个时间步的一些初始值或值求解一组方程,我们称这个方程组为 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;
我希望这有帮助