Environment - Overall Architecture

On this page, we give an overview of the top-level software architecture of the environment models in Tudat, primarily the SystemOfBodies class that defines a set of bodies, the Body class that defines a single body, and the various classes that define the specific environment models. Since the underlying code is written in C++, in various places we will limit ourselves to the C++ implementation. Wherever possible, we will provide links to the Tudatpy API where the classes/functions that are discussed are also exposed to Python.

Top-level architecture

An overview of the architecture of the Tudat environment is given in the figure below (TODO).

  • The environment is defined by a single SystemOfBodies object.

  • The SystemOfBodies contains a list of Body objects, each of which represents a single natural or artificial body, and contains all of this body’s properties. In the C++ code, each body is stored as a shared_ptr< Body >. Every body is assigned a unique name by which it can be retrieved. A body can be extracted using the get() functionn.

  • Each Body object contains a number of environment models (see Available Model Types for a complete list). By default, each of these objects is initialized as a nullptr, and is only assigned when specified during the creation of the body (Creation of system of bodies from settings), or when added after the creation of the body (Addition of properties to a body).

As discussed here, the properties in the environment get updated to the current time and state of the numerical integration at the start of every function evaluation. Only those properties that are relevant for the propagation being performed are updated. Interaction with the environment during the propagation is described in more detail here

Interdependencies of environment models