Click or drag to resize

NumericalPropagatorDefinition Class

The definitional object that creates a NumericalPropagator.

It consists of the overall propagation state which represents individual scalar, vector, or custom parameters within IntegrationElements (which are integrated during propagation), and the AuxiliaryElements (which are not). It also contains StateCorrectors which correct the IntegrationElements and their derivatives in between propagation steps, the Epoch of the initial conditions, and the Integrator which integrates the IntegrationElements.

Call CreatePropagator in order to create the defined NumericalPropagator.

Inheritance Hierarchy
SystemObject
  AGI.Foundation.InfrastructureDefinitionalObject
    AGI.Foundation.PropagatorsNumericalPropagatorDefinition

Namespace:  AGI.Foundation.Propagators
Assembly:  AGI.Foundation.Models (in AGI.Foundation.Models.dll) Version: 24.2.419.0 (24.2.419.0)
Syntax
public class NumericalPropagatorDefinition : DefinitionalObject

The NumericalPropagatorDefinition type exposes the following members.

Constructors
Properties
  NameDescription
Public propertyAuxiliaryElements
Gets the collection of AuxiliaryStateElements which together define the auxiliary output from the propagator. These values are computed after each step based on the calculations performed during integration but are not integrated themselves.
Public propertyComputeInitialConditionsOnCreation

Gets or sets a value indicating whether propagators created by this definition will have the initial conditions of their highest derivatives and auxiliary elements computed in their CurrentState just after creation.

This is set to by default, however in some advanced use cases part of the propagation state is parameterized separately from the main propagator and not available for evaluation during the propagation creation process.

If you are receiving exceptions from invalid parameterization during propagator creation setting this to is a possible fix. In that case right after the NumericalPropagator is created its CurrentState will have the correct initial state values that were specified during the initialization of the state elements. However, the indices representing the auxiliary elements, or the highest derivative information of the state elements if applicable, will read 0.0 instead of their actual value. Once propagation begins, or Reset is called the state array will have the correct values.

Public propertyEpoch
Gets or sets the time at which the initial conditions for each PropagationStateElement are defined.
Public propertyIntegrationElements
Gets the collection of IntegrationStateElements which together define the state for the numerical integrator.
Public propertyIntegrator
Gets or sets the NumericalIntegrator to use to integrate the IntegrationElements.
Public propertyIsFrozen
Gets a value indicating whether this object is frozen. A frozen object cannot be modified and an ObjectFrozenException will be thrown if an attempt is made to do so.
(Inherited from DefinitionalObject.)
Public propertyPhaseParameter
Gets or sets a parameter which represents the propagation phase. In general, users should never need to explicitly set this property. It should only be set when multiple NumericalPropagator objects are running in the same EvaluatorGroup, such as when elements of a state require additional instances of a NumericalPropagator inside their implementation in order to produce their values. In such cases, it may be necessary to distinguish between the phase of the exterior propagator and the phase of the interior propagator. In these cases, it is up to the user to ensure that both the NumericalPropagatorDefinition and all of its elements are configured with the same parameter. Otherwise, the definition will throw an exception when creating its propagator.
Public propertyStateCorrectors
Gets the collection of correctors which are called after each step but before values are recorded. The correctors operate on the last step taken to correct the state and its derivatives for any anomalies or constraint conditions encountered during the integration step.
Public propertyStateParameter
Gets or sets a parameter which represents the state during propagation. In general, users should never need to explicitly set this property. It should only be set in cases where elements of a state require additional instances of a NumericalPropagator inside their implementation in order to produce their values. In such cases, it may be necessary to distinguish between the state of the exterior propagator and the state of the interior propagator. In these cases, it is up to the user to ensure that both the NumericalPropagatorDefinition and all of its elements are configured with the same parameter. Otherwise, the definition will throw an exception when creating its propagator.
Top
Methods
  NameDescription
