exponenta event banner

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

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

Примечание

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

Связанные темы