2012-09-17 89 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 –