public class StateTransitionMatrix extends PropagationStateElement
An extended state transition matrix, if consider parameters are not used then it functions as a normal state transition matrix: mapping the value of the state parameters from one time to another time.
The state transition matrix represents the transformation
from the state at one time to the state at another time. This can be used as an alternative to propagating a state in time
with NumericalPropagator
, but is more often used in order to find the time-varying covariance of the state. This is
because the construction of a StateTransitionMatrix
entails the linearization of the state, and
in most cases calculating the derivatives of the state transition matrix takes as long or longer as calculating
the derivatives of the state.
To find the covariance of a state over time a StateTransitionMatrix
is propagated with a NumericalPropagator
and the resulting data is used to create the covariance information for the same period using
StateTransitionMatrix.populateCovarianceCollection(agi.foundation.coordinates.Matrix, agi.foundation.DateMotionCollection1<agi.foundation.coordinates.Matrix>, agi.foundation.propagators.TransitionType)
.
If consider parameters are used, then this class represents information in the following form:
If the cumulative dimension of the state elements is N, and the cumulative dimension of the consider parameters is M, then Φ is an ordinary state transition matrix: an NxN matrix equal to the partials of the state at time tj with respect to the state at time ti. Θ is an NxM matrix equal to the partials of the state at time tj with respect to the consider parameters at time ti, and the zero and identity matrices are size MxN and MxM, respectively. The complete consider covariance matrix is a square matrix with a dimension of N+M.
Modifier | Constructor and Description |
---|---|
|
StateTransitionMatrix()
Initializes a new instance.
|
protected |
StateTransitionMatrix(StateTransitionMatrix existingInstance,
CopyContext context)
Initializes a new instance as a copy of an existing instance.
|
Modifier and Type | Method and Description |
---|---|
void |
addConsiderParameter(IPartialDifferentiable considerParameter)
Adds a consider parameter to the
StateTransitionMatrix . |
void |
addStateParameter(IPartialDifferentiable stateParameter,
IPartialDifferentiable stateDerivative)
Adds a state parameter to the
StateTransitionMatrix . |
protected boolean |
checkForSameDefinition(PropagationStateElement other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected boolean |
checkForSameDefinition(StateTransitionMatrix other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
Object |
clone(CopyContext context)
Clones this object using the specified context.
|
protected int |
computeCurrentDefinitionHashCode()
Computes a hash code based on the current properties of this object.
|
void |
enumerateDependencies(DependencyEnumerator enumerator)
Enumerates the dependencies of this object by calling
DependencyEnumerator#enumerate(T) for each object that this object directly depends upon. |
protected void |
freezeAggregatedObjects()
Called by
DefinitionalObject.freeze() to also freeze any objects that are considered to be a part of this object. |
int |
getConsiderDimension()
Gets the summed dimension of all of the consider parameters.
|
IPartialDifferentiable |
getConsiderParameter(int index)
Gets the consider parameter at the specified index which has been added to this
StateTransitionMatrix . |
PropagationStateElementConverter |
getConverter(EvaluatorGroup group,
Motion1<int[]> stateInputIndices)
Gets an instance of an output type which can convert the output of propagation
back into the native type of this state element.
|
PropagationStateElementEvaluator |
getDerivatives(EvaluatorGroup group)
This is used by the
NumericalPropagatorDefinition to obtain an instance of a state element evaluator
that can compute the derivatives of this element of the state during propagation. |
int |
getDimension()
Gets the number of parameters (per
Order (get )) within this element. |
Matrix |
getInitialConsiderTransitionMatrix()
Gets the optional user-specified initial consider transition matrix.
|
Matrix |
getInitialStateTransitionMatrix()
Gets the optional user-specified initial state transition matrix.
|
DynamicMatrix |
getIntegrationDynamicMatrix()
Gets a
DynamicMatrix which is parameterized on the value of the
StateTransitionMatrix during integration. |
int |
getLinearDimension()
Gets the linear dimension of the
StateTransitionMatrix . |
int |
getNumberOfConsiderParameters()
Gets the number of consider parameters that have been added to this
StateTransitionMatrix . |
int |
getNumberOfStateParameters()
Gets the number of state parameters and derivatives that have been added to this
StateTransitionMatrix . |
int |
getOrder()
Gets the order of the differential equation corresponding to this element.
|
IPartialDifferentiable |
getStateDerivative(int index)
Gets the state derivative at the specified index which has been added to this
StateTransitionMatrix . |
int |
getStateDimension()
Gets the summed dimension of all of the state parameters.
|
PropagationStateParameter |
getStateParameter()
Gets a parameter which represents the state during propagation.
|
IPartialDifferentiable |
getStateParameter(int index)
Gets the state parameter at the specified index which has been added to this
StateTransitionMatrix . |
IUpdatePriorToStep |
getStateUpdater(EvaluatorGroup group)
Creates an object that will update the state of the
StateTransitionMatrix in between propagation steps, if necessary. |
TransitionType |
getTransitionType()
Gets whether this
StateTransitionMatrix is operating in epoch or piecewise mode. |
int |
indexOfConsiderParameter(IPartialDifferentiable considerParameter)
Searches for the specified
considerParameter and returns the index which
can be used to access it via StateTransitionMatrix.getConsiderParameter(int) or StateTransitionMatrix.removeConsiderParameterAt(int) . |
int |
indexOfStateDerivative(IPartialDifferentiable stateDerivative)
Searches for the specified
stateDerivative and returns the index which
can be used to access it via StateTransitionMatrix.getStateDerivative(int) or StateTransitionMatrix.removeStateParameterAt(int) . |
int |
indexOfStateParameter(IPartialDifferentiable stateParameter)
Searches for the specified
stateParameter and returns the index which
can be used to access it via StateTransitionMatrix.getStateParameter(int) or StateTransitionMatrix.removeStateParameterAt(int) . |
static DateMotionCollection1<Matrix> |
populateCovarianceCollection(Matrix initialCovariance,
DateMotionCollection1<Matrix> stateTransitionMatrices,
TransitionType transitionType)
Transforms an initial covariance matrix forward in time using the given collection of
state transition matrices . |
void |
removeConsiderParameterAt(int index)
Removes the consider parameter at the given
index . |
void |
removeStateParameterAt(int index)
Removes the state parameter at the given
index , as well as its derivative. |
void |
setInitialConsiderTransitionMatrix(Matrix value)
Sets the optional user-specified initial consider transition matrix.
|
void |
setInitialStateTransitionMatrix(Matrix value)
Sets the optional user-specified initial state transition matrix.
|
void |
setStateParameter(PropagationStateParameter value)
Sets a parameter which represents the state during propagation.
|
void |
setTransitionType(TransitionType value)
Sets whether this
StateTransitionMatrix is operating in epoch or piecewise mode. |
checkForSameDefinition, getIdentification, getIncludeHighestDerivativeInOutput, setIdentification, setIncludeHighestDerivativeInOutput
areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, dictionaryItemsAreSameDefinition, freeze, getCollectionHashCode, getCollectionHashCode, getCollectionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDictionaryHashCode, getIsFrozen, isSameDefinition, throwIfFrozen
public StateTransitionMatrix()
protected StateTransitionMatrix(@Nonnull StateTransitionMatrix existingInstance, @Nonnull CopyContext context)
See ICloneWithContext.clone(CopyContext)
for more information about how to implement this constructor
in a derived class.
existingInstance
- The existing instance to copy.context
- A CopyContext
that controls the depth of the copy.ArgumentNullException
- Thrown when existingInstance
or context
is null
.public Object clone(CopyContext context)
This method should be implemented to call a copy constructor on the class of the
object being cloned. The copy constructor should take the CopyContext
as a parameter
in addition to the existing instance to copy. The copy constructor should first call
CopyContext.addObjectMapping(T, T)
to identify the newly constructed instance
as a copy of the existing instance. It should then copy all fields, using
CopyContext.updateReference(T)
to copy any reference fields.
A typical implementation of ICloneWithContext
:
public static class MyClass implements ICloneWithContext {
public MyClass(MyClass existingInstance, CopyContext context) {
context.addObjectMapping(existingInstance, this);
someReference = context.updateReference(existingInstance.someReference);
}
@Override
public final Object clone(CopyContext context) {
return new MyClass(this, context);
}
private Object someReference;
}
In general, all fields that are reference types should be copied with a call to
CopyContext.updateReference(T)
. There are a couple of exceptions:
If one of these exceptions applies, the CopyContext
should be given an opportunity
to update the reference before the reference is copied explicitly. Use
CopyContext.updateReference(T)
to update the reference. If CopyContext.updateReference(T)
returns
the original object, indicating that the context does not have a replacement registered,
then copy the object manually by invoking a Clone method, a copy constructor, or by manually
constructing a new instance and copying the values.
alwaysCopy = context.updateReference(existingInstance.alwaysCopy);
if (existingInstance.alwaysCopy != null && alwaysCopy == existingInstance.alwaysCopy) {
alwaysCopy = (AlwaysCopy) existingInstance.alwaysCopy.clone(context);
}
If you are implementing an evaluator (a class that implements IEvaluator
), the
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext)
method shares some responsibilities with the
copy context constructor. Code duplication can be avoided by doing the following:
CopyContext.updateReference(T)
. You should still call CopyContext.updateReference(T)
on any references to
non-evaluators.
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext)
as the last line in the constructor and pass it the
same CopyContext
passed to the constructor.
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext)
as normal. See the reference documentation for
IEvaluator.updateEvaluatorReferences(agi.foundation.infrastructure.CopyContext)
for more information on implementing that method.
public MyClass(MyClass existingInstance, CopyContext context) {
super(existingInstance, context);
someReference = context.updateReference(existingInstance.someReference);
evaluatorReference = existingInstance.evaluatorReference;
updateEvaluatorReferences(context);
}
@Override
public void updateEvaluatorReferences(CopyContext context) {
evaluatorReference = context.updateReference(evaluatorReference);
}
@Override
public Object clone(CopyContext context) {
return new MyClass(this, context);
}
private Object someReference;
private IEvaluator evaluatorReference;
clone
in interface ICloneWithContext
clone
in class DefinitionalObject
context
- The context to use to perform the copy.protected final boolean checkForSameDefinition(PropagationStateElement other)
true
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 false
for all derived-class instances.
Derived classes should check the type of other
to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object)
.checkForSameDefinition
in class PropagationStateElement
other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected boolean checkForSameDefinition(StateTransitionMatrix other)
true
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 false
for all derived-class instances.
Derived classes should check the type of other
to preserve the symmetric nature of IEquatableDefinition.isSameDefinition(java.lang.Object)
.other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected int computeCurrentDefinitionHashCode()
StateTransitionMatrix.checkForSameDefinition(agi.foundation.propagators.advanced.PropagationStateElement)
method.computeCurrentDefinitionHashCode
in class PropagationStateElement
public void enumerateDependencies(DependencyEnumerator enumerator)
DependencyEnumerator#enumerate(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.enumerateDependencies
in interface IEnumerateDependencies
enumerateDependencies
in class DefinitionalObject
enumerator
- The enumerator that is informed of the dependencies of this object.protected void freezeAggregatedObjects()
DefinitionalObject.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.freezeAggregatedObjects
in class DefinitionalObject
public final void addStateParameter(@Nonnull IPartialDifferentiable stateParameter, @Nonnull IPartialDifferentiable stateDerivative)
Adds a state parameter to the StateTransitionMatrix
. The state parameters added here
make up the state represented by the state transition matrix. The stateDerivative
of the stateParameter
is
needed in order to calculate the derivative of the state transition matrix so that it can be integrated.
stateParameter
- The state parameter to add to those tracked in the StateTransitionMatrix
.stateDerivative
- The derivative of the given state parameter.StateTransitionMatrix.getStateParameter(int)
,
StateTransitionMatrix.indexOfStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getStateDerivative(int)
,
StateTransitionMatrix.indexOfStateDerivative(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeStateParameterAt(int)
,
StateTransitionMatrix.getNumberOfStateParameters()
public final IPartialDifferentiable getStateParameter(int index)
StateTransitionMatrix
.index
- The index of the state parameter to retrieve.StateTransitionMatrix.addStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable, agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.indexOfStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeStateParameterAt(int)
,
StateTransitionMatrix.getNumberOfStateParameters()
public final int indexOfStateParameter(IPartialDifferentiable stateParameter)
stateParameter
and returns the index which
can be used to access it via StateTransitionMatrix.getStateParameter(int)
or StateTransitionMatrix.removeStateParameterAt(int)
.stateParameter
- The state parameter to search for.stateParameter
if found; otherwise -1.StateTransitionMatrix.addStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable, agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getStateParameter(int)
,
StateTransitionMatrix.removeStateParameterAt(int)
,
StateTransitionMatrix.getNumberOfStateParameters()
public final void removeStateParameterAt(int index)
index
, as well as its derivative.index
- The index of the state parameter and derivative to remove.StateTransitionMatrix.addStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable, agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getStateParameter(int)
,
StateTransitionMatrix.indexOfStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.indexOfStateDerivative(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getNumberOfStateParameters()
public final IPartialDifferentiable getStateDerivative(int index)
StateTransitionMatrix
.index
- The index of the state derivative to retrieve.StateTransitionMatrix.addStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable, agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.indexOfStateDerivative(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeStateParameterAt(int)
,
StateTransitionMatrix.getNumberOfStateParameters()
public final int indexOfStateDerivative(IPartialDifferentiable stateDerivative)
stateDerivative
and returns the index which
can be used to access it via StateTransitionMatrix.getStateDerivative(int)
or StateTransitionMatrix.removeStateParameterAt(int)
.stateDerivative
- The state derivative to search for.stateDerivative
if found; otherwise -1.StateTransitionMatrix.addStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable, agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getStateDerivative(int)
,
StateTransitionMatrix.removeStateParameterAt(int)
,
StateTransitionMatrix.getNumberOfStateParameters()
public final void addConsiderParameter(@Nonnull IPartialDifferentiable considerParameter)
StateTransitionMatrix
. Consider parameters can be used when calculating covariance
for a state parameter. The transitions are not actually calculated for a consider parameter, however the values of the consider
parameter do affect those of the state parameters. For example, if you weren't interested in examining how the uncertainty of
the coefficient of drag evolved over time, but were interested in how it's uncertainty affected the uncertainty of the state
parameters, then you would add it as a consider parameter.considerParameter
- The consider parameter to add to those tracked in the StateTransitionMatrix
.StateTransitionMatrix.getConsiderParameter(int)
,
StateTransitionMatrix.indexOfConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeConsiderParameterAt(int)
,
StateTransitionMatrix.getNumberOfConsiderParameters()
public final IPartialDifferentiable getConsiderParameter(int index)
StateTransitionMatrix
.index
- The index of the consider parameter to retrieve.StateTransitionMatrix.addConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.indexOfConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeConsiderParameterAt(int)
,
StateTransitionMatrix.getNumberOfConsiderParameters()
public final int indexOfConsiderParameter(IPartialDifferentiable considerParameter)
considerParameter
and returns the index which
can be used to access it via StateTransitionMatrix.getConsiderParameter(int)
or StateTransitionMatrix.removeConsiderParameterAt(int)
.considerParameter
- The consider parameter to search for.considerParameter
if found; otherwise -1.StateTransitionMatrix.addConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getConsiderParameter(int)
,
StateTransitionMatrix.removeConsiderParameterAt(int)
,
StateTransitionMatrix.getNumberOfConsiderParameters()
public final void removeConsiderParameterAt(int index)
index
.index
- The index of the consider parameter to be removed.StateTransitionMatrix.addConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getConsiderParameter(int)
,
StateTransitionMatrix.indexOfConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getNumberOfConsiderParameters()
public int getOrder()
getOrder
in class PropagationStateElement
public int getDimension()
Order
(get
)) within this element.getDimension
in class PropagationStateElement
public final int getLinearDimension()
StateTransitionMatrix
.
The StateTransitionMatrix
takes the form of a square matrix of dimensions L x L, where L is equal to
N, the total dimension of the state parameters (StateDimension
(get
/ set
)) plus Q,
the total dimension of the consider parameters (ConsiderDimension
(get
/ set
)). The
StateTransitionMatrix's
dimension as far as the propagation state is concerned is L squared, and that is what the Dimension
(get
)
property returns. This property returns the value of L.
public final int getStateDimension()
public final int getNumberOfStateParameters()
StateTransitionMatrix
.StateTransitionMatrix.addStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable, agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getStateParameter(int)
,
StateTransitionMatrix.getStateDerivative(int)
,
StateTransitionMatrix.indexOfStateParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.indexOfStateDerivative(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeStateParameterAt(int)
public final int getConsiderDimension()
public final int getNumberOfConsiderParameters()
StateTransitionMatrix
.StateTransitionMatrix.addConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.getConsiderParameter(int)
,
StateTransitionMatrix.indexOfConsiderParameter(agi.foundation.numericalmethods.advanced.IPartialDifferentiable)
,
StateTransitionMatrix.removeConsiderParameterAt(int)
@Nonnull public final TransitionType getTransitionType()
StateTransitionMatrix
is operating in epoch or piecewise mode.
By default, this is set to TransitionType.EPOCH_TRANSITION
,
which means that the state transition matrix at each time step transforms the state from the epoch state to the state at
that time step.public final void setTransitionType(@Nonnull TransitionType value)
StateTransitionMatrix
is operating in epoch or piecewise mode.
By default, this is set to TransitionType.EPOCH_TRANSITION
,
which means that the state transition matrix at each time step transforms the state from the epoch state to the state at
that time step.public PropagationStateParameter getStateParameter()
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 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 state and all of its elements are configured with the same parameter.
Otherwise, the state will throw an exception when creating its propagator.getStateParameter
in class PropagationStateElement
public void setStateParameter(PropagationStateParameter value)
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 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 state and all of its elements are configured with the same parameter.
Otherwise, the state will throw an exception when creating its propagator.setStateParameter
in class PropagationStateElement
public final DynamicMatrix getIntegrationDynamicMatrix()
DynamicMatrix
which is parameterized on the value of the
StateTransitionMatrix
during integration.
This matrix is only valid while the NumericalPropagator
is running.public final Matrix getInitialStateTransitionMatrix()
public final void setInitialStateTransitionMatrix(Matrix value)
public final Matrix getInitialConsiderTransitionMatrix()
public final void setInitialConsiderTransitionMatrix(Matrix value)
@Nonnull public static DateMotionCollection1<Matrix> populateCovarianceCollection(@Nonnull Matrix initialCovariance, @Nonnull DateMotionCollection1<Matrix> stateTransitionMatrices, @Nonnull TransitionType transitionType)
state transition matrices
.initialCovariance
- The initial covariance matrix that corresponds with the first time step in the collection.stateTransitionMatrices
- The DateMotionCollection1
of the state transition matrices and their
corresponding times to be used to move the covariance values forward in time.transitionType
- Indicates type of the given state transition matrices.
See also TransitionType
(get
/ set
).public PropagationStateElementConverter getConverter(EvaluatorGroup group, @Nonnull Motion1<int[]> stateInputIndices)
EvaluatorGroup
.getConverter
in class PropagationStateElement
group
- The evaluator group in which to configure the parameters.stateInputIndices
- The set of indices corresponding to the location
of each value or derivative of this state element in the overall state.public IUpdatePriorToStep getStateUpdater(EvaluatorGroup group)
Creates an object that will update the state of the StateTransitionMatrix
in between propagation steps, if necessary.
If TransitionType
(get
/ set
) is PiecewiseTransition
then the matrices produced during propagation represent the transition matrices from the previous time step to their own time step.
This means that at the beginning of each propagation step the value of the state transition matrix must be reset to the identity matrix.
If TransitionType
(get
/ set
) is EpochTransition
then the matrices produced during propagation represent the transition matrices from the epoch to their own time step,
and this reset is not necessary.
getStateUpdater
in class PropagationStateElement
group
- The EvaluatorGroup
the state updater will be part of.null
if TransitionType
(get
/ set
) is TransitionType.EpochTransition
,
otherwise an IUpdatePriorToStep
to reset the
matrix to Identity at the beginning of each propagation step.ArgumentNullException
- Thrown when group
is null
.public PropagationStateElementEvaluator getDerivatives(EvaluatorGroup group)
NumericalPropagatorDefinition
to obtain an instance of a state element evaluator
that can compute the derivatives of this element of the state during propagation.
It cannot be used outside of a NumericalPropagator
as the geometry for the propagation state
will be unavailable.getDerivatives
in class PropagationStateElement
group
- The group in which to create the evaluator and its dependents.