As the coupling of one or more Atomic DEVS', a Coupled DEVS is a tuple
(where
) is an Atomic DEVS as one of the Coupled DEVS'
components. Its output is connected to the input of its influencees
(a set). Every output signal of component
is translated by
the
function before it reaches an input of component
.
It is possible that internal transitions in different components occur
at exactly the same time. The virtual time is not advanced until all
these events at the same time are handled. The order in which the
events are handled is important, because the change of state caused by
a transition may affect the behavior of subsequent transitions, though
they are triggered at the same virtual time. The function
decides which transition must be triggered first when a conflict
occurs.
DEVS is closed under coupling by construction. A Coupled DEVS can be rewritten as an equivalent Atomic DEVS, and thus be reused as a component in a larger DEVS. The outside world need not know whether a DEVS component is atomic or coupled, because both kinds expose the same interface.