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, waitgetEventsDetectors, getFieldEventsDetectors, getParameters, getParametersprotected 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 DSSTForceModelinitialState - 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 DSSTForceModelT - 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 DSSTForceModelprotected 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 DSSTForceModelauxiliaryElements - 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 DSSTForceModelT - 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 DSSTForceModelstate - 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 DSSTForceModelT - 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 DSSTForceModelprovider - the AttitudeProviderpublic 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 DSSTForceModelparameters - 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 DSSTForceModelT - type of the elementsparameters - values of the force model parametersmeanStates - mean states information: date, kinematics, attitudeCopyright © 2002-2022 CS GROUP. All rights reserved.