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

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

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

Рассмотрим простую модель масса-пружина-демпфер с большого коэффициента упругости.

Модель использует настройки параметров блоков по умолчанию, за исключением скорости пружины:

  • Скорость пружины, k = 1e6 Н/м

  • Коэффициент демпфирования, b = 100 Н/( м/с)

  • Масса, m = 1 кг

Начальная переменная массовой скорости, v, имеет High приоритет и начальное целевое значение 0,1 м/с. Модель использует номинальные значения по умолчанию с m как модуль измерения длины.

Когда вы моделируете эту модель, переменная Deformation пружины (положение) x маленькая, в области значений 10 ^ -5 м.

Откройте Solver Profiler, щелкнув гиперссылку в правом нижнем углу окна модели.

Решатель полностью игнорирует переменную положения и просто смотрит на переменную скорости. Числовая величина положения ниже допуска для этой переменной.

State Viewer, доступный с панели инструментов Solver Profiler, показывает величину каждой переменной, видимую решателями.

Ситуация ясна, если мы рассмотрим уравнения модели:

mdvdt+bv+kx=0dxdt=v

Когда k очень большая, по сравнению с m и b, тогда x маленькая, так что произведение k * x имеет разумный размер, по сравнению с другими терминами в уравнении. Чтобы исправить ситуацию, мы должны масштабировать x. Другими словами, нам нужно выбрать номинальное значение для x, которое является маленьким, так что масштабированная переменная, x s, станет более разумным размером:

xs=xc,

где c большая. Для примера, если номинальное значение составляет 1 мкм, а исходное x находится в m, то c равно 1e6. Тогда уравнения станут:

mdvdt+bv+(k/c)xs=0dxsdt=cv

и термины имеют величины аналогичной шкалы.

Давайте применим этот принцип масштабирования к переменным модели. Во-первых, используйте Property Inspector, чтобы изменить номинальное значение переменной пружины Deformation x на 100 um (1e-4 м).

Точно так же измените номинальное значение Velocity массы, переменное, на 10 см/с (0,1 м/с).

Это приводит шкалу величины обеих переменных, наблюдаемых решателем, к приблизительно 1.

Перезапустите симуляцию.

Теперь существует только две исключения решателя, в начале симуляции.

Обратите внимание, что эффективная абсолютная погрешность теперь плотнее для массовой скорости. Эффективная абсолютная погрешность для моделей Simscape™ имеет модуль измерения и вычисляется как (номинальное значение * глобальное AbsTol без модулей). В первом прогоне симуляции эффективная абсолютная погрешность составляла 1e-3 м/с, а теперь он равен 1e-4 м/с, потому что номинальное значение изменило величину и глобальное AbsTol все еще 1e-3. Однако скорость симуляции схожа даже с увеличенной AbsTol о массовой скорости и увеличенных временных шагах.

Значения, как видит решатель, одинаковы по величине как для переменных скорости, так и для переменных положения.

Теперь измените глобальное AbsTol на 1e-2, чтобы более точно соответствовать точности переменной скорости во время первого запуска симуляции.

Перезапустите симуляцию.

Временные интервалы аналогичны, и количество исключений составляет 3, также в начале симуляции.

См. также

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте