torque¶

Here, you will find a list of all torque models available in Tudat. The functions here all create settings objects for torques that are provided as input to the create_torque_models() function. For more details on how these torques interface with the rest of the Tudat propagation framework, see our user guide page on rotational dynamics

The functions in this submodule create objects of type TorqueSettings or (in case more information than only the type of torque is needed to create the torque), one of its derived classes.

Functions¶

aerodynamic()

Creates the settings for the aerodynamic torque.

spherical_harmonic_gravitational(...)

Creates the settings for the spherical harmonic torque.

full_two_body_spherical_harmonic_gravitational(...)

Creates the settings for the full two-body spherical harmonic gravitational torque.

full_two_body_spherical_harmonic_gravitational_from_coefficient_combinations(...)

Creates the settings for the full two-body spherical harmonic gravitational torque from explicit coefficient combinations.

fourth_degree_full_two_body_gravitational()

Creates the settings for the closed-form degree-two by degree-two figure-figure gravitational torque.

second_degree_gravitational()

Creates the settings for the second-degree gravitational torque.

custom_torque(torque_function[, ...])

No documentation found.

radiation_pressure_torque()

No documentation found.

aerodynamic() tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

Creates the settings for the aerodynamic torque.

Creates the settings for the aerodynamic torque exerted by a body with an atmosphere model and shape model on another body. The body exerting the torque needs to have both an atmosphere model and a shape model defined. Furthermore, the body undergoing the torque needs to have the aerodynamic coefficient interface and its moment coefficients defined. In the case that the aerodynamic coefficients are defined as a function of the vehicle orientation (e.g. angle of attack and sideslip angle), these angles can be manually or automatically defined.

Returns:

Torque settings object.

Return type:

TorqueSettings

Examples

In this example, we define the aerodynamic torque exerted by the Earth on the vehicle.

# Create torque settings dict
torque_settings_vehicle = {}
# Add aerodynamic torque exerted by the Earth on the vehicle
torque_settings_vehicle["Earth"] = [propagation_setup.torque.aerodynamic()]
spherical_harmonic_gravitational(maximum_degree: int, maximum_order: int) tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

Creates the settings for the spherical harmonic torque.

Torque exerted by a point mass on a body with an arbitrary degree/order spherical harmonics mass distribution. The body exerting the torque only needs to have a gravitational model defined (point-mass or spherical harmonic), while the body undergoing the torque needs to have a spherical harmonic gravity field defined.

Parameters:
  • maximum_degree (int) – Maximum degree of the spherical harmonic expansion.

  • maximum_order (int) – Maximum order of the spherical harmonic expansion.

Returns:

Torque settings object.

Return type:

TorqueSettings

Examples

In this example, we define the spherical harmonic gravitational torque (up to degree 4 and order 4) exerted by the Earth on the vehicle.

# Create torque settings dict
torque_settings_vehicle = {}
# Add aerodynamic torque exerted by the Earth on the vehicle
torque_settings_vehicle["Earth"] = [propagation_setup.torque.spherical_harmonic_gravitational(4, 4)]
full_two_body_spherical_harmonic_gravitational(maximum_degree_body_undergoing_torque: int, maximum_order_body_undergoing_torque: int, maximum_degree_body_exerting_torque: int, maximum_order_body_exerting_torque: int) tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

Creates the settings for the full two-body spherical harmonic gravitational torque.

Creates settings for the torque on one extended body due to the full two-body spherical harmonic interaction with another extended body. The model includes figure-figure couplings between spherical harmonic coefficients of both bodies, following Dirkx et al. [8]. The corresponding acceleration settings use the same degree/order limits.

The torque is obtained from the same mutual potential and effective-coefficient construction used by full_two_body_spherical_harmonic_gravity(). In the notation of Dirkx et al. [8], for body 2 expressed in the frame \(F_1\) of body 1, the torque follows schematically from the angular-momentum operator applied to the potential:

\[\mathbf{M}^{F_1}_{2} = -\hat{\mathcal{J}}\left(V_{1-2}\right)\]
\[\mathbf{M}^{F_1}_{2} = -G M_1 M_2 \sum_{l_1=0}^{\infty}\sum_{m_1=-l_1}^{l_1} \sum_{l_2=0}^{\infty}\sum_{m_2=-l_2}^{l_2} \hat{\mathcal{J}}\left(\bar{\mathcal{M}}^{2,F_1}_{l_2,m_2}\right) \hat{u}^{l_1,m_1}_{l_2,m_2} \frac{Y_{l_1+l_2,m_1+m_2}(\vartheta,\varphi)} {r^{l_1+l_2+1}}\]

where \(\mathbf{M}^{F_1}_{2}\) is the torque associated with the rotation of body 2 coefficients expressed in \(F_1\), \(\hat{\mathcal{J}}\) is the angular-momentum operator, \(\bar{\mathcal{M}}^{2,F_1}_{l_2,m_2}\) is the complex normalized spherical harmonic coefficient of body 2 after transformation to \(F_1\), \(\hat{u}^{l_1,m_1}_{l_2,m_2}\) contains the remaining mass, radius, normalization, and body-1 coefficient factors, \(Y_{lm}\) is the spherical harmonic basis function, and \(r\), \(\vartheta\), and \(\varphi\) define the relative position. The transformed coefficient derivative is computed from the Wigner-D representation:

