public abstract class PropagationStateElement extends DefinitionalObject
Modifier | Constructor and Description |
---|---|
protected |
PropagationStateElement()
Initializes a new instance.
|
protected |
PropagationStateElement(PropagationStateElement existingInstance,
CopyContext context)
Initializes a new instance as a copy of an existing instance.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
checkForSameDefinition(DefinitionalObject other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected abstract boolean |
checkForSameDefinition(PropagationStateElement other)
Checks to determine if another instance has the same definition as this instance and
returns
true if it does. |
protected int |
computeCurrentDefinitionHashCode()
Computes a hash code based on the current properties of this object.
|
abstract 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.
|
abstract 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. |
abstract int |
getDimension()
Gets the number of parameters (per
Order (get )) within this element. |
String |
getIdentification()
Gets the string identifying this instance in the overall output.
|
boolean |
getIncludeHighestDerivativeInOutput()
Gets a value indicating whether to include the derivative computed at each step with the output.
|
abstract int |
getOrder()
Gets the order of the differential equation corresponding to this element.
|
abstract PropagationStateParameter |
getStateParameter()
Gets a parameter which represents the state during propagation.
|
IUpdatePriorToStep |
getStateUpdater(EvaluatorGroup group)
By default this method returns null.
|
void |
setIdentification(String value)
Sets the string identifying this instance in the overall output.
|
void |
setIncludeHighestDerivativeInOutput(boolean value)
Sets a value indicating whether to include the derivative computed at each step with the output.
|
abstract void |
setStateParameter(PropagationStateParameter value)
Sets a parameter which represents the state during propagation.
|
areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, areSameDefinition, clone, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, collectionItemsAreSameDefinition, dictionaryItemsAreSameDefinition, enumerateDependencies, freeze, freezeAggregatedObjects, getCollectionHashCode, getCollectionHashCode, getCollectionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDefinitionHashCode, getDictionaryHashCode, getIsFrozen, isSameDefinition, throwIfFrozen
protected PropagationStateElement()
protected PropagationStateElement(@Nonnull PropagationStateElement 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
.protected final boolean checkForSameDefinition(DefinitionalObject 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 DefinitionalObject
other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected abstract 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)
.other
- The other instance to compare to this one.true
if the two objects are defined equivalently; otherwise false
.protected int computeCurrentDefinitionHashCode()
PropagationStateElement.checkForSameDefinition(agi.foundation.infrastructure.DefinitionalObject)
method.computeCurrentDefinitionHashCode
in class DefinitionalObject
public final String getIdentification()
public final void setIdentification(String value)
public abstract int getDimension()
Order
(get
)) within this element.public abstract int getOrder()
public final boolean getIncludeHighestDerivativeInOutput()
Order
(get
) of the differential equation.public final void setIncludeHighestDerivativeInOutput(boolean value)
Order
(get
) of the differential equation.public abstract 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.public abstract 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.@Nonnull public abstract PropagationStateElementConverter getConverter(@Nonnull EvaluatorGroup group, @Nonnull Motion1<int[]> stateInputIndices)
EvaluatorGroup
.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.@Nonnull public abstract PropagationStateElementEvaluator getDerivatives(@Nonnull 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.group
- The group in which to create the evaluator and its dependents.@Nullable public IUpdatePriorToStep getStateUpdater(@Nonnull EvaluatorGroup group)
IUpdatePriorToStep
object that the NumericalPropagator
will call every time step.group
- The EvaluatorGroup
the state updater will be part of.