如何正确更改模型文本的输出间隔
How to properly change output interval from model text
当我将用于设置输出间隔的注释包含到模型中时,这些设置似乎只是第一次在 OpenModelica 会话中模拟模型时假定的。例如,如果我创建这个模型
model IntervalTest
Real y(start = 1, fixed = true);
Real v(start = 1, fixed = true);
equation
der(y) = v;
der(v) = -100 * y;
annotation(
experiment(StartTime = 0, StopTime = 67, Tolerance = 1e-06, Interval = 0.01),
__OpenModelica_simulationFlags(lv = "LOG_STATS", outputFormat = "mat", s = "dassl"));
end IntervalTest;
并且第一次模拟,输出间隔正确设置为10毫秒。但是当我把Interval
改成0.001,保存模型模拟,输出间隔还是10ms。既没有关闭所有结果和绘图 windows,也没有关闭模型 window,甚至没有从 OpenModelica 卸载整个项目文件并随后重新加载它确实将输出间隔更改为我在模型中设置的值。
只有在关闭 OpenModelica 并重新打开后,才会遵守新的输出间隔。当然,在使用模拟设置对话框时,可以手动更改输出间隔,但我很少想使用它,因为它不是永久性的。
那么从模型文本立即更改模拟设置的正确方法是什么?如果我在模型文本中将上述振荡器模型的刚度值从 100 更改为 25 (der(v)=...
),模拟结果将相应改变(即振荡器频率的一半),但如果我对 Interval
,不会的。我是不是误解了annotations
背后的逻辑?
当我将用于设置输出间隔的注释包含到模型中时,这些设置似乎只是第一次在 OpenModelica 会话中模拟模型时假定的。例如,如果我创建这个模型
model IntervalTest
Real y(start = 1, fixed = true);
Real v(start = 1, fixed = true);
equation
der(y) = v;
der(v) = -100 * y;
annotation(
experiment(StartTime = 0, StopTime = 67, Tolerance = 1e-06, Interval = 0.01),
__OpenModelica_simulationFlags(lv = "LOG_STATS", outputFormat = "mat", s = "dassl"));
end IntervalTest;
并且第一次模拟,输出间隔正确设置为10毫秒。但是当我把Interval
改成0.001,保存模型模拟,输出间隔还是10ms。既没有关闭所有结果和绘图 windows,也没有关闭模型 window,甚至没有从 OpenModelica 卸载整个项目文件并随后重新加载它确实将输出间隔更改为我在模型中设置的值。
只有在关闭 OpenModelica 并重新打开后,才会遵守新的输出间隔。当然,在使用模拟设置对话框时,可以手动更改输出间隔,但我很少想使用它,因为它不是永久性的。
那么从模型文本立即更改模拟设置的正确方法是什么?如果我在模型文本中将上述振荡器模型的刚度值从 100 更改为 25 (der(v)=...
),模拟结果将相应改变(即振荡器频率的一半),但如果我对 Interval
,不会的。我是不是误解了annotations
背后的逻辑?