Установите связь между переменными Through и узлами компонента
branches a : node1.a -> node2.a; end
branches
начинает раздел ветвей, который завершается end
ключевое слово. Этот раздел содержит одни или несколько операторов ветви, которые устанавливают связь между переменными Through компонента и областью.
Например, объявление области содержит переменную Through a
:
variables(Balancing=true) a = { 0, 'N' } end
и компонент объявляет два узла, node1
и node2
, связанная с этой областью, и переменная a
:
variables a = { 0, 'N' }; end
Имя переменной компонента не должно совпадать с именем переменной области, но модули должны быть соразмерными (в этом примере 'N'
, 'kg*m/s^2'
, 'lbf'
, и так далее).
Чтобы установить соединение между переменной компонента a
и переменную область Through (balancing) a
, написать оператор ветви, например:
branches a : node1.a -> node2.a; end
node1.a
и node2.a
идентифицировать сохраняющиеся уравнения на node1
и node2
, и переменной компонента a
- термин, участвующий в тех, кто сохраняет уравнения. Оператор ветви объявляет, что a
течет из node1
на node2
. Поэтому a
вычитается из уравнения, идентифицированного node1.a
, и a
добавляется к уравнению, идентифицированному node2.a
.
Компонент может использовать каждый идентификатор уравнения несколько раз. Для примера компонент объявляет следующие переменные и ветви:
variables a1 = { 0, 'N' } a2 = { 0, 'N' } a3 = { 0, 'N' } end branches a1 : node1.a -> node2.a; a2 : node1.a -> node2.a; a3 : node2.a -> node1.a; end
Тогда, принимая, что node1
и node2
не указаны никакими другими branch
или connect
операторы, сохраняющие уравнения в этих узлах:
Для node1
- a1 - a2 + a3 == 0
Для node2
a1 + a2 - a3 == 0
Применяются следующие правила:
Каждое уравнение принадлежит узлу, сопоставленному с областью. Все переменные, участвующие в этом уравнении, должны иметь соразмерные модули.
Узел создает одно уравнение для каждого из переменных Through (балансировка) в связанной области. Операторы ветви не создают новых уравнений. Они складывают и вычитают условия в существующих уравнениях в узлах.
Второй и третий аргументы не должны быть связаны с одной и той же областью. Для примера один может быть связан с газовой областью, а другой - с тепловой областью, с тепловым потоком, заданным оператором ветви.
Можно заменить второй или третий аргумент на *
для указания узла ссылки. Когда вы используете *
переменная, обозначенная первым аргументом, все еще добавляется к уравнению, обозначенному другим идентификатором, или вычитается из него, но никакое уравнение не затронуто *.
Если раздел объявления компонента содержит два электрических узла, p
и n
, и переменной i = { 0, 'A' };
задавая ток, можно установить следующую связь в branches
раздел:
branches i : p.i -> n.i; end
Этот оператор задает текущие i
как переменная Through, вытекающая из узла p
к узлу n
.
Для компонента заземления, который имеет один электрический узел V
, задайте текущие i
как переменная Through, вытекающая из узла V
в узел ссылки:
branches i : V.i -> *; end
Для взаимного индуктивности или трансформатора с первичной и вторичной обмотками branches
раздел должен содержать два оператора, по одному для каждой обмотки:
branches i1 : p1.i -> n1.i; i2 : p2.i -> n2.i; end
Для компонента, такого как пневматическая ёмкость постоянного объема, где необходимо установить тепловой обмен между пневматической и тепловой областями, раздел объявления содержит два узла и переменную теплового потока:
nodes A = foundation.pneumatic.pneumatic; H = foundation.thermal.thermal; end variables h = { 0 , 'J/s' }; end
и branches
раздел устанавливает тепловой обмен между двумя областями:
branches h : A.Q -> H.Q; end
Этот оператор задает тепловой поток h
как переменная Through, вытекающая из пневматического узла A
, сопоставленный с входным отверстием ёмкость, с тепловым узлом H
, сопоставленный с тепловой массой газа в ёмкости.