События, близкие к состоянию, решатель предпримет сокращенный временной шаг, чтобы выровнять шаг по событию. Это может быть полезно для сохранения точности вблизи событий; однако переменная времени, по-видимому, не обновляется в соответствии с размером шага, что приводит к неправильному результату из Dymola:
Вот код Modelica для воспроизведения проблемы:
model Unnamed
Modelica.Blocks.Sources.Trapezoid ramp(
period=1,
rising=0.1,
falling=0.1)
annotation (Placement(transformation(extent={{-52,20},{-32,40}})));
Modelica.Blocks.Continuous.FirstOrder firstOrder(T=0.001)
annotation (Placement(transformation(extent={{-20,20},{0,40}})));
Modelica.Blocks.Sources.Pulse pulse(period=0.1222)
annotation (Placement(transformation(extent={{-40,-20},{-20,0}})));
equation
connect(firstOrder.u, ramp.y)
annotation (Line(points={{-22,30},{-31,30}}, color={0,0,127}));
annotation (uses(Modelica(version="3.2.2")), experiment(
Interval=0.001,
__Dymola_fixedstepsize=0.001,
__Dymola_Algorithm="Euler"));
end Unnamed;
Есть ли способ отключить обработку событий в Dymola и сохранить фиксированный временной шаг Эйлера? Или лучше, чтобы переменная времени корректно обновлялась. Спасибо