События исключения решателя

События, превышающие допуск

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

Когда вы запускаете Solver Profiler на этой модели, вы можете увидеть события превышения допуска на вкладке Solver Exception.

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

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

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

Статистика, превышающая допуск, также может помочь вам идентифицировать ошибки моделирования. Если вы не ожидаете, что подсвеченные состояния изменятся так же быстро, можно изучить модель на наличие ошибок. В этом примере ошибка моделирования может заключаться в том, что жесткость более жесткой пружины задана в N/m вместо N/mm. Эта ошибка делает пружину в 1000 раз жестче, чем ожидалось.

Отказы итерации Ньютона

Отказы итерации Newton характерны для неявных решателей, таких как ode15s и ode23tи они являются результатом итераций Ньютона, не сходящихся после нескольких испытаний. Подобно событиям, превышающим допуск, эти отказы, как правило, происходят, когда система изменяется быстро.

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

Когда вы запускаете Solver Profiler на этой модели, вы можете увидеть отказы итерации Ньютона на вкладке Solver Exception.

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

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

Этот тип отказа становится проблематичным, когда он происходит в больших количествах в течение короткого периода, особенно в Simscape™ моделях. Плотные отказы указывают на то, что ваша модель не является устойчивой численно. Один из способов улучшить числовую робастность - ужесточить допуск решателя. Другой способ - изменить модель, чтобы избежать быстрых изменений.

Бесконечное состояние и бесконечные производные исключения

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

Этот пример показывает набор из двух блоков Integrator Limited, которые имеют начальные условия чуть меньше realmax. Когда они интегрируют Constant вход 1e305решатель быстро достигает исключения бесконечного состояния.

Когда вы запускаете Solver Profiler для этой модели, можно увидеть, что блоки InfiniteState5 и InfiniteState7 имеют 188 и 152 бесконечные исключения состояний на вкладке Solver Exceptions.

Дифференциальное алгебраическое уравнение Отказов

Большинство моделей Simscape используют дифференциальные алгебраические уравнения (ДАУ), в отличие от Simulink® модели, которые используют обыкновенные дифференциальные уравнения.

Использование ДАУ добавляет сложности моделям Simscape. Решатели, такие как ode15s и ode23t может обрабатывать многие типы ДАУ. Однако, когда алгебраические ограничения между компонентами Simscape комплексны и быстро изменяются, процесс итерации Ньютона не может разрешиться к этим ограничениям.

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

Когда вы моделируете эту модель, Simulink отображает несколько предупреждений.

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

Когда вы запускаете Solver Profiler на этой модели, вы можете увидеть отказы ДАУ на вкладке Solver Exception.

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

В качестве альтернативы этого исключения можно избежать, удалив алгебраическое ограничение. В этом примере Check Valve и 4-Way Directional Valve соединяются непосредственно. Когда их соотношение давление-поток изменяется быстро, решатель не может захватить изменения. Вставка Hydraulic Chamber между этими двумя компонентами делает их совместимыми. Дополнительные сведения о сухих узлах см. в документации Simscape.