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 of BodySettings.

  • Atmosphere models, to be assigned to the atmosphere_settings attribute of BodySettings.

    • 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 using atmosphere_model, which provides a AtmosphereModel

  • Ephemeris models, to be assigned to the ephemeris_settings attribute of BodySettings.

    • These models provide various ways in which to define predetermined (e.g. not coming from a Tudat propagation) translational states of bodies in the solar system

    • The resulting model can be extracted from the Body object using ephemeris, which provides a Ephemeris

  • Gravity field models, to be assigned to the gravity_field_settings attribute of BodySettings.

    • 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 using gravity_field_model, which provides a GravityFieldModel (note that gravity field variations are stored inside this object)

  • Gravity field variation models, to be assigned to the gravity_field_variation_settings attribute of BodySettings. 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 of BodySettings.

    • 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 using rotation_model, which provides a RotationalEphemeris

  • Shape models, to be assigned to the shape_settings attribute of BodySettings.

    • 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 using shape_model, which provides a ShapeModel

  • Shape deformation models, to be assigned to the shape_deformation_settings attribute of BodySettings. 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 and radiation_pressure_target_settings attribute of BodySettings.

    • 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 using radiation_pressure_source and radiation_pressure_target, which provides a RadiationSourceModel and a RadiationPressureTargetModel, respectively.

  • Rigid body properties, to be assigned to the rigid_body_settings attribute of BodySettings.

    • 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 using rigid_body_properties, which provides a RigidBodyProperties

  • Ground stations, to be assigned to the ground_station_settings attribute of BodySettings. 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 using ground_station_list, which has GroundStation objects as dictionary values

  • Vehicle systems, currently limited to the vehicle exterior shape, to be assigned to the vehicle_shape_settings attribute of BodySettings.

    • 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 using system_models, which provides a VehicleSystems