Жёсткие системы (stiff systems) в PRADIS

При моделировании реальных технических систем часто встречаются задачи, в которых одновременно присутствуют очень быстрые и очень медленные процессы. Такие модели называют жёсткими системами (stiff systems). Понимание природы жёсткости позволяет правильно выбирать метод интегрирования и избежать чрезмерного времени расчёта или потери устойчивости решения.


Что такое жёсткая система

Жёсткая система — это система обыкновенных дифференциальных уравнений (ОДУ), для которой явные численные методы интегрирования становятся крайне неэффективными или вовсе непригодными из-за сильных ограничений на величину шага интегрирования.

Иными словами, в модели одновременно существуют:

  • быстрые процессы, изменяющиеся за очень короткое время;
  • медленные процессы, определяющие основную динамику системы.

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


Где встречаются жёсткие системы

Жёсткие системы широко распространены в инженерном моделировании и возникают практически во всех физических доменах, представленных в PRADIS. Наиболее часто они встречаются при расчёте механических, гидравлических, пневматических, электрических и электромеханических систем, а также моделей теплопередачи, трансмиссий, зубчатых передач и динамики транспортных средств.

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


Почему возникает жёсткость

Рассмотрим систему

\frac{dy}{dt}=f(t,y)

Поведение системы определяется собственными числами матрицы Якоби

\frac{\partial f}{\partial y}

Одной из характеристик жёсткости является жёсткое отношение

S=\frac{\max |\operatorname{Re}(\lambda_i)|} {\min |\operatorname{Re}(\lambda_i)|}

где

  • \lambda_i ​ — собственные числа матрицы Якоби;
  • \operatorname{Re}(\lambda_i) — действительная часть собственного числа.

Если
S \gg 1

например

10^3,\;10^6,\;10^{12}

то систему обычно относят к жёстким.

Наиболее характерная ситуация — наличие нескольких собственных чисел с большими отрицательными действительными частями, соответствующих быстро затухающим процессам.


Почему возникают проблемы

Большинство простых численных методов имеют ограниченную область устойчивости.

Например, для явного метода Эйлера выполняется условие

|1+\lambda h|\le1

где

  • h — шаг интегрирования;
  • \lambda — собственное число системы.

Для устойчивости необходимо выбирать

h\lesssim\frac{2}{|\lambda_{\max}|}

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

При этом интересующая пользователя медленная динамика развивается за время порядка

\frac1{|\lambda_{\min}|}

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

\frac{|\lambda_{\max}|} {|\lambda_{\min}|}

что может составлять миллионы и даже миллиарды шагов интегрирования.


Пример жёсткой системы в PRADIS

Рассмотрим модель электромеханического привода, построенную с использованием библиотек Электроприводы, Роторная механика 1D и Сигналы.

В такой модели одновременно рассчитываются:

  • переходные процессы в электрической цепи двигателя;
  • вращение ротора;
  • работа регулятора скорости или положения.

Электрические процессы (изменение токов и напряжений) происходят за миллисекунды, тогда как изменение скорости вращения ротора и движение механизма могут занимать десятые доли секунды или даже секунды.

В результате в одной системе одновременно присутствуют быстрые и медленные процессы.

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

Неявные методы интегрирования позволяют использовать шаг, определяемый в основном требуемой точностью расчёта, а не ограничениями устойчивости, благодаря чему моделирование выполняется значительно быстрее.


Другие примеры жёстких моделей в PRADIS

Жёсткость также часто возникает и в других моделях, создаваемых средствами PRADIS:

  • Пневматика + Линейная механика 1D — пневмоцилиндр с распределительным клапаном, где давление в полостях изменяется значительно быстрее, чем перемещается шток.
  • Гидравлика + Механика 3D — гидравлический манипулятор, в котором волновые процессы в жидкости происходят значительно быстрее движения звеньев механизма.
  • Динамика автомобиля + Трансмиссия — модель автомобиля с упругими элементами подвески, трансмиссией и контактом шин с дорогой, где одновременно рассчитываются быстрые колебания подвески и более медленное движение автомобиля.
  • Расчёт зубчатых передач + Роторная механика 1D — модели редукторов, в которых контакт зубьев вызывает быстро изменяющиеся силы, а изменение угловой скорости валов происходит значительно медленнее.
  • Теплопередача + Электроприводы — электродвигатель с тепловой моделью, где электрические переходные процессы завершаются за миллисекунды, тогда как нагрев конструкции продолжается десятки минут.

Все эти задачи объединяет одна особенность: в модели одновременно присутствуют процессы, протекающие на разных временных масштабах. Именно поэтому подобные модели относятся к жёстким и наиболее эффективно рассчитываются с использованием неявных методов интегрирования, применяемых в решателях PRADIS.


Как распознать жёсткую систему

На практике жёсткость обычно проявляется следующими признаками.

1. Очень маленький шаг интегрирования

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


2. Потеря устойчивости

При попытке увеличить шаг расчёт становится неустойчивым:

  • появляются быстро растущие колебания;
  • значения начинают стремиться к бесконечности;
  • расчёт завершается ошибкой.

3. Большое различие собственных чисел

Если собственные числа матрицы Якоби отличаются на несколько порядков, система, как правило, является жёсткой.


4. Жёсткость проявляется не всегда

Во многих моделях жёсткость возникает только на отдельных участках расчёта:

  • в момент включения;
  • при переключениях;
  • во время контакта тел;
  • при открытии или закрытии клапанов;
  • при переходных процессах.

Решение проблемы

Для жёстких систем используют неявные методы интегрирования.

Наиболее распространённые:

  • неявный метод Эйлера;
  • метод трапеций;
  • методы Розенброка;
  • методы BDF.

Например, неявный метод Эйлера имеет вид

y_{n+1}=y_n+h\,f(t_{n+1},y_{n+1})

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

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

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


Решение жёстких задач в PRADIS

Решатели PRADIS ориентированы на моделирование сложных многодоменных технических систем, в которых жёсткость возникает достаточно часто. Для таких моделей используются неявные методы интегрирования с вычислением матрицы Якоби и итерационным решением нелинейной системы методом Ньютона.

Благодаря этому становится возможным:

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

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


Практические рекомендации

При работе с жёсткими моделями рекомендуется:

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