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

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

Примечание

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

Похожие темы