\[\hat{\mathcal{J}}\left(\bar{\mathcal{M}}^{2,F_1}_{l_2,m_2}\right) = \sum_{k_2=-l_2}^{l_2} \bar{\nu}_{lmk}\hat{\mathcal{J}}\left(D^{l_2}_{m_2,k_2}\right) \bar{\mathcal{M}}^{2,F_2}_{l_2,k_2}\]

where \(D^{l_2}_{m_2,k_2}\) is a Wigner D-matrix entry, \(\bar{\nu}_{lmk}\) is the associated normalization/sign factor, and \(\bar{\mathcal{M}}^{2,F_2}_{l_2,k_2}\) is the original body-2 coefficient. See Dirkx et al. [8] for the complete coefficient definitions and sign conventions.

Algorithmically, the model:

  • uses the same selected coefficient-pair interactions as the full two-body acceleration;

  • transforms body-2 coefficients into the frame of body 1;

  • evaluates angular-momentum-operator derivatives of the transformed coefficients through the Wigner-D cache;

  • sums the selected torque contributions consistently with the effective potential terms;

  • returns the requested physical torque in the propagation setup convention.

Parameters:
  • maximum_degree_body_undergoing_torque (int) – Maximum spherical harmonic degree of the body undergoing the torque.

  • maximum_order_body_undergoing_torque (int) – Maximum spherical harmonic order of the body undergoing the torque.

  • maximum_degree_body_exerting_torque (int) – Maximum spherical harmonic degree of the body exerting the torque.

  • maximum_order_body_exerting_torque (int) – Maximum spherical harmonic order of the body exerting the torque.

Returns:

Full two-body spherical harmonic torque settings object.

Return type:

FullTwoBodySphericalHarmonicTorqueSettings

full_two_body_spherical_harmonic_gravitational_from_coefficient_combinations(coefficient_combinations: list[tuple[int, int, int, int]]) tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

Creates the settings for the full two-body spherical harmonic gravitational torque from explicit coefficient combinations.

Creates settings for the full two-body spherical harmonic gravitational torque using an explicit list of coefficient combinations. Each entry in coefficient_combinations is a tuple (degree_body_undergoing_torque, order_body_undergoing_torque, degree_body_exerting_torque, order_body_exerting_torque). Only the requested coefficient-pair interactions are included in the model. This is the explicit-combination counterpart of full_two_body_spherical_harmonic_gravitational(); see that function and full_two_body_spherical_harmonic_gravity() for the governing potential and torque formulation.

Parameters:

coefficient_combinations (list[tuple[int, int, int, int]]) – Coefficient combinations retained in the full two-body interaction.

Returns:

Full two-body spherical harmonic torque settings object.

Return type:

FullTwoBodySphericalHarmonicTorqueSettings

fourth_degree_full_two_body_gravitational() tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

Creates the settings for the closed-form degree-two by degree-two figure-figure gravitational torque.

Creates settings for the fourth-degree full two-body gravitational torque generated by the interaction of the degree-two gravity fields of two extended bodies. This is a specialized closed-form model for the degree-two by degree-two figure-figure torque based on the fourth-order mutual potential and torque formulation of Schutz et al. [24].

In compact tensor notation equivalent to the degree-two by degree-two part of the model, define the symmetric, trace-free gravity-field tensor \(\mathbf{K}_i\) of body \(i\) from its unnormalized degree-two coefficients as

\[\begin{split}\mathbf{K}_i = \begin{bmatrix} C_{20}/3 - 2C_{22} & -2S_{22} & -C_{21}\\ -2S_{22} & C_{20}/3 + 2C_{22} & -S_{21}\\ -C_{21} & -S_{21} & -2C_{20}/3 \end{bmatrix}_i\end{split}\]

With \(\mathbf{n}=\mathbf{r}/r\), \(\mathbf{r}\) the position of body 2 relative to body 1 in the body-1-fixed frame, and body-2 quantities rotated into that same frame, define \(a=\mathbf{n}^T\mathbf{K}_1\mathbf{n}\), \(b=\mathbf{n}^T\mathbf{K}_2\mathbf{n}\), \(c=\mathbf{n}^T\mathbf{K}_1\mathbf{K}_2\mathbf{n}\), and \(d=\mathrm{tr}(\mathbf{K}_1\mathbf{K}_2)\). The degree-two by degree-two figure-figure part of the mutual potential can then be written as

\[V_{22} = \frac{G M_1 M_2 R_1^2 R_2^2}{4r^5} \left(105ab-60c+6d\right)\]

and the torque on body 1 can be written as

\[\mathbf{T}_1 = -\frac{G M_1 M_2 R_1^2 R_2^2}{2r^5} \mathrm{vex}\left(\mathbf{K}_1\mathbf{H}_1-\mathbf{H}_1\mathbf{K}_1\right)\]

