Timing Precision Modes
|Top Previous Next|
FreeFlyer allows users to create Mission Plans in two separate timing precision modes. Nanosecond precision mode stores all time values to nanosecond-level precision, and millisecond precision mode stores all time values at millisecond-level precision.
The timing precision mode for every FreeFlyer Mission Plan is set when the Mission Plan is created, and cannot be changed. A Mission Plan created in one mode cannot be opened in the other mode. Nanosecond precision mode was introduced in FreeFlyer 7.1, and became the default mode for newly created Mission Plans as of FreeFlyer 7.3. Mission Plans can still be created in either mode using the drop-down menu on the "New Mission Plan" button, as shown in the image below.
Nanosecond precision mode provides higher accuracy for orbit propagation and orbit determination, and lower achievable integration error tolerances. Nanosecond precision mode is ideally suited for high precision orbit determination, especially when light-time corrections are modeled, and for deep-space propagation and maneuver planning. Any analysis that requires a very low error in propagation, or uses any input data (e.g. orbit states or measurements) specified at the millisecond level or smaller should use nanosecond precision mode.
This page provides a complete guide to working with times in each precision mode, and the steps to take to convert a Mission Plan from millisecond to nanosecond precision mode.
Working with times in each Precision Mode
The most notable difference between the nanosecond and millisecond precision modes is how time values are stored. In nanosecond precision mode, times are stored in TimeSpan objects. In millisecond precision mode, times are stored in Variable objects. FreeFlyer uses the specialized TimeSpan object type to store nanosecond-precision time values because it would not be possible to store an epoch at nanosecond-level precision in the FreeFlyer Variable object type, due to the limited numerical precision of floating point 64-bit values. In nanosecond mode, any property, method, or function that has a time value as an input or output will use the TimeSpan or TimeSpanArray object types. The table below highlights the key syntax differences when working with times in each timing precision mode. The TimeSpans page provides additional syntax examples.
The next section on this page details the other differences between nanosecond and millisecond precision mode.
Note that the single Spacecraft.ElapsedTime method has replaced the separate Spacecraft.ElapsedDays/Hours/Minutes/Seconds methods, because the TimeSpan object provides interfaces to get or set the time value in various units of time.
Note: For ephemeris file formats that do not support sub-millisecond precision, epochs will be rounded to millisecond precision before being put to file regardless of timing precision mode.
Users who have Mission Plans in millisecond precision mode that they would like to convert to nanosecond precision mode will need to follow the steps listed below. The two modes are completely independent from one another, and there is no automated way to convert between modes.
1.Remove all deprecated functionality from your Millisecond-Mode Mission Plan
2.Create a new Mission Plan in Nanosecond Precision Mode
3.Copy all FreeFlyer Script, Mission Sequence Elements, and Objects to the new Mission Plan
4.Handle any instances of unsupported syntax
5.Replace all Variable Instances of Time with TimeSpans