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 propagatorbefore 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 theupdateShortPeriodTermsmethod.default <T extends CalculusFieldElement<T>>
T[]extractParameters(T[] parameters, FieldAbsoluteDate<T> date)Extract the proper parameter drivers' values from the array in input of theupdateShortPeriodTermsmethod.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 voidinit(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.voidregisterAttitudeProvider(AttitudeProvider provider)Register an attitude provider.voidupdateShortPeriodTerms(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:
getEventDetectorsin 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:
getFieldEventDetectorsin 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 theupdateShortPeriodTermsmethod. 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 theupdateShortPeriodTermsmethod. 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 termsthat 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 termsthat 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
-
-