Propagation Control using API

Propagator Selection

Through the UI, you are able to choose a specific propagator to each satellite:

mds_api.set_propagator(sat_name: str, new_propagator:str)

with new_propagator options:

  • "default" - RK4; Earth J2; point mass accelerations from remaining perturbing bodies.
  • "Tudat" (installation required) - highly configurable, high fidelity. More on its use can be found in the TUDAT guide page
  • "SGP4" - best for use with mean elements, requires initial Two Line Elements (TLE) input.

API Synchronization

The API for MDS Solaris 1.3.0 now allows the user to have better control than the API when running Python scripts. Propagation rates are now totally controllable via the API.

By default, MDS runs with a fixed step dynamics integrator that executes based on the timescale and depends on the processing power of your machine. This limits reproducibility of results when outside apps communicate with MDS. Since MDS 1.3.0, this can now be synchronized The MDS propagation can be fully synchronized with other applications using the call:

mds_api.enable_API_synchronization()

This will set MDS to propagate by its fixed time-step only when calling the propagator to advance. Once called, interaction with the dynamics rate through the UI will be very limited. Instead, time must be propagated forward using:

mds_api.step_sim(n_steps, waitForPropagationEnd)

where the integer input allows to set how many times the propagation step will be executed. The boolean waitForPropagationEnd commands the API script to wait for an MDS response that the propagation steps are complete before continuing to the next line.

The MDS propagation can be again unlocked from the API by calling

mds_api.disable_API_synchronization()

it will also be disabled by clearing the scene:

mds_api.clear_scene()

Propagator speed control

Several propagation rate control options are possible in MDS 1.3.0

mds_api.set_simulation_timestep(t_step)

This sets sets the fixed time-step in propagation to match t_step in seconds. By default it is 0.01 s, which, depending on your machine's processing power and your application, might be unnecessary slow. For general orbital propagation, we would suggest time-steps of 60 seconds, while attitude-controller uses will work best with a 0.01 - 0.1 s.

mds_api.set_time_scale(n)

This does not change the actual step in the dynamics, but instead scales how often the propagation step will be executed. This can effectively make the propagation run faster when your proessor allows it.