code: def convert_particle_units(self, *args): 
          
          if self.python_unit_l == 0 or self.python_unit_m == 0 or self.python_unit_t == 0:
              raise AttributeError("Must set sim.units before calling convert_particle_units in order to know what units to convert from.")
          new_l, new_t, new_m = check_units(args)
          for p in self.particles:
              units_convert_particle(p, hash_to_unit(self.python_unit_l), hash_to_unit(self.python_unit_t), hash_to_unit(self.python_unit_m), new_l, new_t, new_m)
          self.update_units((new_l, new_t, new_m))
docs: Will convert the units for the simulation (i.e. convert G) as well as the particles' cartesian elements.
          Must have set sim.units ahead of calling this function so REBOUND knows what units to convert from.
  
          Parameters
          ----------
          3 strings corresponding to units of time, length and mass.  Can be in any order and aren't case sensitive.        You can add new units to rebound/rebound/units.py