In this section, we’ll discuss relatively simple engineering domains.
These are ones where a connector
deals with only one through and
one across variable. Conceptually, this means that only one
conserved quantity is involved with that connector.
The following table covers four different engineering domains. In each domain, we see the choice of through and across variables that we will be using along with the SI units for those quantities.
Domain | Through Variable | Across Variable |
Electrical | Current [A] | Voltage [V] |
Thermal | Heat [W] | Temperature [K] |
Translational | Force [N] | Position [m] |
Rotational | Torque [N.m] | Angle [rad] |
You may have seen a similar table before with slightly different choices. For example, you will sometimes see velocity (in ) chosen as the across variable for translational motion. The choices above are guided by two constraints.
The first constraint is that the through variable should be the time derivative of some conserved quantity. The reason for this constraint is that the through variable will be used to formulate generalized conservation equations in our system. As such, it is essential that the through variables be conserved quantities.
The second constraint is that the across variable should be the lowest order derivative to appear in any of our constitutive or empirical equations in the domain. So, for example, we chose position for translational motion because position is used in describing the behavior of a spring (i.e., Hooke’s law). If we had chosen velocity (the derivative of position with respect to time), then we would have been in the awkward situation of trying to describe the behavior of a spring in terms of velocities, not positions. An essential point here is that differentiation is lossy. If we know position, we can easily express velocity. But if we only know velocity, we cannot compute position without knowing an additional integration constant. This is why we want to work with across variables that have not been overly differentiated.
Now let’s look at each domain individually.
We can define a connector
for the electrical domain as follows:
connector Electrical
Modelica.SIunits.Voltage v;
flow Modelica.SIunits.Current i;
end Electrical;
Here we see that the variable v
in this connector represents the
voltage and the variable i
represents the current.
Note the presence of the flow
qualifier in the declaration of
i
, the current. The flow
qualifier is what tells the Modelica
compiler that i
is the through variable. Recall from our
discussion on Acausal Connections that the flow
variable
should be the time derivative of a conserved quantity. We can see
that this connector follows that convention, since Current
is the
time derivative of charge (and charge is a conserved quantity).
Note the absence of any qualifier in the declaration of v
, the
voltage. A variable without any qualifier is assumed to be the
across
variable. You will find a more complete discussion about
Variables (including the various qualifiers that can
applied to them) later in this chapter.
The interested reader may wish to jump ahead to our discussion of Electrical Components to see how we build on the connector definition to create electrical circuit components.
A connector for modeling lumped heat transfer isn’t much different from an electrical connector:
connector Thermal
Modelica.SIunits.Temperature T;
flow Modelica.SIunits.HeatFlowRate q;
end Thermal;
Instead of Voltage
and Current
, this connector includes
Temperature
and HeatFlowRate
. While the names are different,
the overall structure is essentially the same. The connector
includes one through variable (q
, indicated by the presence of the
flow
qualifier) and one across variable (T
, indicated by the
lack of any qualifier). Again, we see that the type of the variable
with the flow
qualifier, HeatFlowRate
, is the time derivative
of a conserved quantity, energy.
An example of how such a connector can be used to build components for
lumped thermal network modeling can be found in the upcoming
discussion on Heat Transfer Components. If you feel
comfortable with this connector
definition, feel free to jump
ahead. It would still be a good idea to read the
Review section of the Connectors chapter at
some point.
To model translational motion, we would define a connector as follows:
connector Translational
Modelica.SIunits.Position x;
flow Modelica.SIunits.Force f;
end Translational;
Again, we see the same basic structure as before. The connector
contains one through variable, f
, and one across variable x
.
Note that, although this is a one-dimensional mechanical connector,
the physical types are specific to translational motion and distinct
from the physical types used from the Rotational
case to be presented next.
An important fact about mechanical connectors that is often overlooked
is that the flow
variable is the time derivative of a
conserved quantity. For example, in the case of translational motion
the flow
variable, f
, is a force and force is the time
derivative of (linear) momentum and momentum is a conserved quantity.
For systems whose motion is constrained to be rotational, the
following Modelica connector
definition should be used:
connector Rotational
Modelica.SIunits.Angle phi;
flow Modelica.SIunits.Torque tau;
end Rotational;
Here we see that the across variable is phi
(representing the
angular displacement) and the through variable is torque
. As with
all previous examples, the flow
variable is the time derivative of
a conserved quantity. In this case, that conserved quantity is
angular momentum.
SimpleDomains
¶All the connectors defined in this section are grouped, for future reference, into a single package:
within ModelicaByExample.Connectors;
package SimpleDomains "Examples of connectors for simple domains"
connector Electrical
Modelica.SIunits.Voltage v;
flow Modelica.SIunits.Current i;
end Electrical;
connector Thermal
Modelica.SIunits.Temperature T;
flow Modelica.SIunits.HeatFlowRate q;
end Thermal;
connector Translational
Modelica.SIunits.Position x;
flow Modelica.SIunits.Force f;
end Translational;
connector Rotational
Modelica.SIunits.Angle phi;
flow Modelica.SIunits.Torque tau;
end Rotational;
end SimpleDomains;