Setting up a Force Model

Top  Previous  Next

The ForceModel object defines the forces that will be modeled in the accelerations that are applied when a Spacecraft or Formation are propagated using the Step or Maneuver commands. In order to calculate the trajectory of a Spacecraft, a numerical integrator accesses the forces defined by the Force Model. A Force Model is not used when an Ephemeris is used to propagate the Spacecraft.


Each Spacecraft defines its own individual ForceModel, which allows the user to perform trade studies by varying the applied orbital perturbations. For example, a lifetime study could be performed using identical initial orbital conditions with three different Spacecraft, but each with slightly different solar flux predictions.


A Spacecraft's Force Model consists of the following components:

Gravitational Forces

Atmospheric Forces

Solar Radiation Pressure

Other Accelerations


The total force on a Spacecraft is calculated by:



Force Models are not used with the J2Mean, Norad, and Two Body integrators.


The total force on the spacecraft can be viewed using the Spacecraft.Acceleration property. Additionally, individual components of the total force on the Spacecraft (drag, Earth gravity, solar radiation pressure, etc) can be viewed separately with Spacecraft.Accelerations. In the example below, the individual forces due to Earth gravity, Moon gravity, Sun gravity, and drag are displayed. The total force on the Spacecraft is shown using Spacecraft.Acceleration property, and computed using the individual components of the forces from the Spacecraft.Accelerations property.


For i = 0 to Spacecraft1.Accelerations.Count-1;


      // Report the value of each acceleration component:

      Report Spacecraft1.Accelerations[i].Name, Spacecraft1.Accelerations[i].Acceleration[0].Format("%e"),




      // Manually compute the total acceleration on the Spacecraft:

      totalAcceleration = totalAcceleration + Spacecraft1.Accelerations[i].Acceleration;




// Report the total acceleration:

Report "Spacecraft.Acceleration: ", Spacecraft1.Acceleration;

Report "totalAcceleration: ", totalAcceleration;


The example script above generates the following output when the Force Model contains the forces due to the Earth, Sun, and Moon gravity, and drag.




Accessing the ForceModel via the Spacecraft Object Editor

You can edit a Spacecraft's Force Model through the Spacecraft Object Editor. To reach the Force Model page, double-click the Spacecraft in the Object Browser, and then select the Force Model page from the menu on the left, as shown in the image below.




Creating and Editing a ForceModel Object via FreeFlyer Script

You can also create a ForceModel object via FreeFlyer script, or access the properties of a Force Model created in either script or the Spacecraft object editor via FreeFlyer script.


To create a ForceModel object via FreeFlyer script, you can use the following syntax:


ForceModel ForceModel1;

RK89 Integrator1(ForceModel1);

Spacecraft Spacecraft1(Integrator1);




ForceModel1 is a new object of type "ForceModel"

Integrator1 is a new object of type "RK89"

ForceModel1 can now also be accessed through Integrator1.ForceModel or (Spacecraft1.Propagator AsType RK89).ForceModel


When a Spacecraft is created without specifying a Propagator or Force Model, the default Propagator and Force Model are used. The default Propagator is the RK89 Propagator. You can access the ForceModel using the syntax:


Spacecraft Spacecraft1;

(Spacecraft1.Propagator AsType RK89).ForceModel./*Force Model Property*/;




Spacecraft1 propagates using an integrator of type "RK89"

ForceModel properties are accessed through the ForceModel associated with the integrator


To learn more about related topics, see the Object Constructors and Type Casting references in the Working with Objects Guide.



See Also

ForceModel Properties and Methods

Solar System settings that affect Spacecraft Propagation