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.

For a single body, the user-specified settings are organized in nested dictionaries dict[str,dict[str,list[TorqueSettings]]], with the first str denoting the body undergoing acceleration, the second str denoting the body exerting the acceleration, and the list of TorqueSettings objects is created using the functions in the torque module.

This nested dictionary 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.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.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.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
}