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 | 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 RealFieldElement<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.
|
<T extends RealFieldElement<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.
|
ParameterDriver[] |
getParametersDrivers()
Get the drivers for force model parameters.
|
protected abstract ParameterDriver[] |
getParametersDriversWithoutMu()
Get the drivers for force model parameters except the one for the central attraction coefficient.
|
List<ShortPeriodTerms> |
initialize(AuxiliaryElements auxiliaryElements,
PropagationType type,
double[] parameters)
Performs initialization prior to propagation for the current force model.
|
<T extends RealFieldElement<T>> |
initialize(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 RealFieldElement<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 ParameterDriver[] getParametersDrivers()
getParametersDrivers
in interface DSSTForceModel
protected abstract 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> initialize(AuxiliaryElements auxiliaryElements, PropagationType type, double[] parameters)
This method aims at being called at the very beginning of a propagation.
initialize
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 RealFieldElement<T>> List<FieldShortPeriodTerms<T>> initialize(FieldAuxiliaryElements<T> auxiliaryElements, PropagationType type, T[] parameters)
This method aims at being called at the very beginning of a propagation.
initialize
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 RealFieldElement<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 RealFieldElement<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 orbitpublic 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.initialize(AuxiliaryElements, PropagationType, double[])
.
updateShortPeriodTerms
in interface DSSTForceModel
parameters
- values of the force model parametersmeanStates
- mean states information: date, kinematics, attitudepublic <T extends RealFieldElement<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.initialize(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-2020 CS Group. All rights reserved.