Class AbstractGaussianContribution
- java.lang.Object
-
- org.orekit.propagation.semianalytical.dsst.forces.AbstractGaussianContribution
-
- All Implemented Interfaces:
EventDetectorsProvider,DSSTForceModel,ParameterDriversProvider
- Direct Known Subclasses:
DSSTAtmosphericDrag,DSSTSolarRadiationPressure
public abstract class AbstractGaussianContribution extends Object implements DSSTForceModel
Common handling ofDSSTForceModelmethods for Gaussian contributions to DSST propagation.This abstract class allows to provide easily a subset of
DSSTForceModelmethods for specific Gaussian contributions.This class implements the notion of numerical averaging of the DSST theory. Numerical averaging is mainly used for non-conservative disturbing forces such as atmospheric drag and solar radiation pressure.
Gaussian contributions can be expressed as: dai/dt = δai/δv . q
where:- ai are the six equinoctial elements
- v is the velocity vector
- q is the perturbing acceleration due to the considered force
The averaging process and other considerations lead to integrate this contribution over the true longitude L possibly taking into account some limits.
To create a numerically averaged contribution, one needs only to provide a
ForceModeland to implement in the derived class the methods:getLLimits(SpacecraftState, AuxiliaryElements)andgetParametersDriversWithoutMu().- Author:
- Pascal Parraud, Bryan Cazabonne (field translation)
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classAbstractGaussianContribution.FieldFourierCjSjCoefficients<T extends CalculusFieldElement<T>>Compute the Cij and the Sij coefficients with field elements.protected static classAbstractGaussianContribution.FieldGaussianShortPeriodicCoefficients<T extends CalculusFieldElement<T>>This class handles the short periodic coefficients described in Danielson 2.5.3-26.protected classAbstractGaussianContribution.FieldIntegrableFunction<T extends CalculusFieldElement<T>>Internal class for numerical quadrature.protected static classAbstractGaussianContribution.FieldSlot<T extends CalculusFieldElement<T>>Coefficients valid for one time slot.protected static classAbstractGaussianContribution.FieldUijVijCoefficients<T extends CalculusFieldElement<T>>The Uij and Vij coefficients described by equations 2.5.3-(21) and 2.5.3-(22) from Danielson.protected classAbstractGaussianContribution.FourierCjSjCoefficientsCompute the Cij and the Sij coefficients.protected static classAbstractGaussianContribution.GaussianShortPeriodicCoefficientsThis class handles the short periodic coefficients described in Danielson 2.5.3-26.protected static classAbstractGaussianContribution.GaussQuadratureprotected classAbstractGaussianContribution.IntegrableFunctionInternal class for numerical quadrature.protected static classAbstractGaussianContribution.SlotCoefficients valid for one time slot.protected static classAbstractGaussianContribution.UijVijCoefficientsThe Uij and Vij coefficients described by equations 2.5.3-(21) and 2.5.3-(22) from Danielson.
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractGaussianContribution(String coefficientsKeyPrefix, double threshold, ForceModel contribution, double mu)Build a new instance.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract <T extends CalculusFieldElement<T>>
T[]getLLimits(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements)Compute the limits in L, the true longitude, for integration.protected abstract double[]getLLimits(SpacecraftState state, AuxiliaryElements auxiliaryElements)Compute the limits in L, the true longitude, for integration.protected <T extends CalculusFieldElement<T>>
T[]getMeanElementRate(FieldSpacecraftState<T> state, AbstractGaussianContribution.GaussQuadrature gauss, T low, T high, FieldAbstractGaussianContributionContext<T> context, T[] parameters)Computes the mean equinoctial elements rates dai / dt.<T extends CalculusFieldElement<T>>
T[]getMeanElementRate(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)Computes the mean equinoctial elements rates dai / dt.protected double[]getMeanElementRate(SpacecraftState state, AbstractGaussianContribution.GaussQuadrature gauss, double low, double high, AbstractGaussianContributionContext context, double[] 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.List<ParameterDriver>getParametersDrivers()Get the drivers for parameters.protected abstract List<ParameterDriver>getParametersDriversWithoutMu()Get the drivers for force model parameters except the one for the central attraction coefficient.<T extends CalculusFieldElement<T>>
voidinit(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)Initialize the force model at the start of propagation.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 class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.semianalytical.dsst.forces.DSSTForceModel
extractParameters, extractParameters, getEventDetectors, getFieldEventDetectors
-
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, isSupported
-
-
-
-
Constructor Detail
-
AbstractGaussianContribution
protected AbstractGaussianContribution(String coefficientsKeyPrefix, double threshold, ForceModel contribution, double mu)
Build a new instance.- Parameters:
coefficientsKeyPrefix- prefix for coefficients keysthreshold- tolerance for the choice of the Gauss quadrature ordercontribution- theForceModelto be numerically averagedmu- central attraction coefficient
-
-
Method Detail
-
init
public void init(SpacecraftState initialState, AbsoluteDate target)
Initialize the force model at the start of propagation.The default implementation of this method does nothing.
- Specified by:
initin interfaceDSSTForceModel- Parameters:
initialState- spacecraft state at the start of propagation.target- date of propagation. Not equal toinitialState.getDate().
-
init
public <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.
- Specified by:
initin interfaceDSSTForceModel- Type Parameters:
T- type of the elements- Parameters:
initialState- spacecraft state at the start of propagation.target- date of propagation. Not equal toinitialState.getDate().
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Specified by:
getParametersDriversin interfaceParameterDriversProvider- Returns:
- drivers for parameters
-
getParametersDriversWithoutMu
protected abstract List<ParameterDriver> getParametersDriversWithoutMu()
Get the drivers for force model parameters except the one for the central attraction coefficient.The driver for central attraction coefficient is automatically added at the last element of the
ParameterDriverarray intogetParametersDrivers()method.- Returns:
- drivers for force model parameters
-
initializeShortPeriodTerms
public 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.
- Specified by:
initializeShortPeriodTermsin interfaceDSSTForceModel- 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
public <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.
- Specified by:
initializeShortPeriodTermsin interfaceDSSTForceModel- 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)
-
getMeanElementRate
public double[] getMeanElementRate(SpacecraftState state, AuxiliaryElements auxiliaryElements, double[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Specified by:
getMeanElementRatein interfaceDSSTForceModel- 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
public <T extends CalculusFieldElement<T>> T[] getMeanElementRate(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Specified by:
getMeanElementRatein interfaceDSSTForceModel- 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
-
getLLimits
protected abstract double[] getLLimits(SpacecraftState state, AuxiliaryElements auxiliaryElements)
Compute the limits in L, the true longitude, for integration.- Parameters:
state- current state information: date, kinematics, attitudeauxiliaryElements- auxiliary elements related to the current orbit- Returns:
- the integration limits in L
-
getLLimits
protected abstract <T extends CalculusFieldElement<T>> T[] getLLimits(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements)
Compute the limits in L, the true longitude, for integration.- Type Parameters:
T- type of the elements- Parameters:
state- current state information: date, kinematics, attitudeauxiliaryElements- auxiliary elements related to the current orbit- Returns:
- the integration limits in L
-
getMeanElementRate
protected double[] getMeanElementRate(SpacecraftState state, AbstractGaussianContribution.GaussQuadrature gauss, double low, double high, AbstractGaussianContributionContext context, double[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Parameters:
state- current stategauss- Gauss quadraturelow- lower bound of the integral intervalhigh- upper bound of the integral intervalcontext- container for attributesparameters- values of the force model parameters at state date (1 values for each parameters)- Returns:
- the mean element rates
-
getMeanElementRate
protected <T extends CalculusFieldElement<T>> T[] getMeanElementRate(FieldSpacecraftState<T> state, AbstractGaussianContribution.GaussQuadrature gauss, T low, T high, FieldAbstractGaussianContributionContext<T> context, T[] parameters)
Computes the mean equinoctial elements rates dai / dt.- Type Parameters:
T- type of the elements- Parameters:
state- current stategauss- Gauss quadraturelow- lower bound of the integral intervalhigh- upper bound of the integral intervalcontext- container for attributesparameters- values of the force model parameters(1 values for each parameters)- Returns:
- the mean element rates
-
registerAttitudeProvider
public void registerAttitudeProvider(AttitudeProvider provider)
Register an attitude provider.Register an attitude provider that can be used by the force model.
- Specified by:
registerAttitudeProviderin interfaceDSSTForceModel- Parameters:
provider- theAttitudeProvider
-
updateShortPeriodTerms
public 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 toDSSTForceModel.initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[]).- Specified by:
updateShortPeriodTermsin interfaceDSSTForceModel- 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 methodDSSTForceModel.extractParameters(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
public <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 toDSSTForceModel.initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[]).- Specified by:
updateShortPeriodTermsin interfaceDSSTForceModel- 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 methodDSSTForceModel.extractParameters(CalculusFieldElement[], FieldAbsoluteDate)is called in the method to select the right parameter.meanStates- mean states information: date, kinematics, attitude
-
-