Начальные уравнения

Регулярные уравнения выполняются в течение симуляции. (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;

Примечание

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

Похожие темы