Torque Model Setup

Torque models can be created through the factory function create_torque_models().

How to select torques

In Tudat, a torque acting on a body is defined by:

  • the body upon which the torque is acting;

  • the body exerting the torque;

  • the type and settings of the torque.

These settings are defined via factory functions for each torque in the simulation.

See also

A comprehensive list of all available torque models in Tudat and the manner in which to define them is given in Available Torque Models.

These settings are organized in nested key-value containers (std::map<> in C++, dict in Python). In general:

  • key: body undergoing torque

  • value: dictionary with:

This container will be supplied to the create_torque_models() function to create the torque models. This is illustrated in the example below.

Example

In this example, the following torques are exerted on the vehicle:

  • by the Earth:

    • spherical-harmonic gravitational torque (up to order 4 and degree 4)

    • aerodynamic torque

  • by the Sun:

    • second-degree gravitational torque

  • by the Moon:

    • second-degree gravitational torque

The variable torques_settings_vehicle denotes the list of bodies exerting torques and the types of torques, while the variable torque_settings associates this list with the body undergoing the torque. The function create_torque_models() creates the list of models that compute the torques during the propagation.

Required
from tudatpy.kernel.numerical_simulation import propagation_setup
# Define bodies that are propagated
bodies_to_propagate = ["Vehicle"]

# Define torques per each exerting body
torque_settings_vehicle = dict(
    Sun=
    [
        propagation_setup.torque.second_degree_gravitational()
    ],
    Moon=
    [
        propagation_setup.torque.second_degree_gravitational()
    ],
    Earth=
    [
        propagation_setup.torque.spherical_harmonic_gravitational(4, 4),
        propagation_setup.torque.aerodynamic()
    ]
)

# Create global torque settings dictionary
torque_settings = {"Vehicle": torque_settings_vehicle}

# Create torque models
torque_models = propagation_setup.create_torque_models(
    bodies, torque_settings,  bodies_to_propagate )

When propagating multiple bodies (see Multi-body dynamics), the same list of settings may be re-used for multiple bodies. Below, an example is given for the definition of torque_settings for multiple bodies (Vehicle1 and Vehicle2) which are undergoing identical torques:

Required
from tudatpy.kernel.numerical_simulation import propagation_setup
# Define torques per each exerting body
torque_settings_vehicle = dict(
    Sun=
    [
        propagation_setup.torque.second_degree_gravitational()
    ],
    Moon=
    [
        propagation_setup.torque.second_degree_gravitational()
    ],
    Earth=
    [
        propagation_setup.torque.spherical_harmonic_gravitational(4, 4),
        propagation_setup.torque.aerodynamic()
    ]
)

# Create global torque settings dictionary.
torque_settings = {
    "Vehicle1": torque_settings_vehicle,
	"Vehicle2": torque_settings_vehicle
}

Below, an example for such a case is given when propagating the Earth and Moon:

Required
from tudatpy.kernel.numerical_simulation import propagation_setup
# Define selected torques per each exerting body
torque_settings_moon = dict(
    Sun=
    [
        propagation_setup.torque.second_degree_gravitational()
    ],
    Earth=
    [
        propagation_setup.torque.spherical_harmonic_gravitational(4, 4)
    ]
)

# Define selected torques per each exerting body
torque_settings_earth = dict(
    Sun=
    [
        propagation_setup.torque.second_degree_gravitational()
    ],
    Moon=
    [
        propagation_setup.torque.second_degree_gravitational()
    ]
)

# Create global torque settings dictionary and assign the torque selections to respective bodies that act upon
torque_settings = {
    "Moon": torque_settings_moon,
    "Earth": torque_settings_earth
}