Environment Models
On this page, we provide an overview of the categories of environment models that are available, how to create them, how to access them, as well as some general notes on their usages, typical pitfalls, hints, etc. How to define the settings for an environment model is discussed here. Summarizing, settings for an environment model are stored in a BodySettings
object, a list of which (one for each body) is stored in a BodyListSettings
object. We reiterate that these objects themselves do not have any “functionality”, except providing settings that define how to create the actual (potentially interconnected and interdependent environment models). After creating the environment, you can access any relevant functionality of the environment models (ephemerides, rotation models, etc.) outside the context of a propagation.
Note
For details on how to access the environment during a propagation (for custom models, typically), see this page
In Tudat, the full environment is stored in a SystemOfBodies
object, which in turn stores environment models inside Body
objects (one for each natural or artificial body in your model). From each object representing a body, you can extract each separate environment model (see list below). For instance, to retrieve the Ephemeris
object from the body named Earth
, you can use the following:
bodies = .... // Create system of bodies earth_ephemeris = bodies.get('Earth').ephemeris
Below, we provide an overview of the different types of environment models for which you can define settings, along with links to submodules of environment_setup
in the API documentation, where a comprehensive list of all environment model settings can be found. In addition, we list how to extract the resulting environment model from the Body
objects
Available Model Types
The complete list of available environment model settings can be found on our API documentation. Below is a list with the different categories of models, and a link to the corresponding Tudatpy module:
Aerodynamic coefficients, to be assigned to the
aerodynamic_coefficient_settings
attribute ofBodySettings
.These models provide various ways in which to define aerodynamics force (and if required, moment) coefficients of a body. See the section on aerodynamic coefficients during the propagation concerning a number of points of attention regarding the aerodynamic coefficients, such as the frame in which they are defined, definition of their independent variables, control surfaces, etc.
The resulting model can be extracted from the
Body
object usingaerodynamic_coefficient_interface
, which provides aAerodynamicCoefficientInterface
Atmosphere models, to be assigned to the
atmosphere_settings
attribute ofBodySettings
.These models provide various ways in which to define atmospheric properties of a body. For state propagation, the density will typically be the most important one. However, many of the models here include outputs of temperature, density, etc. as well. Depending on the model, the atmospheric properties may be only altitude-dependent, or fully time- and position-dependent. Note that the atmosphere settings can include wind settings (default: none)
The resulting model can be extracted from the
Body
object usingatmosphere_model
, which provides aAtmosphereModel
Ephemeris models, to be assigned to the
ephemeris_settings
attribute ofBodySettings
.Gravity field models, to be assigned to the
gravity_field_settings
attribute ofBodySettings
.These models provide various ways in which to define the gravitational field of solar system bodies. Note: the mass associated with these gravitational field is the gravitational mass, which does not need to be equal to its inertial mass.
The resulting model can be extracted from the
Body
object extracted usinggravity_field_model
, which provides aGravityFieldModel
(note that gravity field variations are stored inside this object)
Gravity field variation models, to be assigned to the
gravity_field_variation_settings
attribute ofBodySettings
. Note: this attribute is a list, and any number of variation models may be added.These models provide various ways in which to define the time-variability of a body’s (spherical harmonic) gravity field.
Unlike most environment models, the gravity field variations are stored inside the gravity field model, rather than directly in the body object.
Rotation models, to be assigned to the
rotation_model_settings
attribute ofBodySettings
.These models provide various ways in which to define the orientation of a body w.r.t. inertial space, and produces a quaternion/rotation matrix, and angular velocity vector/rotation matrix derivative. Note that Tudat can also produce such models by numerical propagation of the Euler equations (see Rotational Dynamics).
The resulting model can be extracted from the
Body
object extracted usingrotation_model
, which provides aRotationalEphemeris
Shape models, to be assigned to the
shape_settings
attribute ofBodySettings
.These models provide various ways in which to define the exterior of a natural body and is typically used to calculate (for instance) altitude, ground station position, etc. Note: the exterior shape of an artificial body, from which aerodynamic and radiation pressure properties can be evaluated, uses a different interface, which is currently under development
The resulting model can be extracted from the
Body
object usingshape_model
, which provides aShapeModel
Shape deformation models, to be assigned to the
shape_deformation_settings
attribute ofBodySettings
. Note: this attribute is a list, and any number of deformation models may be added.These models provide various ways in which to define time variability of the shape of a body. These are typically relevant for detailed position models of ground stations (note that the models assigned here are global; station-specific models can be assigned to individual stations)
Radiation pressure source and target models, to be assigned to the
radiation_source_settings
andradiation_pressure_target_settings
attribute ofBodySettings
.These models provide various ways in which to define the radiation flux emitted by a body, and a response of a body to incident radiation pressure. More details are provided on a dedicated page
The resulting model can be extracted from the
Body
object extracted usingradiation_pressure_source
andradiation_pressure_target
, which provides aRadiationSourceModel
and aRadiationPressureTargetModel
, respectively.
Rigid body properties, to be assigned to the
rigid_body_settings
attribute ofBodySettings
.This property defines the mass, center of mass and inertia tensor of a body. If the body has a gravity field, corresponding rigid body properties are automatically created (but, defining rigid body properties does not define a gravity field!) Note: If defined manually, the inertia tensor must be provided in the body-fixed frame (the orientation of which is defined by the body’s rotation model), and must not be normalized.
The resulting model can be extracted from the
Body
object extracted usingrigid_body_properties
, which provides aRigidBodyProperties
Ground stations, to be assigned to the
ground_station_settings
attribute ofBodySettings
. Note: this attribute is a list, and any number of stations may be added.These models define ground stations (which includes planetary landers) on a celestial body. Each ground station may have any number of station motion models assigned to it.
The dictionary of all ground stations is extracted from a
Body
object usingground_station_list
, which hasGroundStation
objects as dictionary values
Vehicle systems, currently limited to the vehicle exterior shape, to be assigned to the
vehicle_shape_settings
attribute ofBodySettings
.These models define physical characteristics and hardware systems of the vehicle. This functionality is currently in a preliminary state, and its use in the body settings is limited to the vehicle’s exterior shape.
The resulting model can be extracted from the
Body
object extracted usingsystem_models
, which provides aVehicleSystems