Локальные решатели для физических сетей
Страница в процессе разработки. |
В Engee для расчета поведения физических сетей используется механизм локальных решателей. В модели системы выделяются физические сети, соединенные направленными компонентами типа усилительных звеньев, интеграторов и т.д. Каждая физическая сеть рассчитывается своим независимым решателем, а на ее входах и выходах устанавливаются интерполяторы. Направленная часть модели управляется глобальным решателем, а физические сети воспринимаются им как обычные направленные компоненты без внутреннего состояния.
Локальные решатели позволяют значительно повысить скорость расчета моделей, не сильно жертвуя при этом качеством решения. Физические модели часто содержат компоненты разной физической природы, и разные физические явления протекают в них с разной скоростью. Используя локальные решатели, можно, например, считать электрическую часть модели с мелким шагом, а механическую — крупным.
С другой стороны, электрические цепи часто описываются жесткими системами дифференциальных уравнений, а механические модели — нежесткими. Это позволяет использовать для электрических цепей сложные методы, а для механических — более простые. Также большие жесткие модели можно разбивать на несколько частей, каждая из которых будет считаться одним и тем же неявным или полуявным решателем.
Временная сложность декомпозиции матрицы Якоби размером NxN равняется . Пусть для простоты это ровно операций. При разбиении большой модели на две части суммарное количество операций для ее расчета составляет
где — накладные расходы на интерполяторы и синхронизацию решателей. Эти расходы обычно составляют пренебрежимо малую часть от общего времени расчета для хотя бы немного сложной модели. Разбиение исходной модели на две части, рассчитываемых локальными решателями, в лучшем случае дает четырехкратное ускорение расчета. На практике ускорение оказывается меньше из-за различных факторов, но локальные решатели зачастую позволяют значительно ускорить расчет.
Engee поддерживает два типа синхронизации локальных и глобальных решателей: дискретную и непрерывную.
Первый тип особенно актуален для расчетов в реальном времени, например, на комплексе полунатурного моделирования РИТМ. Физическая сеть представляется в виде дискретного атомарного компонента без состояния, для которого указывается интервал дискретизации. Доступны два численных метода: неявный метод Эйлера (ImplicitEuler
) и метод трапеций (Trapezoid
). Для их работы не требуется интерполировать входные сигналы, а выходные по определению являются дискретными.
Помимо численного метода выбирается его версия — быстрая (Fast
) или надежная (Robust
). При возникновении ошибки сходимости можно переключиться на надежную версию алгоритма (Robust
) или уменьшить шаг дискретизации. Иногда полезно уменьшить шаг дискретизации до некратного исходному значения, например, не с 0.1
до 0.01
, а до 0.03
, чтобы обойти проблемное место.
Используемые в режиме дискретной синхронизации упрощения могут привести к тому, что модель будет считаться быстрее, но точность расчета может быть недостаточной. Тогда можно уменьшить интервал дискретизации в соответствующем окне настроек решателя или переключиться на непрерывную синхронизацию.
При включении непрерывной синхронизации глобальный решатель начинает воспринимать физическую сеть как непрерывный компонент без внутреннего состояния. На его входах используется подходящая для выбранного решателя интерполяция, а его выход представляет собой непрерывную функцию. Необходимо задать интервал синхронизации, с которым локальный и глобальный решатели будут обмениваться информацией. Локальный решатель может выполнять столько промежуточных шагов до очередной точки синхронизации, сколько ему потребуется. Такой подход повышает точность расчета, но требует больших вычислительных затрат.
Встает вопрос разрыва алгебраических петель — соединений физических сетей через направленные компоненты без внутренних состояний. В таком случае возникает ошибка:
Для ее устранения можно использовать Unit Delay с малым интервалом дискретизации:
или апериодическое звено с подходящей постоянной времени:
Список локальных решателей Engee ограничен наиболее полезными для расчета физических моделей и является подмножеством глобальных решателей. Полезно сглаживать входящие в физическую сеть сигналы с помощью непрерывных фильтров или специальных функций типа гиперболического тангенса для аппроксимации разрывных функций.
При выборе непрерывной синхронизации доступны три типа решателей: Fixed-step
, Variable-step
и Inherit global
. Первые два — для фиксированного и переменного шага, а третий наследует настройки глобального решателя. Это не значит, что модель будет решаться единым глобальным решателем. Локальный решатель получит те же настройки, что и глобальный. Последний режим редко используется на практике, поэтому рекомендуется начинать с настроек по умолчанию: непрерывная синхронизация, решатель с переменным шагом, Rodas4
.