2016-08-15 5 views
2

Я пытаюсь выяснить шаги, требуемые Dymola для решения кода Modelica. Читая некоторые справочные документы и книгу, я понял, что Dymola:Dymola DAE solver

  1. Переводит код Modelica в гибридный DAE (сплющивание).
  2. Манипулирует DAE, чтобы преобразовать его в форму ODE (уменьшение индекса и другие методы).
  3. Использует алгоритм DASSL.

Мой вопрос: почему Dymola необходимо использовать DASSL для решения ODE? Должно быть недостаточно, чтобы использовать общий решатель ODE, такой как BDF или Runge-Kutta?

Заранее благодарю за внимание. Все лучшее,

Алессандро

+0

Короткий ответ: он более эффективен. Подробный ответ дается Франсуа Селье в его книге «Моделирование непрерывной системы», глава 8.4 (DASSL) –

+0

Привет, Лукас, спасибо за комментарий. Я действительно прочитал эту главу, но я сомневаюсь: как DASSL может решить ODE, так как это решатель DAE? Если вы скажете мне, что DASSL может решить также ODE, тогда все имеет смысл и является логикой. –

+1

ODE - это подмножество DAE; в основном ODE - der (x) = f (x), а DAE - g (der (x), x) = 0. Поэтому, устанавливая g (der (x), x) = der (x) -f (x), ODE преобразуется в DAE - и, таким образом, Dassl может его решить. –

ответ

1

Dymola поддерживает несколько алгоритмов интеграции, в том числе РК. Но DASSL - хороший дефолт. Также обратите внимание, что некоторые проблемы не могут быть сведены к форме ODE.

1

Уменьшение индексов исключает информацию ограничения, заменяя исходные уравнения на их производные.

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

Это можно улучшить, не уменьшившись до ODE индекса-0, а остановившись на DAE индекса 1, так что существует меньшая дифференциация исходных уравнений, а численное интегрирование имеет по существу сложность неявного метода РК соответственно неявный многошаговый метод.

Для системы заказа-1 необходимо было бы использовать решатель DAE, такой как DASSL.

+1

Это не относится к уменьшению индекса в Dymola, так как сохраняются уравнения состояния. Для теории см .: http://epubs.siam.org/doi/abs/10.1137/0914043 –