Время решения Эйлера около событий в Димоле - PullRequest
1 голос
/ 17 января 2020

События, близкие к состоянию, решатель предпримет сокращенный временной шаг, чтобы выровнять шаг по событию. Это может быть полезно для сохранения точности вблизи событий; однако переменная времени, по-видимому, не обновляется в соответствии с размером шага, что приводит к неправильному результату из Dymola:

Incorrect result from Euler solver in 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 и сохранить фиксированный временной шаг Эйлера? Или лучше, чтобы переменная времени корректно обновлялась. Спасибо

1 Ответ

1 голос
/ 17 января 2020

Есть две части:

  • Отключение этой специальной обработки для событий (не только временных событий). Идеального способа для этого не существует, но вы можете установить флаг компилятора (в Dymola 2020x он находится в Simulation> Настройка> Компилятор> Пользовательские параметры> Компилятор) и установить /DFindEvent_=0 для Visual Studio - я считаю, что это должно быть -DFindEvent_=0 для g cc.
  • К сожалению, кажется невозможным настроить значения времени для оси времени так, как вы хотите.

Однако во многих случаях это приведет к менее точной обработке событий, что вызовет проблемы, например, сцепления, не полностью блокируемые в механических системах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...