|
|
@@ -0,0 +1,73 @@
|
|
|
+from pypdevs.DEVS import CoupledDEVS
|
|
|
+from MockNode import MockNode
|
|
|
+
|
|
|
+class UnconnectedPort(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("Top")
|
|
|
+ sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
|
|
|
+
|
|
|
+class PassThrough(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("Top")
|
|
|
+ sender = self.addSubModel(MockNode("Sender", out_ports=["out"], ta=1.0, make_out=True))
|
|
|
+ self.Forwarder = self.addSubModel(MockNode("Forwarder", in_ports=["in"], out_ports=["out"], ta=1.0, forward=True))
|
|
|
+ receiver = self.addSubModel(MockNode("Receiver", in_ports=["in"]))
|
|
|
+ self.connectPorts(sender.p_out["out"], self.Forwarder.p_in["in"])
|
|
|
+ self.connectPorts(self.Forwarder.p_out["out"], receiver.p_in["in"])
|
|
|
+
|
|
|
+class CyclicCoupling(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("Top")
|
|
|
+ self.NodeA = self.addSubModel(MockNode("NodeA", in_ports=["in"], out_ports=["out"], ta=1.0, forward=True, forward_msg=1))
|
|
|
+ self.NodeB = self.addSubModel(MockNode("NodeB", in_ports=["in"], out_ports=["out"], ta=1.0, forward=True))
|
|
|
+ self.connectPorts(self.NodeA.p_out["out"], self.NodeB.p_in["in"])
|
|
|
+ self.connectPorts(self.NodeB.p_out["out"], self.NodeA.p_in["in"])
|
|
|
+
|
|
|
+class FanIn(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("Top")
|
|
|
+ sender1 = self.addSubModel(MockNode("Sender1", out_ports=["out"], ta=1.0, make_out=True))
|
|
|
+ sender2 = self.addSubModel(MockNode("Sender2", out_ports=["out"], ta=1.0, make_out=True))
|
|
|
+ receiver = self.addSubModel(MockNode("Receiver", in_ports=["in"]))
|
|
|
+ self.connectPorts(sender1.p_out["out"], receiver.p_in["in"])
|
|
|
+ self.connectPorts(sender2.p_out["out"], receiver.p_in["in"])
|
|
|
+
|
|
|
+class FanOut(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("Top")
|
|
|
+ sender = self.addSubModel(MockNode("Sender", out_ports=["out"], ta=1.0, make_out=True))
|
|
|
+ receiver1 = self.addSubModel(MockNode("Receiver1", in_ports=["in"]))
|
|
|
+ receiver2 = self.addSubModel(MockNode("Receiver2", in_ports=["in"]))
|
|
|
+ self.connectPorts(sender.p_out["out"], receiver1.p_in["in"])
|
|
|
+ self.connectPorts(sender.p_out["out"], receiver2.p_in["in"])
|
|
|
+
|
|
|
+# --- Nested Architecture for FlattenedConnection ---
|
|
|
+class Child1(CoupledDEVS):
|
|
|
+ def __init__(self, name="child1"):
|
|
|
+ super().__init__(name)
|
|
|
+ sender = self.addSubModel(MockNode("sender", out_ports=["out"], ta=1.0, make_out=True))
|
|
|
+ self.p_out = self.addOutPort("out")
|
|
|
+ self.connectPorts(sender.p_out["out"], self.p_out)
|
|
|
+
|
|
|
+class Child2(CoupledDEVS):
|
|
|
+ def __init__(self, name="child2"):
|
|
|
+ super().__init__(name)
|
|
|
+ receiver = self.addSubModel(MockNode("receiver", in_ports=["in"]))
|
|
|
+ self.p_in = self.addInPort("in")
|
|
|
+ self.connectPorts(self.p_in, receiver.p_in["in"])
|
|
|
+
|
|
|
+class FlattenedConnection(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("parent")
|
|
|
+ self.child1 = self.addSubModel(Child1("child1"))
|
|
|
+ self.child2 = self.addSubModel(Child2("child2"))
|
|
|
+ self.connectPorts(self.child1.p_out, self.child2.p_in)
|
|
|
+
|
|
|
+class ComplexBag(CoupledDEVS):
|
|
|
+ def __init__(self):
|
|
|
+ super().__init__("top")
|
|
|
+ self.sA = self.addSubModel(MockNode("sA", out_ports=["out"], ta=2.0, make_out=True))
|
|
|
+ self.sB = self.addSubModel(MockNode("sB", out_ports=["out"], ta=2.0, make_out=True))
|
|
|
+ self.rec = self.addSubModel(MockNode("rec", in_ports=["in_A", "in_B"]))
|
|
|
+ self.connectPorts(self.sA.p_out["out"], self.rec.p_in["in_A"])
|
|
|
+ self.connectPorts(self.sB.p_out["out"], self.rec.p_in["in_B"])
|