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, wait
extractParameters, extractParameters, getEventDetectors, getFieldEventDetectors
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
getEventDetectors, getFieldEventDetectors
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 org.hipparchus.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 ParameterDriversProvider
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 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 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 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 DSSTForceModel
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 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 DSSTForceModel
T
- 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 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 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 DSSTForceModel
T
- 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.