2012-09-17 55 views
1
model try 
    Real x(start = 1); 

algorithm 
    when x >= 7 then 
     reinit(x, 5); 
    end when; 

equation 
     der(x) = 1 ; 

end try; 

只要guard条件从false更改为true,就应触发when语句。 但在OpenModelica中并非如此。 OpenModelica中的try示例显示when仅触发一次。我想知道这是OpenModelica的错误还是我的一些误解。算法部分中when子句混淆

回答

4

你是对的。我很确定这将是OpenModelica中的一个错误。该模型的工作原理与Dymola 2013相同。

我的猜测是,它与您的条件涉及x和最终变更x(同一变量)时的语句有关。它可能会以某种方式无法注意到用于确定when子句应该触发的点的监视器函数中的reinit。

+0

这确实是OpenModelica [1]中的一个错误,因为算法reinit没有进行事件迭代。从我报告它到修复为止,花了4个小时。 [1]:https://trac.openmodelica.org/OpenModelica/ticket/1830 –