code: def update(self, dt=None):
          
          # EMELI passes dt = -1 so we need to handle that here
          dt = dt if (dt is not None and dt > 0) else self.dt
          tspan = [0, dt]
          # Run simulaton with initials set to current state
          res = self.sim.run(tspan=tspan, initials=self.state)
          # Set the state based on the result here
          self.state  = res.species[-1]
          self.time += dt
          if self.time > self.stop_time:
              self.DONE = True
          print((self.time, self.state))
          self.time_course.append((self.time.copy(), self.state.copy()))
docs: Simulate the model for a given time interval.
  
          Parameters
          ----------
          dt : Optional[float]
              The time step to simulate, if None, the default built-in time step
              is used.