propagation#

Functionalities and utilities of propagation objects.

This module provides functionalities for propagation settings objects. It also contains some utility functions that extract specific quantities from propagation settings and body objects. Note that the classes in this module are rarely created manually, but are instead created by the functionality in the propagation_setup module.

Functions#

get_state_of_bodies(bodies_to_propagate, ...)

Function to get the states of a set of bodies, with respect to some set of central bodies, at the requested time.

combine_initial_states(...)

Function to retrieve the initial state for a list of propagator settings.

get_state_of_bodies(bodies_to_propagate: List[str], central_bodies: List[str], body_system: tudatpy.kernel.numerical_simulation.environment.SystemOfBodies, initial_time: float) numpy.ndarray[numpy.float64[m, 1]]#

Function to get the states of a set of bodies, with respect to some set of central bodies, at the requested time.

Function to get the states of a set of bodies, with respect to some set of central bodies, at the requested time.

Parameters:
  • bodies_to_propagate (body_system) – List of bodies to be propagated.

  • central_bodies (list[str]) – List of central bodies, each referred to a body being propagated (in the same order).

  • bodies_to_propagate – System of bodies used in the propagation.

  • initial_time (float) – Initial time of the propagation.

Returns:

Time at which the states should be retrieved.

Return type:

numpy.ndarray

combine_initial_states(propagator_settings_per_type: Dict[tudat::propagators::IntegratedStateType, List[tudat::propagators::SingleArcPropagatorSettings<double, double>]]) numpy.ndarray[numpy.float64[m, 1]]#

Function to retrieve the initial state for a list of propagator settings.

Function to retrieve the initial state for a list of propagator settings. This way, the initial state for different quantities to be propagated (e.g., translational state, rotational state, mass) are retrieved and organized in a single container.

Parameters:

propagator_settings_per_type (dict) – Propagator settings where the type of propagation is reported as key and the respective list of propagator settings as value.

Returns:

Vector of initial states, sorted in order of IntegratedStateType, and then in the order of the vector of SingleArcPropagatorSettings of given type.

Return type:

numpy.ndarray

Enumerations#

PropagationTerminationReason

Enumeration of types of termination of propagation.

class PropagationTerminationReason#

Enumeration of types of termination of propagation.

Members:

propagation_never_run

unknown_reason

termination_condition_reached

runtime_error_caught_in_propagation

nan_or_inf_detected_in_state

property name#

Classes#

SimulationResults

Base class for objects that store all results of a numerical propagation.

SingleArcSimulationResults

Class that stores all the results (including logging data) of a single-arc propagation

PropagationTerminationDetails

Object that provides information on the reason for the termination of the propagation.

class SimulationResults#

Base class for objects that store all results of a numerical propagation. Derived class are implemented for single-, multi- and hybrid-arc propagation of botj dynamics and variational equations

property dependent_variable_interface#

No documentation found.

class SingleArcSimulationResults#

Class that stores all the results (including logging data) of a single-arc propagation

property cumulative_computation_time_history#

read-only

History of cumulative computation time in seconds needed during the propagation as key-value pairs. At each epoch (key) the computation time (value) in seconds is the total computation time used up to and including that time step. This includes the total time up to and including the current time step, since the beginning of the (single-arc) propagation.

Type:

dict[float, float]

property cumulative_number_of_function_evaluations_history#

No documentation found.

property dependent_variable_history#

read-only

Dependent variables computed during the propagation as key-value pairs. The vector of all dependent variables concatenated into a single vector as value, with the epoch as key. They order of the concatenated dependent variables in a single value is provided by the dependent_variable_ids attribute of this object.

Type:

dict[float, numpy.ndarray]

property dependent_variable_ids#

read-only

Key-value container with the starting entry of the dependent variables saved (key), along with associated ID (value).

Type:

dict[[int,int], str]

property initial_and_final_times#

No documentation found.

property integration_completed_successfully#

read-only

Boolean defining whether the last propagation was finished successfully, as defined by the termination conditions, or if it was terminated prematurely (for instance due to an exception, or an Inf/NaN state entry being detected).

Type:

bool

property processed_state_ids#

read-only

Key-value container with the starting entry of the states (key), along with associated ID (value).

Type:

dict[[int,int] str]

property propagated_state_ids#

read-only

Key-value container with the starting entry of the states (key), along with associated ID (value).

Type:

dict[[int,int] str]

property propagated_state_vector_length#

No documentation found.

property propagation_is_performed#

No documentation found.

property solution_is_cleared#

No documentation found.

property state_history#

read-only

Numerical solution of the equations of motion as key-value pairs. The key denotes the epoch. The value contains the numerically calculated state at this epoch. For this function, the states are always converted to so-called ‘processed’ formulations (e.g. Cartesian states for translational dynamics), see here for details. For the history of the states that were actually propagated, use the unprocessed_state_history.

Note

The propagated state at each epoch contains the state types in the following order: Translational ( T ), Rotational ( R ), Mass ( M ), and Custom ( C ). When propagating two bodies, an example of what the output state would look like is for instance: [ T Body 1, T Body 2, R Body 1, R Body 2, M Body 1, M Body 2 ] The specifics can be retrieved using the state_ids attribute of this class

Note

For propagation of translational dynamics using cowell propagator, the conventional and propagated coordinates are identical.

Type:

dict[float, numpy.ndarray]

property termination_details#

read-only

Object describing the details of the event that triggered the termination of the last propagation.

Type:

PropagationTerminationDetails

property total_computation_time#

No documentation found.

property total_number_of_function_evaluations#

No documentation found.

property unprocessed_state_history#

read-only

Numerical solution of the equations of motion as key-value pairs, without any processing applied. The key denotes the epoch. The value contains the numerically calculated state at this epoch. This attribute contains the states of the propagated bodies expressed in the “raw” form in which the propagation took place. For instance, when using a Gauss-Kepler propagation scheme, this attribute will contain the numerically propagated Keplerian elements at each time epoch

Type:

dict[float, numpy.ndarray]

class PropagationTerminationDetails#

Object that provides information on the reason for the termination of the propagation.

property terminated_on_exact_condition#

Boolean defining whether the propagation was terminated on an exact final condition, or once the propagation went past the determined final condition. The choice of behaviour is defined by the termination settings provided as input to the Simulator object. This variable only has a meaningful definition if the termination_reason has value termination_condition_reached

Type:

bool

property termination_reason#

Enum defining the reason the propagation was terminated

Type:

PropagationTerminationReason