Acceleration Model Setup
Acceleration models can be created through the factory function
create_acceleration_models()
.
How to select accelerations
In Tudat, an acceleration acting on a body is defined by:
the body undergoing acceleration;
the body exerting the acceleration;
the type and settings of the acceleration.
These settings are defined via factory functions for each acceleration in the simulation.
See also
A comprehensive list of all available acceleration models in Tudat and the manner in which to define them is given in Available Acceleration Models.
These settings are organized in nested key-value containers (std::map<>
in C++, dict
in Python). In general:
key
: body undergoing accelerationvalue
: dictionary with:key
: body exerting the accelerationvalue
:AccelerationSettings
object.
This container will be supplied to the
create_acceleration_models()
function to create the
acceleration models. This is illustrated in the example below.
Example
In this example, the following accelerations are exerted on the vehicle:
by the Earth:
spherical harmonic gravitational acceleration (degree and order 5)
aerodynamic acceleration
by the Sun:
point-mass gravity
by the Moon:
point-mass gravity
The variable accelerations_settings_vehicle
denotes the list of bodies exerting accelerations and the types of
accelerations, while the variable acceleration_settings
associates this list with the body undergoing the
acceleration.
The
function create_acceleration_models()
creates the list of
models that compute the accelerations during the propagation.
Required Show/Hide
from tudatpy.kernel.numerical_simulation import propagation_setup# Define bodies that are propagated bodies_to_propagate = ["Vehicle"] # Define central bodies central_bodies = ["Earth"] # Define accelerations acting on Vehicle accelerations_settings_vehicle = dict( Sun= [ propagation_setup.acceleration.point_mass_gravity() ], Moon= [ propagation_setup.acceleration.point_mass_gravity() ], Earth= [ propagation_setup.acceleration.spherical_harmonic_gravity(5, 5), propagation_setup.acceleration.aerodynamic() ]) # Create global accelerations settings dictionary acceleration_settings = {"Vehicle": accelerations_settings_vehicle} # Create acceleration models acceleration_models = propagation_setup.create_acceleration_models( bodies, acceleration_settings, bodies_to_propagate, central_bodies)// required include statements #include <tudat/simulation/simulation.h> // required using-declarations using tudat::simulation_setup; using tudat;
When propagating multiple bodies, the same list of settings may be re-used for multiple bodies. Below,
an example is given for the definition of acceleration_settings
for multiple bodies (Vehicle1
and
Vehicle2
) which are undergoing identical accelerations:
Required Show/Hide
from tudatpy.kernel.numerical_simulation import propagation_setup# Define bodies that are propagated bodies_to_propagate = ["Vehicle1", "Vehicle2"] # Define central bodies central_bodies = ["Earth", "Earth"] # Define accelerations acting on both vehicles accelerations_settings_vehicle = dict( Sun= [ propagation_setup.acceleration.point_mass_gravity() ], Moon= [ propagation_setup.acceleration.point_mass_gravity() ], Earth= [ propagation_setup.acceleration.spherical_harmonic_gravity(5, 5), propagation_setup.acceleration.aerodynamic() ]) # Create global accelerations settings dictionary acceleration_settings = {"Vehicle1": accelerations_settings_vehicle, "Vehicle2": accelerations_settings_vehicle} # Create acceleration models acceleration_models = propagation_setup.create_acceleration_models( bodies, acceleration_settings, bodies_to_propagate, central_bodies)// required include statements #include <tudat/simulation/simulation.h> // required using-declarations using tudat::simulation_setup; using tudat;
Alternatively, separate acceleration settings may be defined for separate bodies and then combined into an
acceleration_settings
variable. Below, an example for such a case is given when propagating the Earth and Moon:
Required Show/Hide
from tudatpy.kernel.numerical_simulation import propagation_setup# Define bodies that are propagated bodies_to_propagate = ["Moon", "Earth"] # Define central bodies central_bodies = ["Sun", "Sun"] # Define accelerations acting on Vehicle accelerations_settings_moon = dict( Sun= [ propagation_setup.acceleration.point_mass_gravity() ], Earth= [ propagation_setup.acceleration.point_mass_gravity() ] ) accelerations_settings_earth = dict( Sun= [ propagation_setup.acceleration.point_mass_gravity() ], Moon= [ propagation_setup.acceleration.point_mass_gravity() ] ) # Create global accelerations settings dictionary. acceleration_settings = {"Moon": accelerations_settings_moon, "Earth": accelerations_settings_earth} # Create acceleration models acceleration_models = propagation_setup.create_acceleration_models( bodies, acceleration_settings, bodies_to_propagate, central_bodies)// required include statements #include <tudat/simulation/simulation.h> // required using-declarations using tudat::simulation_setup; using tudat;