multiple_output_test.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from DEVS import *
  2. from infinity import INFINITY
  3. import random, math, sys, getopt
  4. def termination_condition(time, model, transitioned):
  5. time = time[0]
  6. return False
  7. class ParticleState:
  8. def __init__(self):
  9. pass
  10. class Particle(AtomicDEVS):
  11. def __init__(self, particle_id):
  12. AtomicDEVS.__init__(self, "Particle[%i]" % particle_id)
  13. self.state = ParticleState()
  14. self.port1 = self.addOutPort("OPort1")
  15. self.port2 = self.addOutPort("OPort2")
  16. self.port3 = self.addOutPort("OPort3")
  17. self.iport1 = self.addInPort("IPort1")
  18. self.iport2 = self.addInPort("IPort2")
  19. self.iport3 = self.addInPort("IPort3")
  20. self.iport4 = self.addInPort("IPort4")
  21. def timeAdvance(self):
  22. return 1.0
  23. def outputFnc(self):
  24. output = {self.port1: "Hello", self.port2: "HelloAgain", self.port3: "HelloOnceMore"}
  25. return output
  26. def intTransition(self):
  27. return self.state
  28. def extTransition(self, inputs):
  29. return self.state
  30. class Root(CoupledDEVS):
  31. def __init__(self):
  32. CoupledDEVS.__init__(self, "Field")
  33. self.port1 = self.addOutPort("OPort1")
  34. self.particle1 = self.addSubModel(Particle(1))
  35. self.particle2 = self.addSubModel(Particle(2))
  36. self.connectPorts(self.particle1.port1, self.particle2.iport1)
  37. self.connectPorts(self.particle1.port2, self.particle2.iport2)
  38. self.connectPorts(self.particle1.port2, self.particle2.iport3)
  39. self.connectPorts(self.particle1.port1, self.particle2.iport4)