Выбор оптимального решателя для физической симуляции

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

Симуляция с переменным временным шагом

Когда вы впервые создаете модель, Simulink по умолчанию® решатель VariableStepAuto. Автоматический решатель выбирает подходящий решатель, как описано в разделе «Выбор решателя с использованием автоматического решателя». Для Simscape™ моделей выбор автоматического решателя зависит от типа модели:

  • Для новых моделей, созданных в R2021a и за его пределами, если ваша модель содержит блоки Simscape и дифференциальные алгебраические уравнения (ДАУ), автоматический решатель выбирает daessc. Для таких моделей, созданных до R2021a, auto решателя использует ode23t. Для получения информации о том, как обновить существующие модели, чтобы использовать daessc, см. «Обновление моделей для использования решателя daessc».

  • Если система может быть сведена к обыкновенному дифференциальному уравнению (ОДУ), и модель жесткая, автоматический решатель выбирает ode15s.

  • Если система может быть сведена к обыкновенному дифференциальному уравнению (ODE), и модель является нежесткой, автоматический решатель выбирает явный решатель, ode45.

Вместо того, чтобы полагаться на выбор автоматического решателя, можно явным образом выбрать решатель для модели. Чтобы выбрать решатель, выполните процедуру, подобную процедуре в Изменении начальных настроек.

The daessc решатель Simulink с переменным шагом разработан специально для физического моделирования. Для получения дополнительной информации см. Раздел «Использование решателя daessc».

Другие решатели, рекомендуемые для типичной модели Simscape ode15s и ode23t. Из этих двух решателей:

  • The ode15s решатель более стабилен, но имеет тенденцию к сглаживанию колебаний.

  • The ode23t решатель лучше захватывает колебания, но менее стабильен.

С помощью моделей Simscape эти решатели решают дифференциальную и алгебраическую части физической модели одновременно, что делает симуляцию более эффективной.

Симуляция с фиксированными Временным шагом - локальные и глобальные решатели с фиксированным шагом

В модели Simscape рекомендуется, чтобы вы реализовали решатели с фиксированным шагом, продолжая использовать глобальный решатель с переменным шагом и переключая физические сети в вашей модели на локальные решатели с фиксированным шагом через каждый блок Solver Configuration сети. Варианты локального решателя:

  • Задний Эйлер имеет тенденцию к влажности колебаний, но является более стабильным, особенно если вы увеличиваете временной шаг.

  • Решатель Метод трапеций лучше захватывает колебания, но менее стабильен.

  • Решатель Разбиение позволяет вам увеличить скорость симуляции в реальном времени путем разбиения всей системы уравнений, соответствующих сети Simscape, на каскад меньших систем уравнений. Не все сети могут быть секционированы. Однако, когда система может быть разбита, этот решатель обеспечивает значительное увеличение скорости симуляции в реальном времени. Для получения дополнительной информации см. «Понимание работы решателя секционирования» и «Увеличение скорости симуляции с помощью решателя секционирования».

Независимо от того, какой локальный решатель вы выбираете, всегда применяется метод Backward Euler:

  • Прямо в начале симуляции.

  • Сразу после мгновенного изменения, когда соответствующий блок претерпевает внутреннее дискретное изменение. Такие изменения включают блокировку и разблокировку муфт, открытие и закрытие приводов клапанов и переключение блока PS Asynchronous Sample & Hold.

Переключение на дискретные состояния и решатели

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

  • Если другие физические сети в вашей модели не используют локальные решатели, или если не-Simscape части вашей модели имеют непрерывные состояния, то вы должны использовать непрерывный глобальный решатель.

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

Примечание

Входная фильтрация может вводить непрерывные состояния. Если вы используете комбинацию дискретных и локальных решателей и получаете сообщение об ошибке о модели, содержащей непрерывные состояния, проверяйте блоки Simulink-PS Converter в модели и отключайте входную фильтрацию, если это необходимо. Для получения дополнительной информации смотрите Фильтрация входных сигналов и Предоставление производных по времени.

Для максимальной точности с симуляцией с фиксированным шагом

Если точность решения является вашим единственным переопределяющим требованием, используйте глобальный решатель Simulink с фиксированным шагом ode14x, без локальных решателей. Этот неявный решатель является лучшим глобальным выбором с фиксированным шагом для физических систем. Хотя он более точен, чем локальные решатели Simscape для большинства моделей, ode14x может быть более интенсивным и медленным в вычислительном отношении, когда вы используете его самостоятельно, чем когда вы используете его в комбинации с локальными решателями.

