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 org.hipparchus.CalculusFieldElement<T>>
Compute the Cij and the Sij
coefficients with field elements.
|
protected static class |
AbstractGaussianContribution.FieldGaussianShortPeriodicCoefficients<T extends org.hipparchus.CalculusFieldElement<T>>
This class handles the short periodic coefficients described in Danielson
2.5.3-26.
|
protected class |
AbstractGaussianContribution.FieldIntegrableFunction<T extends org.hipparchus.CalculusFieldElement<T>>
Internal class for numerical quadrature.
|
protected static class |
AbstractGaussianContribution.FieldSlot<T extends org.hipparchus.CalculusFieldElement<T>>
Coefficients valid for one time slot.
|
protected static class |
AbstractGaussianContribution.FieldUijVijCoefficients<T extends org.hipparchus.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
Class used to
integrate a function of the orbital elements using the Gaussian quadrature rule to get
the acceleration. |
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.
|
DATATION_ACCURACY| 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 org.hipparchus.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 org.hipparchus.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 org.hipparchus.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 parameters.
|
protected abstract List<ParameterDriver> |
getParametersDriversWithoutMu()
Get the drivers for force model parameters except the one for the central
attraction coefficient.
|
<T extends org.hipparchus.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 org.hipparchus.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 org.hipparchus.CalculusFieldElement<T>> |
updateShortPeriodTerms(T[] parameters,
FieldSpacecraftState<T>... meanStates)
Update the short period terms.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitextractParameters, extractParameters, getEventDetectors, getFieldEventDetectorsgetNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupportedgetEventDetectors, getFieldEventDetectorsprotected 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 org.hipparchus.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 ParameterDriversProviderprotected 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 parameters for specific date
(1 value only per parameter driver) obtained for example by calling
ParameterDriversProvider.getParameters(AbsoluteDate) on force model.public <T extends org.hipparchus.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 parameters for specific date
(1 value only per parameter driver) obtained for example by calling
ParameterDriversProvider.getParameters(AbsoluteDate) on force model or
AbstractGradientConverter.getParametersAtStateDate(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter.public 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 parameters at state date (only 1 span for
each parameter driver) obtained for example by calling ParameterDriversProvider.getParameters(AbsoluteDate)
on force model.public <T extends org.hipparchus.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 parameters at state date (only 1 span for
each parameter driver) obtained for example by calling ParameterDriversProvider.getParameters(Field, FieldAbsoluteDate)
on force model or
AbstractGradientConverter.getParametersAtStateDate(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter.protected abstract double[] getLLimits(SpacecraftState state, AuxiliaryElements auxiliaryElements)
state - current state information: date, kinematics,
attitudeauxiliaryElements - auxiliary elements related to the current orbitprotected abstract <T extends org.hipparchus.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 parameters
at state date (1 values for each parameters)protected <T extends org.hipparchus.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 parameters(1 values for each parameters)public 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 parameters (all span values for each parameters)
obtained for example by calling
ParameterDriversProvider.getParametersAllValues()
on force model. The extract parameter method DSSTForceModel.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, attitudepublic <T extends org.hipparchus.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 parameters (all span values for each parameters)
obtained for example by calling ParameterDriversProvider.getParametersAllValues(Field) on force model or
AbstractGradientConverter.getParameters(FieldSpacecraftState, ParameterDriversProvider)
on gradient converter. The extract parameter method
DSSTForceModel.extractParameters(CalculusFieldElement[], FieldAbsoluteDate) is called in
the method to select the right parameter.meanStates - mean states information: date, kinematics, attitudeCopyright © 2002-2023 CS GROUP. All rights reserved.