Define Relationship Between Component Variables and Nodes

Connecting Component Variables to the Domain

After you declare the component Through and Across variables, you need to connect them to the domain Through and Across variables. You do this by establishing the relationship between the component variables and its nodes, which carry the Through and Across variables for the domain:

• To establish the relationship between the Through variables, use the branches section of the component file. If the component has multiple nodes, indicate branches by writing multiple statements in the branches section. For syntax and examples, see the branches reference page.

• To establish the relationship between the Across variables, use the equations section of the component file. Add an equation that connects the component Across variable with the respective variables at the component nodes. If there is more than one Across variable, add multiple equations, connecting each variable with its respective nodes. The equations section can also contain other equations that define the component action. For more information, see Defining Component Equations.

Workflow from Domain to Component

Propagate the domain Through and Across variables into a component.

1. Declare the Across and Through variables in a domain file (or use an existing domain; for a complete listing of the Foundation domains, see Foundation Domain Types and Directory Structure).

For example, the following domain file, named rotational.ssc, declares angular velocity, w, as an Across variable and torque, t, as a Through variable.

domain rotational
% Define the mechanical rotational domain
% in terms of across and through variables

variables
w = { 1 , 'rad/s' }; % angular velocity
end

variables(Balancing = true)
t = { 1 , 'N*m' }; % torque
end

end

2. Declare the nodes in a component file and associate them with the domain, for example:

nodes
node1 = MyPackage.rotational;
node2 = MyPackage.rotational;
end

Once a node is associated with a domain, it:

• Carries each of the domain Across variables as a measurable quantity. In this example, each of the nodes carries one Across variable, w.

• Writes a conserving equation for each of the domain Through variables. In this example, there is one Through variable, t, and therefore each node writes one conserving equation. A conserving equation is a sum of terms that is set to zero (node.t == 0). The branches section in the component file establishes the terms that are summed to zero at the node.

3. Declare the corresponding variables in the component file, for example:

variables
w = { 1 , 'rad/s' };   % angular velocity
t = { 1 , 'N*m' };     % torque
end

The names of the component variables do not have to match those of the domain Across and Through variables, but the units must be commensurate. At this point, there is no connection between the component variables and the domain variables.

4. Establish the relationship between the Through variables by using the branches section of the component file. For example:

branches
t : node1.t -> node2.t;    % t - Through variable from node1 to node2
end

This branch statement declares that t flows from node1 to node2. Therefore, t is subtracted from the conserving equation identified by node1.t, and t is added to the conserving equation identified by node2.t. For more information and examples, see the branches reference page.

5. Establish relationship between the Across variables in the equations section of the component file, for example, by adding the following equation:

equations
w == node1.w - node2.w;       % w - Across variable between node1 and node2
[...]      % more equations describing the component behavior, as necessary
end

Connecting One Through and One Across Variable

In this example, r and c are rotational nodes, while t and w are component variables for torque and angular velocity, respectively. The relationship between the variables and nodes is established in the branches and the equations sections:

component spring
nodes
r = foundation.mechanical.rotational.rotational;
c = foundation.mechanical.rotational.rotational;
end
[...]
variables
[...]
t = { 0, 'N*m' };     % torque through
w = { 0, 'rad/s' };   % velocity across
end
branches
t : r.t -> c.t;       % t - Through variable from r to c
end
equations
w == r.w - c.w;       % w - Across variable between r and c
[...]                 % more equations here
end
end

Connecting Two Through and Two Across Variables

This example shows setting up the Across and Through variables of a component with two electrical windings, such as a transformer or mutual inductor. The component has four electrical nodes, and each winding has its own voltage and current variables. The relationship between the variables and nodes is established in the branches and the equations sections:

component two_windings
nodes
p1 = foundation.electrical.electrical;
n1 = foundation.electrical.electrical;
p2 = foundation.electrical.electrical;
n2 = foundation.electrical.electrical;
end
[...]
variables
i1 = { 0, 'A' };
v1 = { 0, 'V' };
i2 = { 0, 'A' };
v2 = { 0, 'V' };
end
[...]
branches
i1 : p1.i -> n1.i;   % Current through first winding
i2 : p2.i -> n2.i;   % Current through second winding
end
equations
v1 == p1.v - n1.v;   % Voltage across first winding
v2 == p2.v - n2.v;   % Voltage across second winding
[...]                % more equations here
end
end