Environment Setup

General information

In Tudat, the physical environment is defined by a set of bodies, each encapsulated in a Body object. Each body contains a list of properties (gravity field, ephemeris, etc.), which may be interdependent.


The Body object may represent a celestial body or a manmade vehicle. Tudat makes no a priori distinction between the two: the distinction is made by the user when creating the bodies.

The combination of all Body objects is stored in a SystemOfBodies object (typically named simple bodies in the code). This object constitutes “the environment” in Tudat. During the propagation, all the required properties of bodies are extracted from here and combined to evaluate accelerations/torques/guidance/…, and compute the state derivative of the system (see Propagation Setup for setting up a numerical propagation).

Even though the primary role of the environment is in numerical state propagation, it is also used to define properties of celestial bodies in, for instance, (semi-)analytical trajectory design (see Multiple Gravity Assists Transfer).

There are many different types of environment models in Tudat. See Available Model Types for a comprehensive list, and Points of attention for a number of overall considerations on specific types of environment models. The overall architecture of the environment in Tudat is described in more detail on a dedicated page on Environment - Overall Architecture.

Body Creation - Procedure

The Body objects, and the SystemOfBodies object that holds them, are not directly created by the user. Instead, settings for each body are created by a user and stored in a BodySettings object. A set of such objects (one for each body) is in turn stored in a BodyListSettings object, from which the environment is created.

The typical procedure to create the environment is represented in the figure and explained below.

  1. Create body settings: create settings for bodies which have default settings (see Default environment models), customize these settings as desired, and/or manually add settings for bodies without defaults (see Creating the bodies).

  2. Create system of bodies: use the settings above to create a set of Body objects stored in a SystemOfBodies object, automatically resolving any interdependencies (see Creation of system of bodies from settings).

  3. Modify bodies If desired, additional models and bodies can be added afer this Body/SystemOfBodies creation, with limitations on interdepenencies with existing bodies (see Adding bodies to an existing SystemOfBodies).


Body Utilization

Although the Body objects contain all information on the environment, the direct interaction with these objects in a simple numerical propagation is very limited. The bodies interact mostly with the numerical simulation framework, which uses the information on the environment to set up and solve teh equations of motion.

In some cases, in particular when setting up a custom model, a user may need to interact with the simulation environment during the propagation. You can find details on how to extract information (states, orientations, altitude, etc.) from the simulation during the propagation in Interacting with the environment during propagation.

Many properties of the environment, either static quantities (e.g. gravitational parameter) or time-varying quantities (e.g. ephemerides) are also useful to extract outside of the scope of a numerical propagation. This is discussed in more detail in TODO environment_outside_propagation.