Sub-systems are containers for blocks and are used to make large models more manageable and understandable. The sub-system also acts as a name space for the blocks that it contains, which means that it will determine the ID of the blocks and guarantee that there are never two blocks inside the same sub-system with the same name. Finally, sub-systems can communicate with other sub-systems through the use of connectors.
As sub-system can contain other sub-systems hierarchies of sub-systems can be created.
The top level sub-system is called the root sub-system. When a sub-system contains another sub-system, it is said to be the parent of that sub-system.
A sub-system is considered an (in most cases) independant model component. However, it can communicate with other sub-systems. Blocks in a sub-system can be marked as outputs, which make them available to other sub-system. Likewise, blocks can be marked as inputs, which means that they can be calculated by other sub-systems.
Sub-systems are connected by using connector blocks. In the graph, connectors are represented as arrows, in the interaction matrix connectors are put in off-diagonal cells. A connector lists all the available outputs of the source sub-system and to which inputs in the target sub-system they are paired with.
When an output has been connected to an input, it “disappears” from the input screens.
In some cases, an input allows connections from more than one output. The input then receives the sum of the connected outputs.
A sub-system in the interaction matrix is put in the diagonal. In the both the interaction matrix and in the graph a sub-system can be expanded (opened) by clicking the + button located in the upper corner of the box.