Public methodAdd(AuxiliaryStateElement)
Adds the given auxiliary element to the set of AuxiliaryElements which will be computed during propagation and stored in the raw state output.
Public methodAdd(PropagationStateCorrector)
Adds the given state corrector to the set of StateCorrectors which will operate on some or all of the IntegrationElements during propagation.
Public methodAdd(PropagationStateElement)
Adds the given state element to the set of IntegrationElements to be integrated by the NumericalPropagator.
Protected methodCheckForSameDefinition(DefinitionalObject)
Checks to determine if another instance has the same definition as this instance and returns if it does. Derived classes MUST override this method and check all new fields introduced by the derived class for definitional equivalence. It is NOT necessary to check base class fields because the base class will already have done that. When overriding this method, you should NOT call the base implementation because it will return for all derived-class instances. Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
(Overrides DefinitionalObjectCheckForSameDefinition(DefinitionalObject).)
Protected methodCheckForSameDefinition(NumericalPropagatorDefinition)
Checks to determine if another instance has the same definition as this instance and returns if it does. Derived classes MUST override this method and check all new fields introduced by the derived class for definitional equivalence. It is NOT necessary to check base class fields because the base class will already have done that. When overriding this method, you should NOT call the base implementation because it will return for all derived-class instances. Derived classes should check the type of other to preserve the symmetric nature of IsSameDefinition(Object).
Public methodClone
Clones this object using the specified context.
(Overrides DefinitionalObjectClone(CopyContext).)
Protected methodComputeCurrentDefinitionHashCode
Computes a hash code based on the current properties of this object. Derived classes MUST override this method and compute a hash code that combines: a unique hash code seed, the base implementation result, and the hash codes of all new fields introduced by the derived class which are used in the CheckForSameDefinition(DefinitionalObject) method.
(Overrides DefinitionalObjectComputeCurrentDefinitionHashCode.)
Public methodCreateNumericalPropagatorState
Creates a NumericalPropagatorState based on the current settings of this NumericalPropagatorDefinition.
Public methodCreateNumericalPropagatorState(EvaluatorGroup)
Creates a NumericalPropagatorState based on the current settings of this NumericalPropagatorDefinition.
Public methodCreatePropagator
Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.
Public methodCreatePropagator(Boolean)
Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.
Public methodCreatePropagator(EvaluatorGroup)
Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.
Public methodCreatePropagator(Boolean, EvaluatorGroup)
Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.
Public methodCreatePropagatorWithoutComputingAuxiliaryState

Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.

This method differs from the similar CreatePropagator in that the resulting NumericalPropagator'sCurrentState will have a zeroed auxiliary elements. This can be necessary when working with advanced use cases where part of the propagation state is parameterized separately from the main propagator, and thus unavailable for calculating initial auxiliary elements.

Public methodCreatePropagatorWithoutComputingAuxiliaryState(Boolean)

Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.

This method differs from the similar CreatePropagator(Boolean) in that the resulting NumericalPropagator'sCurrentState will have a zeroed auxiliary elements. This can be necessary when working with advanced use cases where part of the propagation state is parameterized separately from the main propagator, and thus unavailable for calculating initial auxiliary elements.

Public methodCreatePropagatorWithoutComputingAuxiliaryState(EvaluatorGroup)

Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.

This method differs from the similar CreatePropagator(EvaluatorGroup) in that the resulting NumericalPropagator'sCurrentState will have a zeroed auxiliary elements. This can be necessary when working with advanced use cases where part of the propagation state is parameterized separately from the main propagator, and thus unavailable for calculating initial auxiliary elements.

Public methodCreatePropagatorWithoutComputingAuxiliaryState(Boolean, EvaluatorGroup)

Creates an object which can propagate the state over spans of time or manually step the state from one time to the next.

This method differs from the similar CreatePropagator(Boolean, EvaluatorGroup) in that the resulting NumericalPropagator'sCurrentState will have a zeroed auxiliary elements. This can be necessary when working with advanced use cases where part of the propagation state is parameterized separately from the main propagator, and thus unavailable for calculating initial auxiliary elements.

Public methodEnumerateDependencies
Enumerates the dependencies of this object by calling EnumerateT(T) for each object that this object directly depends upon. Derived classes which contain additional dependencies MUST override this method, call the base implementation, and enumerate dependencies introduced by the derived class.
(Overrides DefinitionalObjectEnumerateDependencies(DependencyEnumerator).)
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodFreeze
Freezes this object. Further attempts to modify it will result in an ObjectFrozenException.
(Inherited from DefinitionalObject.)
Protected methodFreezeAggregatedObjects
Called by Freeze to also freeze any objects that are considered to be a part of this object. Derived classes which contain additional aggregated objects MUST override this method, call the base implementation, and freeze aggregated objects introduced by the derived class. The objects that need to be frozen in this method are frequently created in this object's constructor and are not settable via properties.
(Overrides DefinitionalObjectFreezeAggregatedObjects.)
Public methodGetDefinitionHashCode
Gets a hash code representing the definition of this object.
(Inherited from DefinitionalObject.)
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Public methodIsSameDefinition
Determines if this object has the same definition as another object.
(Inherited from DefinitionalObject.)
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodRemove(AuxiliaryStateElement)
Remove the given auxiliary element from the propagation. This will prevent the instance of this auxiliary element from being evaluated during propagated.
Public methodRemove(PropagationStateCorrector)
Remove the given state corrector from the propagation. This will prevent the instance of this corrector from operating on the state elements during propagation.
Public methodRemove(PropagationStateElement)
Remove the given state element from the representation of the state. This will prevent the instance of this state element from being propagated.
Protected methodThrowIfFrozen
Throws ObjectFrozenException if this object IsFrozen. This method should be called from any method or property that modifies this object.
(Inherited from DefinitionalObject.)
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
See Also