2016-05-20 10 views
5

Я новичок в теме «Моделирование физических систем». Я прочитал некоторую базовую литературу и сделал несколько уроков в Modelica и Simulink/Simscape. Я хотел бы спросить вас, если я понимаю следующее содержимое правильно:Согласованная терминология: Моделирование, DAE, ODE

  • Символическая манипуляция является процесс преобразования дифференциально-алгебраической системы уравнений (физическая модель: DAE) в систему дифференциальных уравнений (ОДУ), что могут быть решены стандартными решателями (Runge, Kutta, BDF, ...)
  • Есть также решатель, который может решить DAE напрямую. Но Modelica (openModelica, Dymola) и Simscape передают систему в ODE (почему эти методы лучше по сравнению с прямыми решателями DAE?)
  • Результатом преобразования (= ODE) является «плоский код модели».

Благодарим вас за ответы.

ответ

7

Символическая обработка Modelica включает в себя:

  • удалить объектно-ориентированную структуру и получить гибрид DAE (плоский Modelica)
  • выполнить согласование, снижение индекса, казуализация, чтобы получить оду
  • выполнить оптимизацию (разрывание , устранение общего подвыражения, и т.д.)
  • генерировать код для конкретного решателя

OpenModelica также может решить систему в режиме DAE, не преобразовывая ее в ODE, и я думаю, что другие инструменты Modelica также могут это сделать.

«Плоский код Modelica» - это код Modelica, в котором удаляется ориентация объекта, связь уравнений расширяется до нормальных уравнений. В результате получается гибридный DAE.

См Modelica Spec 3.3 для получения дополнительной информации о все это (например, Приложение C): https://modelica.org/documents/ModelicaSpec33Revision1.pdf

1

Так что я думаю, что ваше понимание терминологии очень хорошо. Из-за декларативного способа (в отличие от императива) программирования в modelica мы получаем сразу очень большое число алгебраических уравнений. Решение этих (частично) символически имеет, прежде всего, следующие существенные преимущества:

  • Скорость. Без исключения алгебраических циклов modelica практически не использовалась бы для какой-либо реальной проблемы, и даже тогда только в простых случаях не оставалось бы алгебраических уравнений. Это будет слишком медленно и заставит вас самостоятельно делать преобразования самостоятельно в modelica (как в императивных языках, например, в C/C++ или Simulink). Даже сегодня modelica все еще может быть медленнее, чем преобразованные вручную и оптимизированные решения. Кроме того, приложения modelica часто нуждаются в симуляциях в режиме реального времени.

  • Правильность. Символические преобразования основаны на доказательствах, а приложения modelica часто находятся в области критически важных или киберфизических систем безопасности.