public abstract class AbstractGaussianContribution extends Object implements DSSTForceModel
DSSTForceModel
methods for Gaussian contributions
to DSST propagation.
This abstract class allows to provide easily a subset of
DSSTForceModel
methods 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:
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
ForceModel
and to implement in the derived class the methods:
getLLimits(SpacecraftState, AuxiliaryElements)
and
getParametersDriversWithoutMu()
.
Modifier and Type | Class and Description |
---|---|
protected class |
AbstractGaussianContribution.FieldFourierCjSjCoefficients<T extends CalculusFieldElement<T>>
Compute the Cij and the Sij
coefficients with field elements.
|
protected static class |
AbstractGaussianContribution.FieldGaussianShortPeriodicCoefficients<T extends CalculusFieldElement<T>>
This class handles the short periodic coefficients described in Danielson
2.5.3-26.
|
protected class |
AbstractGaussianContribution.FieldIntegrableFunction<T extends CalculusFieldElement<T>>
Internal class for numerical quadrature.
|
protected static class |
AbstractGaussianContribution.FieldSlot<T extends CalculusFieldElement<T>>
Coefficients valid for one time slot.
|
protected static class |
AbstractGaussianContribution.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 class |
AbstractGaussianContribution.FourierCjSjCoefficients
Compute the Cij and the Sij
coefficients.
|
protected static class |
AbstractGaussianContribution.GaussianShortPeriodicCoefficients
This class handles the short periodic coefficients described in Danielson
2.5.3-26.
|
protected static class |
AbstractGaussianContribution.GaussQuadrature
|
protected class |
AbstractGaussianContribution.IntegrableFunction
Internal class for numerical quadrature.
|
protected static class |
AbstractGaussianContribution.Slot
Coefficients valid for one time slot.
|
protected static class |
AbstractGaussianContribution.UijVijCoefficients
The Uij and Vij coefficients
described by equations 2.5.3-(21) and 2.5.3-(22) from Danielson.
|
Modifier | Constructor and Description |
---|---|
protected |
AbstractGaussianContribution(String coefficientsKeyPrefix,
double threshold,
ForceModel contribution,
double mu)
Build a new instance.
|
Modifier and Type | Method and Description |
---|---|
protected abstract <T extends CalculusFieldElement<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>> |
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>> |
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 force model 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>> |
init(FieldSpacecraftState<T> initialState,
FieldAbsoluteDate<T> target)
Initialize the force model at the start of propagation.
|
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>> |
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>> |
updateShortPeriodTerms(T[] parameters,
FieldSpacecraftState<T>... meanStates)
Update the short period terms.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getEventsDetectors, getFieldEventsDetectors, getParameters, getParameters
protected AbstractGaussianContribution(String coefficientsKeyPrefix, double threshold, ForceModel contribution, double mu)
coefficientsKeyPrefix
- prefix for coefficients keysthreshold
- tolerance for the choice of the Gauss quadrature
ordercontribution
- the ForceModel
to be numerically
averagedmu
- central attraction coefficientpublic void init(SpacecraftState initialState, AbsoluteDate target)
The default implementation of this method does nothing.
init
in interface DSSTForceModel
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal to initialState.getDate()
.public <T extends CalculusFieldElement<T>> void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
The default implementation of this method does nothing.
init
in interface DSSTForceModel
T
- type of the elementsinitialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal to initialState.getDate()
.public List<ParameterDriver> getParametersDrivers()
getParametersDrivers
in interface DSSTForceModel
protected abstract List<ParameterDriver> getParametersDriversWithoutMu()
The driver for central attraction coefficient is automatically added at the
last element of the ParameterDriver
array into
getParametersDrivers()
method.
public List<ShortPeriodTerms> initializeShortPeriodTerms(AuxiliaryElements auxiliaryElements, PropagationType type, double[] parameters)
This method aims at being called at the very beginning of a propagation.
initializeShortPeriodTerms
in interface DSSTForceModel
auxiliaryElements
- auxiliary elements related to the current orbittype
- type of the elements used during the propagationparameters
- values of the force model parameterspublic <T extends CalculusFieldElement<T>> List<FieldShortPeriodTerms<T>> initializeShortPeriodTerms(FieldAuxiliaryElements<T> auxiliaryElements, PropagationType type, T[] parameters)
This method aims at being called at the very beginning of a propagation.
initializeShortPeriodTerms
in interface DSSTForceModel
T
- type of the elementsauxiliaryElements
- auxiliary elements related to the current orbittype
- type of the elements used during the propagationparameters
- values of the force model parameterspublic double[] getMeanElementRate(SpacecraftState state, AuxiliaryElements auxiliaryElements, double[] parameters)
getMeanElementRate
in interface DSSTForceModel
state
- current state information: date, kinematics, attitudeauxiliaryElements
- auxiliary elements related to the current orbitparameters
- values of the force model parameterspublic <T extends CalculusFieldElement<T>> T[] getMeanElementRate(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements, T[] parameters)
getMeanElementRate
in interface DSSTForceModel
T
- type of the elementsstate
- current state information: date, kinematics, attitudeauxiliaryElements
- auxiliary elements related to the current orbitparameters
- values of the force model parametersprotected abstract double[] getLLimits(SpacecraftState state, AuxiliaryElements auxiliaryElements)
state
- current state information: date, kinematics,
attitudeauxiliaryElements
- auxiliary elements related to the current orbitprotected abstract <T extends CalculusFieldElement<T>> T[] getLLimits(FieldSpacecraftState<T> state, FieldAuxiliaryElements<T> auxiliaryElements)
T
- type of the elementsstate
- current state information: date, kinematics,
attitudeauxiliaryElements
- auxiliary elements related to the current orbitprotected double[] getMeanElementRate(SpacecraftState state, AbstractGaussianContribution.GaussQuadrature gauss, double low, double high, AbstractGaussianContributionContext context, double[] 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 parametersprotected <T extends CalculusFieldElement<T>> T[] getMeanElementRate(FieldSpacecraftState<T> state, AbstractGaussianContribution.GaussQuadrature gauss, T low, T high, FieldAbstractGaussianContributionContext<T> context, T[] parameters)
T
- type of the elementsstate
- current stategauss
- Gauss quadraturelow
- lower bound of the integral intervalhigh
- upper bound of the integral intervalcontext
- container for attributesparameters
- values of the force model parameterspublic void registerAttitudeProvider(AttitudeProvider provider)
Register an attitude provider that can be used by the force model.
registerAttitudeProvider
in interface DSSTForceModel
provider
- the AttitudeProvider
public void updateShortPeriodTerms(double[] parameters, SpacecraftState... meanStates)
The short period terms
that will be updated
are the ones that were returned during the call to DSSTForceModel.initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
.
updateShortPeriodTerms
in interface DSSTForceModel
parameters
- values of the force model parametersmeanStates
- mean states information: date, kinematics, attitudepublic <T extends CalculusFieldElement<T>> void updateShortPeriodTerms(T[] parameters, FieldSpacecraftState<T>... meanStates)
The short period terms
that will be updated
are the ones that were returned during the call to DSSTForceModel.initializeShortPeriodTerms(AuxiliaryElements, PropagationType, double[])
.
updateShortPeriodTerms
in interface DSSTForceModel
T
- type of the elementsparameters
- values of the force model parametersmeanStates
- mean states information: date, kinematics, attitudeCopyright © 2002-2022 CS GROUP. All rights reserved.