Find flybys opportunities#

Get all the flybys in a temporal window#

To simplify the search of these orbital configurations, the planetary-coverage provide a .flybys property to on the TourConfig and Trajectory objects that will automatically search for all these opportunities. By default, the minimum altitude for which a flyby is considered valid is when the spacecraft is below 150,000 km at closest approach.

For example, here we search for all the Ganymede flybys:

tour.flybys
{'1G1': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 400.0 km
  - UTC at CA: 2031-07-21T07:08:09
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '2G2': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 400.0 km
  - UTC at CA: 2032-02-13T23:03:55
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '3G3': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 488.3 km
  - UTC at CA: 2032-04-11T04:14:51
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '4G4': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 5,630.3 km
  - UTC at CA: 2032-05-09T18:34:53
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '5G5': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 2,365.1 km
  - UTC at CA: 2032-06-02T21:30:44
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '26G6': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 867.0 km
  - UTC at CA: 2033-11-27T06:22:14
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '27G7': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 3,172.0 km
  - UTC at CA: 2034-01-14T18:38:57
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '30G8': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 3,356.1 km
  - UTC at CA: 2034-06-06T06:53:05
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '32G9': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 107,540.5 km
  - UTC at CA: 2034-07-12T07:50:48
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '33G10': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 63,702.4 km
  - UTC at CA: 2034-09-07T18:03:38
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '34G11': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 66,237.2 km
  - UTC at CA: 2034-09-29T06:48:32
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '35G12': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 31,796.8 km
  - UTC at CA: 2034-11-18T21:58:52
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041}

Changed in version 1.1.0: If the flyby name is known (from the fk event kernel), you will get a nammed dict of flybys instead of a regular list. See example above.

Danger

If no fk event kernel is not provided, or if your target body is not in the list of known targets, you can still use tour.flybys but the search will can take more time because it needs to be computed on the whole tour. In these cases, it is recommanded to select a temporal subset, first then query the flybys:

tour['2032-01-01':'2033-01-01':'1 h'].flybys

Get all the flybys below a given altitude#

If you only want the flybys below an other given altitude, you can use the get_flybys() function and provide alt_min parameter to change the flyby thresold definition.

Warning

For very low altitude flybys, you may need to increase the temporal resolution or you could miss some encounters.

tour.get_flybys(alt_min=500)
{'1G1': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 400.0 km
  - UTC at CA: 2031-07-21T07:08:09
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '2G2': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 400.0 km
  - UTC at CA: 2032-02-13T23:03:55
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041,
 '3G3': <SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
  - Altitude at CA: 488.3 km
  - UTC at CA: 2032-04-11T04:14:51
  - Duration: 1 day, 0:00:00
  - Nb of pts: 2,041}

Get a single flyby by date or name#

If you already know when a flyby is supposed to happen (within a 1 day window), you can select this specific flyby with its date:

Tip

You can also provide a list of dates, an Event, an EventWindow or an EventsList as an approximate date.

tour.flyby('2032-02-13')
<SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
 - Altitude at CA: 400.0 km
 - UTC at CA: 2032-02-13T23:03:55
 - Duration: 1 day, 0:00:00
 - Nb of pts: 2,041

New in version 1.1.0: When an fk events kernel is loaded, you can also query a flyby with its name:

flyby = tour.flyby('1G1')
flyby
<SpacecraftFlyby> Observer: JUICE | Target: GANYMEDE
 - Altitude at CA: 400.0 km
 - UTC at CA: 2031-07-21T07:08:09
 - Duration: 1 day, 0:00:00
 - Nb of pts: 2,041