Конструкции языка физического моделирования Engee
|
Страница в процессе разработки. |
В языке физического моделирования Engee компонент описывается набором конструкций — блоков вида @… begin … end. Конструкции задают параметры, переменные, уравнения, порты, ветви, аннотации и прочую структуру будущего компонента. Ниже — обзор основных конструкций языка и ключевых методов, используемых внутри них.
Основные конструкции
| Конструкция | Назначение | Пример |
|---|---|---|
|
Параметры компонента, задаваемые перед запуском. |
|
|
Переменные, вычисляемые во время моделирования. |
|
|
Уравнения, описывающие поведение. |
|
|
Порты подключения к физическим доменам. |
|
|
Связывает поток(и) нескольких портов с общей переменной. |
|
|
Подкомпоненты (иерархия внутри модели). |
|
|
Несимвольные параметры. Обычно используются для индексов и размерностей массивов. |
|
|
Промежуточные переменные, упрощающие выражения в уравнениях. |
|
|
Входные переменные. |
|
|
Выходные переменные. |
|
|
Изменение метаданных параметров, переменных, портов и подкомпонентов. |
|
|
Внешний вид иконки блока. |
|
|
Наследование от существующего компонента. |
|
Метаданные
С помощью метаданных можно задать единицы измерения, группы, приоритеты, видимость в интерфейсе и др. Подробнее см. в статье Метаданные языка физического моделирования Engee.
Специальные функции для конструкции с уравнениями
-
assert(condition [, message [, action]])— проверки.@equations begin assert(R >= 0.0) end -
connect(a, b, …)— соединение портов и подкомпонентов.connect(R1.p, R2.n) -
domain_connect(a, b)— синхронизация параметров среды между портами внутри одного компонента (переменные портов не соединяются).@equations begin domain_connect(n, p) end
Правила работы конструкций
-
Все конструкции оформляются в виде
@имя begin … end. -
Порядок следования конструкций внутри физического компонента (в коде после
@engeemodel) не имеет значения — язык декларативный.Например, переменную можно использовать в уравнении еще до ее явного объявления:
@engeemodel Example begin @equations begin y ~ x^2 + 1 # используем x, хотя он объявлен ниже end @variables begin x = 0 y = 0 end end -
В одном физическом компоненте может быть несколько конструкций одного типа (например, несколько блоков
@equations). -
Конструкции можно снабжать метаданными (например,
group = "Parameters"), которые применяются ко всем объектам, объявленным в этой конструкции. Например:@parameters [group = "Electrical Parameters"] begin R = 1.0, [unit = "Ohm", description = "Resistance"] v_nom = 230.0, [unit = "V", description = "Nominal voltage"] endВ этом примере оба параметра будут отображаться в группе
"Electrical Parameters". -
Видимость параметров, переменных, портов и подкомпонентов можно менять в зависимости от значений параметров внутри условий с помощью блока
@annotations. Например:@parameters begin a::Bool = true b = 1, [gui = None] end if a @annotations begin b, [gui = Modify] end endВ этом примере поведение метаданных зависит от значения параметра
a:-
Если
a = false, то параметрbскрывается в интерфейсе (gui = None), -
Если
a = true, то параметрbотображается (gui = Modify).
-