# Propagating Dynamics

With all the necessary simulation settings in place, it is time to run the simulation. In Tudat(Py), this is done by means of a simulator object, which handles the setup and execution of the simulation, by tieing all the settings and models defined on the above pages together, defining and solving the state derivative equation:

$\begin{split}&\dot{\mathbf{x}}=\mathbf{f}(\mathbf{x},t;\mathbf{p})\\ &\mathbf{x}(t_{0})=\mathbf{x}_{0}\end{split}$

where $$\mathbf{x}$$ defines the state vector that is to be propagated (defined by the your choice of dynamics type and propagator), $$t_{0}$$ and $$\mathbf{x}_{0}$$ define the initial time and state. The parameter vector $$\mathbf{p}$$ is included explicitly in the state derivative function to denote its dependence on various environmental and system parameters, as defined through the environment_setup. Finally, the state derivative function $$\mathbf{f}$$ is created through the definition of the state $$\mathbf{x}$$ and associated state derivative models (such as accelerations and torques)

The above differential equations are solved using the specific choice of integrator, and are terminated by user-specified termination settings. The output of the propagation consists of the state that is propagated, as well as any number of output (dependent) variables.

Simulations in which only the system state is propagated are handled by simulator objects derived from the Simulator base class. The creation of this object is done using the create_dynamics_simulator() function :

dynamics_simulator = numerical_simulation.create_dynamics_simulator(
body_system, propagator_settings)
propagation_results = dynamics_simulator.propagation_results


where the two inputs specify (roughly) what the physical environment is (the bodies) and how the simulator is supposed to act on this physical environment. By default, creating the dynamics simulator immediately starts the propagation. The choice of single-, multi- or hybrid-arc (see here) is defined by the choice of propagator_settings, resulting in the dynamics_simulator being of type SingleArcSimulator, MultiArcSimulator or HybridArcSimulator, respectively. The results of the numerical integration are stored in the propagation_results, which is described in more detail below, along with a more detailed description of the process that is executed during the propagation: