如何在特定时间访问变量值?

时间:2018-12-06 07:57:41

标签: algorithm math modelica

我尝试了以下代码:

model var
  Real x;
  Real y;
  Real z;
equation 

  x=6*time;
  when time>=6 then
    z=x;
  end when;
  y=3*z;
end var;

但是它会给我y = 3*x(在时间= 6时),但是从时间= 6开始,而我从一开始就需要它。
解决这个问题有直接方法吗?

1 个答案:

答案 0 :(得分:0)

根据人们的评论,您现在知道Modelica在时间行为方面非常严格。您可能会争辩说它是时间的一种物理表示(除了量子和其他疯狂的物理学),因为您无法在代码中进行时间旅行。

根据您的应用程序,可能有解决问题的方法。一种可能性是将时间行为移至初始化。这样一来,您可以捕获time=0之前的行为,并以预期的行为从time=0开始。

例如:

model var

  parameter Modelica.SIunits.Time t_zero = 6;
  parameter Real x(fixed=false);

  Real y;
  Real z;

initial equation
  x = 6*t_zero; // or some more complicated set of equations/functions

equation 
  z = x;
  y=3*z;

end var;

已认识到这可能会限制事物的范围,但是您可以拥有很多参数,并且在初始方程式块中具有更复杂的表示形式。您还可以在执行积分等操作的地方调用函数x=func(),以获取time=0处的x值。

希望现在或将来有帮助。