В этом решателе необходимо ограничить количество глобальных неявных итераций на временной шаг. Управляйте этими итерациями с помощью параметра Number Newton’s iterations на панели Solver диалогового окна Параметров конфигурации.

Симуляция с фиксированной стоимостью

Чтобы найти решение, многим моделям Simscape необходимо повторить итерацию несколько раз в течение одного временного шага. Если вы хотите исправить стоимость симуляции за временной шаг, необходимо ограничить количество этих итераций, независимо от того, используете ли вы локальный решатель или глобальный решатель, такой как ode14x. Для получения дополнительной информации смотрите Симуляцию неограниченных, ограниченных и фиксированных затрат и Симуляции фиксированных затрат для жизнеспособности в реальном времени.

Чтобы ограничить итерации, откройте блок Solver Configuration каждой физической сети. Выберите Use fixed-cost runtime consistency iterations и установите пределы для количества нелинейных и модовых итераций на временной шаг.

Совет

Симуляция с фиксированной стоимостью с помощью решателей с переменным шагом не возможна в большинстве симуляций. Попробуйте симуляцию с фиксированной стоимостью только с помощью решателя с фиксированным шагом и избегайте использования итераций с фиксированной стоимостью с решателями с переменной степенью.

Поиск и устранение проблем с эффективностью решателя

Рассмотрим базовый компромисс скорости и точности и устойчивости. Больший временной шаг или допуск приводит к более быстрой симуляции, но также и к менее точной и менее стабильной симуляции. Если система претерпевает внезапные или быстрые изменения, больший допуск или размер шага могут вызвать существенные ошибки. Рассмотрите ужесточение допуска или размера шага, если ваша симуляция:

  • Недостаточно точен или выглядит нефизично.

  • Показывает разрывы в значениях состояний.

  • Достигает минимального размера шага, разрешенного без сходимости, обычно это знак того, что одно или несколько событий или быстрые изменения происходят в течение временного шага.

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

Для локальных решателей

Модели с трением или жёсткими упорами особенно трудны для локальных решателей и могут не работать или могут потребовать очень небольшого временного шага.

С помощью решателя Метод трапеций, колебательный «звон» может стать более проблемой, когда временной шаг увеличивается. Для большего временного шага в локальном решателе рассмотрите переключение на Обратный Эйлер.

Для систем ОДУ

В некоторых случаях ваша модель сводится к системе ODE, без зависимых алгебраических переменных. (См. «Как модели Simscape представляют физические системы».) Если это так, можно использовать любой глобальный решатель Simulink, без особых факторов физического моделирования. Явный решатель часто является лучшим выбором в таких ситуациях.

  • Путем тщательного анализа можно иногда определить, представлена ли ваша модель системой ODE.

  • Если вы создаете модель Simscape из математического представления с помощью языка Simscape, можно непосредственно определить, является ли получившаяся система ОДУ.

Для больших систем

В зависимости от количества состояний системы, можно моделировать более эффективно, если переключить значение настройки Linear Algebra в блоке Solver Configuration.

Для небольших систем, Full обеспечивает более быстрые результаты. Для больших систем, Sparse обычно быстрее.

Пример нескольких локальных решателей со смешанной жесткой-нежесткой системой

В этом примере модель Simscape содержит три физические сети.

  • Две сети (числа 1 и 3) используют локальные решатели, что делает эти две сети кажутся глобальному решателю, как если бы они имели дискретные состояния. Внутренне эти сети все еще имеют непрерывные состояния. Эти сети умеренно и сильно жесткие, соответственно.

    Одна из этих сетей (номер 1) использует локальный решатель Back Euler (BE). Другой (число 3) использует локальный решатель Метод трапеций (TR).

  • Остальная сеть (номер 2) использует глобальный решатель Simulink. Его состояния кажутся модели непрерывными. Эта сеть не жесткая и является чистой ОДУ. Используйте явный глобальный решатель.

  • Поскольку по крайней мере одна сеть представляется модели непрерывной, вы должны использовать непрерывный решатель. Однако, если вы удаляете сеть 2, и если модель не содержит непрерывных состояний Simulink, Simulink автоматически переключается на дискретный глобальный решатель.