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.
An overview of the architecture of the Tudat environment is given in the figure below (TODO).
The environment is defined by a single
SystemOfBodiescontains a list of
Bodyobjects, 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
Bodyobject 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