with

\[\mathbf{H}_1 = 105b\mathbf{n}\mathbf{n}^T -30\left(\mathbf{K}_2\mathbf{n}\mathbf{n}^T+ \mathbf{n}\mathbf{n}^T\mathbf{K}_2\right) +6\mathbf{K}_2\]

Here \(\mathrm{vex}(\mathbf{S})=[S_{32},S_{13},S_{21}]^T\) maps a skew-symmetric matrix to its axial vector. The implemented model evaluates the corresponding closed-form Schutz tensor-component expression in the body-1-fixed frame.

Returns:

Fourth-degree full two-body gravitational torque settings object.

Return type:

FourthDegreeFullTwoBodyGravitationalTorqueSettings

second_degree_gravitational() tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

Creates the settings for the second-degree gravitational torque.

Torque exerted by a point mass on a body with a degree two spherical harmonics mass distribution. A degree two spherical harmonics mass distribution can be represented by an inertia tensor; thus, for this torque model, the body undergoing the torque needs to have an inertia tensor defined. The body exerting the torque only needs to have a gravitational model defined (either point-mass or spherical harmonics).

Returns:

Torque settings object.

Return type:

TorqueSettings

Examples

In this example, we define the second degree gravitational torque exerted by the Earth on the vehicle.

# Create torque settings dict
torque_settings_vehicle = {}
# Add aerodynamic torque exerted by the Earth on the vehicle
torque_settings_vehicle["Earth"] = [propagation_setup.torque.second_degree_gravitational()]
custom_torque(torque_function: Callable[[float], numpy.ndarray[numpy.float64[3, 1]]], scaling_function: Callable[[float], float] = None) tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

No documentation found.

radiation_pressure_torque() tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings¶

No documentation found.

Enumerations¶

AvailableTorque

Enumeration of available torque types.

class AvailableTorque¶

Bases: pybind11_object

Enumeration of available torque types.

Enumeration of torque types supported by tudat.

Members:

torque_free_type :

underfined_type : No documentation found.

second_order_gravitational_type : No documentation found.

aerodynamic_type : No documentation found.

radiation_pressure_torque_type : No documentation found.

spherical_harmonic_gravitational_type : No documentation found.

inertial_type : No documentation found.

dissipative_type : No documentation found.

full_two_body_spherical_harmonic_gravitational_type : No documentation found.

fourth_degree_full_two_body_gravitational_type : No documentation found.

AvailableTorque.name -> str

read-only

Classes¶

TorqueSettings

Functional base class to define settings for torques.

SphericalHarmonicTorqueSettings

TorqueSettings-derived class to define settings for torques caused by spherical harmonic gravity.

FullTwoBodySphericalHarmonicTorqueSettings

TorqueSettings-derived class to define settings for full two-body spherical harmonic gravitational torques.

FourthDegreeFullTwoBodyGravitationalTorqueSettings

TorqueSettings-derived class to define settings for the closed-form degree-two by degree-two gravitational torque.

class TorqueSettings¶

Bases: pybind11_object

Functional base class to define settings for torques.

This is a functional base class to define settings for torques that require no information in addition to their type. Classes defining settings for torque models requiring additional information must be derived from this class. Bodies exerting and undergoing torque are set outside of this class. This class can be used for the easy setup of torque models (see createTorqueModels.h), but users may also chose to do so manually. (Derived) Class members are all public, for ease of access and modification.

static load_from_binary(path: str) object¶

Deserialize this object from binary. Python pickle uses the same serialization schema. Compatibility with other builds is not guaranteed. Only load trusted files.

static load_from_json(path: str) object¶

Deserialize this object from JSON. Python pickle uses the same serialization schema. Compatibility with other builds is not guaranteed. Only load trusted files.

save_to_binary(self: tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings, path: str) None¶

Serialize this object in binary form. Python pickle uses the same serialization schema. Compatibility with other builds is not guaranteed.

save_to_json(self: tudatpy.kernel.dynamics.propagation_setup.torque.TorqueSettings, path: str) None¶

Serialize this object to JSON. Python pickle uses the same serialization schema. Compatibility with other builds is not guaranteed.

class SphericalHarmonicTorqueSettings¶

Bases: TorqueSettings

TorqueSettings-derived class to define settings for torques caused by spherical harmonic gravity.

TorqueSettings-derived class to define settings for torques caused by spherical harmonic gravity.

class FullTwoBodySphericalHarmonicTorqueSettings¶

Bases: TorqueSettings

TorqueSettings-derived class to define settings for full two-body spherical harmonic gravitational torques.

TorqueSettings-derived class for torques resulting from the full two-body spherical harmonic interaction, including figure-figure couplings between the gravity-field coefficients of both bodies, following Dirkx et al. [8].

class FourthDegreeFullTwoBodyGravitationalTorqueSettings¶

Bases: TorqueSettings

TorqueSettings-derived class to define settings for the closed-form degree-two by degree-two gravitational torque.

TorqueSettings-derived class for the fourth-degree figure-figure gravitational torque generated by the interaction of the degree-two gravity fields of two extended bodies.