Сколько стоит наибольшая возможность решения модели нелинейной системы в Димоле? - PullRequest
2 голосов
/ 24 апреля 2020

В Dymola я часто сталкиваюсь с ошибкой инициализации нелинейной системы или, возможно, с жесткой системой, которую трудно решить в большой системе с текучей средой, но для простой системы такой проблемы не возникнет. Мои вопросы:

  1. Так что мне интересно, насколько велика возможность решения нелинейной модели системы? Например, сколько нелинейных уравнений я мог бы включить в свою модель максимум?
  2. Существует ли какая-либо настройка в Dymola, которая позволяет увеличить возможности решения нелинейной системы?
  3. Как можно уменьшить число нелинейных уравнений в модели без ущерба для точности модели?

Ответы [ 2 ]

7 голосов
/ 29 апреля 2020

Это довольно сложные вопросы, на которые нужно ответить в общем и целом. Тем не менее, я постараюсь поделиться своим опытом с Dymola и нелинейными системами.

  1. Не существует жесткого числа, которое ограничивало бы размер. Это зависит больше от того, насколько сильно нелинейные уравнения, чем от их числа. Я смоделировал модели с нелинейными системами размера 150, которые довольно стабильны, в то время как другие размером 10 могут тормозить ...

  2. Есть несколько перспектив для этого

    • Я работал над некоторыми моделями, в которых компилятору C не хватало памяти во время компиляции. Если у вас есть проблема такого рода, может помочь принудительная компиляция 64-битной системы, установив Advanced.CompileWith64=2. Тогда вам больше не нужно исчерпывать память. Это относится только к размеру.
    • Производительность для нелинейных систем можно улучшить, активировав режим DAE, установив Advanced.Define.DAEsolver=true. Это работает не со всеми решателями.
    • В дополнение к вышесказанному, это может помочь установить Advanced.MoveEquationsToDynamics=true, для которого в руководстве говорится: «Это заставляет интегратор решать нелинейные уравнения на каждом шаге интегратора и тем самым также обновляет начальные догадки чаще. "
    • Как уже упоминал Эрик, homotopy() -оператор может быть очень важен, поскольку он помогает конвергенту решения в случае трудной инициализации.
  3. Это очень специфично c для модели. Разделение может помочь, например, путем разделения системы на более мелкие системы путем добавления элементов / состояний накопления энергии. Это может быть сделано на основе физики системы и является предпочтительным решением, если это возможно. В качестве (более искусственного) альтернативного фильтра / задержки могут быть добавлены. Обычно это отрицательно влияет на точность.

5 голосов
/ 30 апреля 2020

Я очень согласен с советом Маркуса, но также хотел бы напомнить вам о гомотопическом операторе Моделики. Правильно выбранная упрощенная модель может значительно помочь Димоле инициализировать модель с большой и сложной нелинейной системой.

В общем, хорошие исходные догадки очень важны при решении нелинейных систем. Использование гомотопии - просто неявный способ дать эти хорошие догадки.

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