docs: def run( self, for_time=None ):
          """
          Run the simulation.
  
          Args:
              for_time (:obj:Float, optional): If `for_time` is set, then run the simulation until a set amount of time has passed. Otherwise, run the simulation for a set number of jumps. Defaults to None.
  
          Returns:
              None
          """
          self.for_time = for_time
          try:
              self.is_initialised()
          except AttributeError:
              raise
          if self.number_of_equilibration_jumps > 0:
              for step in range( self.number_of_equilibration_jumps ):
                  self.lattice.jump()
              self.reset()
          if self.for_time:
              self.number_of_jumps = 0
              while self.lattice.time < self.for_time:
                  self.lattice.jump()
                  self.number_of_jumps += 1
          else: 
              for step in range( self.number_of_jumps ):
                  self.lattice.jump()
          self.has_run = True