|
@@ -161,7 +161,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
# Got input from MvI, so we queue it
|
|
|
for inp in inputs[self.from_mvi]:
|
|
|
if inp is not None:
|
|
|
- self.state.inputs.append(inp)
|
|
|
+ self.state.inputs.extend(inp)
|
|
|
else:
|
|
|
self.state.outputs.append(None)
|
|
|
|
|
@@ -206,10 +206,17 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
commands = [("RV", [self.state.users[0]])]
|
|
|
else:
|
|
|
self.state.current_user = self.state.reply
|
|
|
+ if self.state.current_user.startswith("__"):
|
|
|
+ # Don't process this user and force termination of user
|
|
|
+ self.state.phase = "output"
|
|
|
+ print("Starts with __")
|
|
|
+ else:
|
|
|
+ print("User OK")
|
|
|
commands = None
|
|
|
elif self.state.phase == "input":
|
|
|
# Process inputs
|
|
|
- commands = self.state.mvk.execute_yields(self.state.current_user, "set_input", [self.state.inputs[0]], self.state.reply)
|
|
|
+ element_type, value = self.state.inputs[0]
|
|
|
+ commands = self.state.mvk.execute_yields(self.state.current_user, "set_input", [element_type, value], self.state.reply)
|
|
|
elif self.state.phase == "computation":
|
|
|
commands = self.state.mvk.execute_yields(self.state.current_user, "execute_rule", [], self.state.reply)
|
|
|
elif self.state.phase == "output":
|
|
@@ -230,7 +237,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
self.state.phase = "output"
|
|
|
elif self.state.phase == "output":
|
|
|
self.state.users.pop(0)
|
|
|
- self.state.phase = "input"
|
|
|
+ self.state.phase = "init_user"
|
|
|
self.state.waiting = False
|
|
|
self.state.reply = None
|
|
|
else:
|
|
@@ -471,6 +478,6 @@ args = {
|
|
|
|
|
|
model = System(**args)
|
|
|
sim = Simulator(model)
|
|
|
-sim.setTerminationTime(10)
|
|
|
+sim.setTerminationTime(20)
|
|
|
sim.setVerbose()
|
|
|
sim.simulate()
|