Документация Engee

Переменные языка физического моделирования Engee

Страница в процессе разработки.

В языке физического моделирования Engee переменные описывают состояния и промежуточные величины, которые участвуют в уравнениях физического компонента. В отличие от обычной Julia, переменные Engee дополняются метаданными (единицы измерения, приоритеты, видимость в интерфейсе и т.д.) и типом/формой данных (скаляр, вектор, матрица).

Непрерывные переменные

Непрерывные переменные — это основные вычисляемые величины модели. Они объявляются с помощью конструкции @variables и участвуют в системе уравнений. Например:

@variables begin
    x = 0.0
    y = 1.5
end

Особенности @variables:

  • Каждой переменной требуется задать начальное значение (например, x = 0.0).

  • Эти переменные отображаются в интерфейсе и могут участвовать в настройке начальных условий и записи сигналов signal logging 1.

Промежуточные переменные

Промежуточные переменные объявляются с помощью конструкции @intermediates и отличаются от обычных тем, что для них сразу задается уравнение вычисления. Например:

@variables begin
    x = 0.0
    y = 1.5
end

@intermediates begin
    z = x^2 + y
end

Особенности @intermediates:

  • Для таких переменных не нужно писать отдельное уравнение — выражение указывается сразу после =.

  • Они не отображаются в окне настроек компонента, но при этом их можно записывать signal logging 1.

  • Такие переменные помогают упростить символьный анализ и ускорить работу решателя.

  • Применяются для удобства, когда нужно выразить промежуточный результат вычислений, но не хранить его как отдельное состояние.

Если переменной нужно задавать начальное значение и приоритет, то используйте @variables. Для вычислений без начального состояния предпочтительнее использовать @intermediates.

Дискретные событийные переменные

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

В языке физического моделирования Engee такие переменные объявляются как обычные @variables, но с метаданными event = true. Это дает системе понять, что переменная должна обновляться только при срабатывании событий:

@variables begin
    state_real = 5.0, [event=true]
    state::Bool = false, [event = true]
end

Тип дискретных переменных по умолчанию — Real, но допускается явная типизация как Int или Bool.

Промежуточные (@intermediates) и обычные непрерывные переменные (@variables без event=true) пересчитываются постоянно, а событийные — только в момент срабатывания события.

Подробнее об использовании этих переменных написано в статье События языка физического моделирования Engee.