Регулярные уравнения выполняются в течение симуляции. (Initial=true)
атрибут позволяет вам задать дополнительные уравнения, которые выполняются во время инициализации модели только.
Одни только регулярные уравнения компонента не достаточны, чтобы инициализировать систему ДАУ. Считайте систему с n непрерывными дифференциальными переменными и m непрерывные алгебраические переменные. Для симуляции эта система имеет n+m
степени свободы и должны обеспечить n+m
уравнения. Проблема инициализации имеет до n дополнительные неизвестные, которые соответствуют производным переменным. Этим дополнительным неизвестным можно удовлетворить, когда вы задаете начальные цели для переменных в блоках. Начальные уравнения обеспечивают другой способ инициализировать систему.
В общем случае максимальное количество высокоприоритетных целей, которые можно задать, равно количеству дополнительных неизвестных в проблеме инициализации. Помимо неизвестных от дифференциальных переменных, проблема инициализации также имеет еще одно неизвестное для каждой переменной события. Эти дополнительные неизвестные определяют максимальное объединенное количество начальных уравнений и высокоприоритетных переменных целей. Если существует слишком много высокоприоритетных целей, им нельзя все соответствовать. Для получения дополнительной информации смотрите Инициализацию Переменной Блочного уровня.
Поскольку значение по умолчанию Initial
атрибутом для уравнений является false
, можно не использовать этот атрибут при объявлении регулярных уравнений:
equations (Initial = true) % initial equations [...] end equations (Initial = false) % regular equations [...] end equations % regular equations [...] end
Синтаксис начальных уравнений совпадает с синтаксисом регулярных уравнений, кроме:
der(x)
в начальных уравнениях обработан как неизвестное значение и решен для во время инициализации.
delay
и integ
операторы запрещены.
Когда вы включаете assert
построения в начальных уравнениях, их условия предиката проверяются только однажды после решения для начальных условий (прежде чем запуск симуляции, смотрите Расчет Начальных условий). Используйте эти утверждения, чтобы охранять против инициализации модели нефизическими значениями. Для получения дополнительной информации смотрите Ошибки времени выполнения Программирования и Предупреждения.
Случай общего использования для определения начальных уравнений должен инициализировать систему в устойчивом состоянии, например:
component C parameters a = {-5, '1/s'}; b = {-2, '1/s'}; end outputs x = 5; y = 10; end equations der(x) == a*x + b*y; der(y) == b*y; end equations(Initial=true) der(x) == 0; der(y) == 0; end end
Во время инициализации уравнения:
der(x) == 0; der(y) == 0; der(x) == a*x + b*y; der(y) == b*y;
Для остальной части симуляции уравнения:
der(x) == a*x + b*y; der(y) == b*y;
Примечание
Когда вы инициализируете модель от рабочей точки, особенно та, которая была сгенерирована от регистрируемых данных моделирования, рабочая точка, вероятно, будет содержать все необходимые высокоприоритетные цели, и применение начальных уравнений привело бы к чрезмерно определенной модели. Поэтому, если вы инициализируете модель от рабочей точки, решатель игнорирует все начальные уравнения, которые содержат переменные, существующие в данных о рабочей точке. Начальные уравнения для других переменных не затронуты: например, если вы добавите блок в модель после извлечения данных о рабочей точке, начальные уравнения для этого блока будут выполняться во время инициализации. Для получения дополнительной информации смотрите Используя Данные о Рабочей точке для Инициализации Модели.