Interface FieldAdditionalDerivativesProvider<T extends CalculusFieldElement<T>>
-
- Type Parameters:
T
- type of the field elements
- All Known Implementing Classes:
FieldCartesianAdjointDerivativesProvider
public interface FieldAdditionalDerivativesProvider<T extends CalculusFieldElement<T>>
Provider for additional derivatives.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 aDSST propagator
. Users provide the equations as an implementation of this interface and register it to the propagator thanks to itsFieldAbstractIntegratedPropagator.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 anynumerical propagator
orDSST propagator
.- Since:
- 11.1
- Author:
- Luc Maisonobe
- See Also:
FieldAbstractIntegratedPropagator
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description FieldCombinedDerivatives<T>
combinedDerivatives(FieldSpacecraftState<T> s)
Compute the derivatives related to the additional state (and optionally main state increments).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
yields(FieldSpacecraftState<T> state)
Check if this provider should yield so another provider has an opportunity to add missing parts.
-
-
-
Method Detail
-
getName
String getName()
Get the name of the additional derivatives (which will become state once integrated).- Returns:
- name of the additional state (names containing "orekit" with any case are reserved for the library internal use)
-
getDimension
int getDimension()
Get the dimension of the generated derivative.- Returns:
- dimension of the generated
-
init
default void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
Initialize the generator at the start of propagation.- Parameters:
initialState
- initial state information at the start of propagationtarget
- date of propagation
-
yields
default boolean yields(FieldSpacecraftState<T> state)
Check if this provider should yield so another provider has an opportunity to add missing parts.Decision to yield is often based on an additional state being
already available
in the providedstate
(but it could theoretically also depend on an additional state derivative beingalready available
, or any other criterion). If for example a provider needs the state transition matrix, it could implement this method as:public boolean yields(final FieldSpacecraftState<T> state) { return !state.getAdditionalStates().containsKey("STM"); }
The default implementation returns
false
, meaning that derivative data can becomputed
immediately.- Parameters:
state
- state to handle- Returns:
- true if this provider should yield so another provider has an opportunity to add missing parts as the state is incrementally built up
-
combinedDerivatives
FieldCombinedDerivatives<T> combinedDerivatives(FieldSpacecraftState<T> s)
Compute the derivatives related to the additional state (and optionally main state increments).- Parameters:
s
- current state information: date, kinematics, attitude, and additional states this equations depend on (according to theyields
method)- Returns:
- computed combined derivatives, which may include some incremental coupling effect to add to main state derivatives
- Since:
- 11.2
-
-