Interface DSSTForceModel
-
- All Superinterfaces:
EventDetectorsProvider
,ParameterDriversProvider
- All Known Implementing Classes:
AbstractGaussianContribution
,DSSTAtmosphericDrag
,DSSTJ2SquaredClosedForm
,DSSTNewtonianAttraction
,DSSTSolarRadiationPressure
,DSSTTesseral
,DSSTThirdBody
,DSSTZonal
public interface DSSTForceModel extends ParameterDriversProvider, EventDetectorsProvider
This interface represents a force modifying spacecraft motion for aDSSTPropagator
.Objects implementing this interface are intended to be added to a
DSST propagator
before the propagation is started.The propagator will call at the very beginning of a propagation the
initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
method allowing preliminary computation such as truncation if needed.Then the propagator will call at each step:
- the
getMeanElementRate(SpacecraftState, AuxiliaryElements, double[])
method. The force model instance will extract all the state data needed to compute the mean element rates that contribute to the mean state derivative. - the
updateShortPeriodTerms(double[], SpacecraftState...)
method, if osculating parameters are desired, on a sample of points within the last step.
- Author:
- Romain Di Constanzo, Pascal Parraud
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description default double[]
extractParameters(double[] parameters, AbsoluteDate date)
Extract the proper parameter drivers' values from the array in input of theupdateShortPeriodTerms
method.default <T extends CalculusFieldElement<T>>
T[]extractParameters(T[] parameters, FieldAbsoluteDate<T> date)
Extract the proper parameter drivers' values from the array in input of theupdateShortPeriodTerms
method.default Stream<EventDetector>
getEventDetectors()
Get the discrete events related to the model.default <T extends CalculusFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventDetectors(Field<T> field)
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
T[]getMeanElementRate(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)
Computes the mean equinoctial elements rates dai / dt.double[]
getMeanElementRate(SpacecraftState state, AuxiliaryElements auxiliaryElements, double[] parameters)
Computes the mean equinoctial elements rates dai / dt.default <T extends CalculusFieldElement<T>>
voidinit(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
Initialize the force model at the start of propagation.default void
init(SpacecraftState initialState, AbsoluteDate target)
Initialize the force model at the start of propagation.List<ShortPeriodTerms>
initializeShortPeriodTerms(AuxiliaryElements auxiliaryElements, PropagationType type, double[] parameters)
Performs initialization prior to propagation for the current force model.<T extends CalculusFieldElement<T>>
List<FieldShortPeriodTerms<T>>initializeShortPeriodTerms(FieldAuxiliaryElements<T> auxiliaryElements, PropagationType type, T[] parameters)
Performs initialization prior to propagation for the current force model.void
registerAttitudeProvider(AttitudeProvider provider)
Register an attitude provider.void
updateShortPeriodTerms(double[] parameters, SpacecraftState... meanStates)
Update the short period terms.<T extends CalculusFieldElement<T>>
voidupdateShortPeriodTerms(T[] parameters, FieldSpacecraftState<T>... meanStates)
Update the short period terms.-
Methods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getEventDetectors, getFieldEventDetectors
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, getParametersDrivers, isSupported
-
-
-
-
Method Detail
-
init
default void init(SpacecraftState initialState, AbsoluteDate target)
Initialize the force model at the start of propagation.The default implementation of this method does nothing.
- Parameters:
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal toinitialState.getDate()
.- Since:
- 11.0
-
init
default <T extends CalculusFieldElement<T>> void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
Initialize the force model at the start of propagation.The default implementation of this method does nothing.
- Type Parameters:
T
- type of the elements- Parameters:
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal toinitialState.getDate()
.- Since:
- 11.1
-
getEventDetectors
default Stream<EventDetector> getEventDetectors()
Get the discrete events related to the model.This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
- Specified by:
getEventDetectors
in interfaceEventDetectorsProvider
- Returns:
- stream of event detectors
-
getFieldEventDetectors
default <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors(Field<T> field)
Get the discrete events related to the model.This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
- Specified by:
getFieldEventDetectors
in interfaceEventDetectorsProvider
- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
field
- field to which the state belongs- Returns:
- stream of event detectors
-
initializeShortPeriodTerms
List<ShortPeriodTerms> initializeShortPeriodTerms(AuxiliaryElements auxiliaryElements, PropagationType type, double[] parameters)
Performs initialization prior to propagation for the current force model.This method aims at being called at the very beginning of a propagation.
- Parameters:
auxiliaryElements
- auxiliary elements related to the current orbittype
- type of the elements used during the propagationparameters
- values of the force model parameters for specific date (1 value only per parameter driver) obtained for example by callingParameterDriversProvider.getParameters(AbsoluteDate)
on force model.- Returns:
- a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
-
initializeShortPeriodTerms
<T extends CalculusFieldElement<T>> List<FieldShortPeriodTerms<T>> initializeShortPeriodTerms(FieldAuxiliaryElements<T> auxiliaryElements, PropagationType type, T[] parameters)
Performs initialization prior to propagation for the current force model.This method aims at being called at the very beginning of a propagation.
- Type Parameters:
T
- type of the elements- Parameters:
auxiliaryElements
- auxiliary elements related to the current orbittype
- type of the elements used during the propagationparameters
- values of the force model parameters for specific date (1 value only per parameter driver) obtained for example by callingParameterDriversProvider.getParameters(AbsoluteDate)
on force model orAbstractGradientConverter.getParametersAtStateDate(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter.- Returns:
- a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
-
extractParameters
default double[] extractParameters(double[] parameters, AbsoluteDate date)
Extract the proper parameter drivers' values from the array in input of theupdateShortPeriodTerms
method. Parameters are filtered given an input date.- Parameters:
parameters
- the input parameters array containing all span values of all drivers from which the parameter values at date date wants to be extracteddate
- the date- Returns:
- the parameters given the date
-
extractParameters
default <T extends CalculusFieldElement<T>> T[] extractParameters(T[] parameters, FieldAbsoluteDate<T> date)
Extract the proper parameter drivers' values from the array in input of theupdateShortPeriodTerms
method. Parameters are filtered given an input date.- Type Parameters:
T
- extends CalculusFieldElement- Parameters:
parameters
- the input parameters array containing all span values of all drivers from which the parameter values at date date wants to be extracteddate
- the date- Returns:
- the parameters given the date
-
getMeanElementRate
double[] getMeanElementRate(SpacecraftState state, AuxiliaryElements auxiliaryElements, double[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Parameters:
state
- current state information: date, kinematics, attitudeauxiliaryElements
- auxiliary elements related to the current orbitparameters
- values of the force model parameters at state date (only 1 span for each parameter driver) obtained for example by callingParameterDriversProvider.getParameters(AbsoluteDate)
on force model.- Returns:
- the mean element rates dai/dt
-
getMeanElementRate
<T extends CalculusFieldElement<T>> T[] getMeanElementRate(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Type Parameters:
T
- type of the elements- Parameters:
state
- current state information: date, kinematics, attitudeauxiliaryElements
- auxiliary elements related to the current orbitparameters
- values of the force model parameters at state date (only 1 span for each parameter driver) obtained for example by callingParameterDriversProvider.getParameters(Field, FieldAbsoluteDate)
on force model orAbstractGradientConverter.getParametersAtStateDate(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter.- Returns:
- the mean element rates dai/dt
-
registerAttitudeProvider
void registerAttitudeProvider(AttitudeProvider provider)
Register an attitude provider.Register an attitude provider that can be used by the force model.
- Parameters:
provider
- theAttitudeProvider
-
updateShortPeriodTerms
void updateShortPeriodTerms(double[] parameters, SpacecraftState... meanStates)
Update the short period terms.The
short period terms
that will be updated are the ones that were returned during the call toinitializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
.- Parameters:
parameters
- values of the force model parameters (all span values for each parameters) obtained for example by callingParameterDriversProvider.getParametersAllValues()
on force model. The extract parameter methodextractParameters(double[], AbsoluteDate)
is called in the method to select the right parameter corresponding to the mean state date.meanStates
- mean states information: date, kinematics, attitude
-
updateShortPeriodTerms
<T extends CalculusFieldElement<T>> void updateShortPeriodTerms(T[] parameters, FieldSpacecraftState<T>... meanStates)
Update the short period terms.The
short period terms
that will be updated are the ones that were returned during the call toinitializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
.- Type Parameters:
T
- type of the elements- Parameters:
parameters
- values of the force model parameters (all span values for each parameters) obtained for example by callingParameterDriversProvider.getParametersAllValues(Field)
on force model orAbstractGradientConverter.getParameters(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter. The extract parameter methodextractParameters(CalculusFieldElement[], FieldAbsoluteDate)
is called in the method to select the right parameter.meanStates
- mean states information: date, kinematics, attitude
-
-