def get_moons_for_planet(planet, delta_JD=0. | units.day):
    """
  The Earth's moon
  as for JD = 2457099.500000000 = A.D. 2015-Mar-18 00:00:00.0000 (CT)
  https://ssd.jpl.nasa.gov/?sat_elem
  """

    data = numpy.array([tuple(entry) for entry in _lunar_data],
                       dtype=[('planet_name', 'S10'), ('name', 'S10'),
                              ('mass', '<f8'), ('radius', '<f8'),
                              ('semimajor_axis', '<f8'),
                              ('eccentricity', '<f8'),
                              ('argument_of_peri', '<f8'),
                              ('mean_anomaly', '<f8'), ('inclination', '<f8'),
                              ('longitude_oan', '<f8')])
    moon_data = data[data['planet_name'] == planet.name.encode('UTF-8')]
    print("Planet=", planet.name, "moon=", moon_data["name"])
    moons = Particles()
    if len(moon_data["name"]):
        print(len(moon_data["name"]))
        for moon in moon_data:
            #Ignore the moon for now, because it's complicated
            if planet.name == "EarthMoon":
                planet.mass -= moon["mass"] * 1.e+16 | units.kg
                planet.name = "Earth"
            #print moon
            r, v = get_position(planet.mass,
                                moon["mass"] * 1.e+16 | units.kg,
                                moon["eccentricity"],
                                moon["semimajor_axis"] | units.km,
                                numpy.deg2rad(moon["mean_anomaly"]),
                                numpy.deg2rad(moon["inclination"]),
                                numpy.deg2rad(moon["longitude_oan"]),
                                numpy.deg2rad(moon["argument_of_peri"]),
                                delta_t=delta_JD)
            single_moon = Particle()
            single_moon.type = "moon"
            single_moon.name = moon["name"]
            single_moon.mass = moon["mass"] * 1.e+16 | units.kg
            single_moon.hostname = moon["planet_name"]
            single_moon.radius = moon["radius"] | units.km
            single_moon.position = r
            single_moon.position += planet.position
            single_moon.velocity = v
            single_moon.velocity += planet.velocity
            moons.add_particle(single_moon)

    return moons
コード例 #2
0
def get_moons_for_planet(planet, delta_JD=0.|units.day):
  """
  The Earth's moon
  as for JD = 2457099.500000000 = A.D. 2015-Mar-18 00:00:00.0000 (CT)
  https://ssd.jpl.nasa.gov/?sat_elem
  """

  data = numpy.array([tuple(entry) for entry in _lunar_data],
        dtype=[('planet_name','S10'), ('name','S10'), 
        ('mass','<f8'), ('radius','<f8'), ('semimajor_axis','<f8'), 
        ('eccentricity','<f8'), ('argument_of_peri','<f8'),
        ('mean_anomaly','<f8'), ('inclination','<f8'), ('longitude_oan','<f8')])
  moon_data = data[data['planet_name']==planet.name]
  print "Planet=", planet.name, "moon=", moon_data["name"]
  moons = Particles()
  if len(moon_data["name"]):
      print len(moon_data["name"])
      for moon in moon_data:
          #print moon
          r, v = get_position(planet.mass,
                              moon["mass"] * 1.e+16 | units.kg,
                              moon["eccentricity"],
                              moon["semimajor_axis"]|units.km,
                              numpy.deg2rad(moon["mean_anomaly"]),
                              numpy.deg2rad(moon["inclination"]),
                              numpy.deg2rad(moon["longitude_oan"]),
                              numpy.deg2rad(moon["argument_of_peri"]),
                              delta_t=delta_JD)
          single_moon = Particle()
          single_moon.type = "moon"
          single_moon.name = moon["name"]
          single_moon.mass = moon["mass"] * 1.e+16 | units.kg
          single_moon.hostname = moon["planet_name"]
          single_moon.radius = moon["radius"] | units.km
          single_moon.position = r
          single_moon.position += planet.position
          single_moon.velocity = v
          single_moon.velocity += planet.velocity
          moons.add_particle(single_moon)
    
  return moons