|
@@ -132,6 +132,7 @@ class MvKState(object):
|
|
|
self.commands = None
|
|
|
self.root = None
|
|
|
self.current_user = None
|
|
|
+ self.loaded_primitives = False
|
|
|
|
|
|
def __str__(self):
|
|
|
return "\nMvK: %s\n" % self.mvk + \
|
|
@@ -175,10 +176,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
self.state.root = mvs_stripped[0]
|
|
|
self.state.mvk = MvK(self.state.root)
|
|
|
else:
|
|
|
- if len(mvs_stripped) == 1:
|
|
|
- self.state.reply = mvs_stripped[0]
|
|
|
- else:
|
|
|
- self.state.reply = mvs_stripped
|
|
|
+ self.state.reply = mvs_stripped
|
|
|
self.state.waiting = False
|
|
|
|
|
|
return self.state
|
|
@@ -192,6 +190,14 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
if self.state.mvk is None:
|
|
|
# Initializing
|
|
|
self.state.waiting = True
|
|
|
+ elif not self.state.loaded_primitives:
|
|
|
+ commands = self.state.mvk.execute_yields("", "load_primitives", [], self.state.reply)
|
|
|
+ if commands is None:
|
|
|
+ self.state.loaded_primitives = True
|
|
|
+ self.state.reply = None
|
|
|
+ else:
|
|
|
+ self.state.waiting = True
|
|
|
+ self.state.commands = commands
|
|
|
else:
|
|
|
# Are initialized and have work to do
|
|
|
if len(self.state.users) == 0:
|
|
@@ -259,7 +265,7 @@ class ModelverseKernel(AtomicDEVS):
|
|
|
return {}
|
|
|
|
|
|
def timeAdvance(self):
|
|
|
- if self.state.commands:
|
|
|
+ if self.state.commands is not None:
|
|
|
return 0
|
|
|
elif self.state.waiting:
|
|
|
return float("inf")
|
|
@@ -489,6 +495,6 @@ args = {
|
|
|
|
|
|
model = System(**args)
|
|
|
sim = Simulator(model)
|
|
|
-sim.setTerminationTime(10000)
|
|
|
+sim.setTerminationTime(90000)
|
|
|
#sim.setVerbose()
|
|
|
sim.simulate()
|