FreeFlyer

FreeFlyer is a commercial off-the-shelf software application for satellite mission analysis, design, and operations. Its architecture revolves around its native scripting language, known as FreeForm Script. As a mission planning tool, it encompasses several capabilities, including precise orbit modeling, 2D and 3D visualization, sensor modeling, maneuver modeling, maneuver estimation, plotting, orbit determination, tracking data simulation, and space environment modeling.

FreeFlyer implements standard astrodynamics models such as the JGM-2, EGM-96, and LP-165 gravity potential models; atmospheric density models like Jacchia-Roberts, Harris-Priester, and NRL-MSIS; the International Reference Ionosphere model; and the International Geomagnetic Reference Field magnetic field model.

Background
FreeFlyer is owned and developed by a.i. solutions, Inc. and is utilized by NASA, NOAA, and the USAF for space mission operations, mission assurance, and analysis support.

Operational and analysis support
FreeFlyer has been used to support many spacecraft missions, for mission planning analysis, operational analysis, or both. Specific mission examples include the International Space Station (ISS), the JSpOC Mission System, the Earth Observing System, Solar Dynamics Observatory (SDO), and Magnetospheric Multiscale Mission (MMS).

FreeFlyer has also been successfully used to conduct analysis in both the high-performance computing (HPC) and service-oriented architecture (SOA) environments.

Software tiers
FreeFlyer is one stand-alone product with two tiers of rising functionality.

FreeFlyer scripting
FreeFlyer contains an object-oriented scripting language and an accompanying integrated development environment.

Below is a basic FreeFlyer script that creates and displays a spacecraft:

// Create a spacecraft object Spacecraft sc1; // Create a ViewWindow, passing sc1 as part of an array of objects to view ViewWindow vw({sc1}); // Propagate and view the spacecraft for two days While (sc1.ElapsedTime &lt; TimeSpan.FromDays (2)); sc1.Step; vw.Update; End;