public interface FieldAdditionalDerivativesProvider<T extends CalculusFieldElement<T>>
In some cases users may need to integrate some problem-specific equations along with classical spacecraft equations of motions. One example is optimal control in low thrust where adjoint parameters linked to the minimized Hamiltonian must be integrated. Another example is formation flying or rendez-vous which use the Clohessy-Whiltshire equations for the relative motion.
This interface allows users to add such equations to a numerical propagator
or a DSST propagator
. Users provide the
equations as an implementation of this interface and register it to the propagator thanks to
its FieldAbstractIntegratedPropagator.addAdditionalDerivativesProvider(FieldAdditionalDerivativesProvider)
method. Several such objects can be registered with each numerical propagator, but it is
recommended to gather in the same object the sets of parameters which equations can interact
on each others states.
This interface is the numerical (read not already integrated) counterpart of
the FieldAdditionalStateProvider
interface.
It allows to append various additional state parameters to any numerical propagator
or DSST propagator
.
FieldAbstractIntegratedPropagator
Modifier and Type | Method and Description |
---|---|
T[] |
derivatives(FieldSpacecraftState<T> s)
Compute the derivatives related to the additional state parameters.
|
int |
getDimension()
Get the dimension of the generated derivative.
|
String |
getName()
Get the name of the additional derivatives (which will become state once integrated).
|
default void |
init(FieldSpacecraftState<T> initialState,
FieldAbsoluteDate<T> target)
Initialize the generator at the start of propagation.
|
default boolean |
yield(FieldSpacecraftState<T> state)
Check if this provider should yield so another provider has an opportunity to add missing parts.
|
String getName()
int getDimension()
default void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
initialState
- initial state information at the start of propagationtarget
- date of propagationdefault boolean yield(FieldSpacecraftState<T> state)
Decision to yield is often based on an additional state being already available
in the provided state
(but it could theoretically also depend on
an additional state derivative being already available
, or any other criterion). If for example a provider needs the state transition
matrix, it could implement this method as:
public boolean yield(final FieldSpacecraftState<T> state) {
return !state.getAdditionalStates().containsKey("STM");
}
The default implementation returns false
, meaning that derivative data can be
computed
immediately.
state
- state to handleT[] derivatives(FieldSpacecraftState<T> s)
s
- current state information: date, kinematics, attitude, and
additional states this equations depend on (according to the
yield
method)Copyright © 2002-2022 CS GROUP. All rights reserved.