code: def integrate_orbit(self, **time_spec):
          
  
          # Prepare the initial conditions
          pos = self.w0.xyz.decompose(self.units).value
          vel = self.w0.v_xyz.decompose(self.units).value
          w0 = np.ascontiguousarray(np.vstack((pos, vel)).T)
  
          # Prepare the time-stepping array
          t = parse_time_specification(self.units, **time_spec)
  
          ws = _direct_nbody_dop853(w0, t, self._ext_ham,
                                    self.particle_potentials)
          pos = np.rollaxis(np.array(ws[..., :3]), axis=2)
          vel = np.rollaxis(np.array(ws[..., 3:]), axis=2)
  
          orbits = Orbit(
              pos=pos * self.units['length'],
              vel=vel * self.units['length'] / self.units['time'],
              t=t * self.units['time'])
  
          return orbits
docs: Integrate the initial conditions in the combined external potential
          plus N-body forces.
  
          This integration uses the `~gala.integrate.DOPRI853Integrator`.
  
          Parameters
          ----------
          **time_spec
              Specification of how long to integrate. See documentation
              for `~gala.integrate.parse_time_specification`.
  
          Returns
          -------
          orbit : `~gala.dynamics.Orbit`
              The orbits of the particles.