Class AbstractGaussianContribution

  • All Implemented Interfaces:
    DSSTForceModel, ParametersDriversProvider
    Direct Known Subclasses:
    DSSTAtmosphericDrag, DSSTSolarRadiationPressure, PythonAbstractGaussianContribution

    public abstract class AbstractGaussianContribution
    extends Object
    implements DSSTForceModel
    Common handling of 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:

    • ai are the six equinoctial elements
    • v is the velocity vector
    • q is the perturbing acceleration due to the considered force

    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().

    Author:
    Pascal Parraud, Bryan Cazabonne (field translation)
    • Constructor Detail

      • AbstractGaussianContribution

        protected AbstractGaussianContribution​(String coefficientsKeyPrefix,
                                               double threshold,
                                               ForceModel contribution,
                                               double mu)
        Build a new instance.
        Parameters:
        coefficientsKeyPrefix - prefix for coefficients keys
        threshold - tolerance for the choice of the Gauss quadrature order
        contribution - the ForceModel to be numerically averaged
        mu - central attraction coefficient
    • Method Detail

      • init

        public void init​(SpacecraftState initialState,
                         AbsoluteDate target)
        Initialize the force model at the start of propagation.

        The default implementation of this method does nothing.

        Specified by:
        init in interface DSSTForceModel
        Parameters:
        initialState - spacecraft state at the start of propagation.
        target - date of propagation. Not equal to initialState.getDate().
      • init

        public <T extends CalculusFieldElement<T>> void init​(FieldSpacecraftState<T> initialState,
                                                             FieldAbsoluteDate<T> target)
        Initialize the force model at the start of propagation.

        The default implementation of this method does nothing.

        Specified by:
        init in interface DSSTForceModel
        Type Parameters:
        T - type of the elements
        Parameters:
        initialState - spacecraft state at the start of propagation.
        target - date of propagation. Not equal to initialState.getDate().
      • getParametersDriversWithoutMu

        protected abstract List<ParameterDriver> getParametersDriversWithoutMu()
        Get the drivers for force model parameters except the one for the central attraction coefficient.

        The driver for central attraction coefficient is automatically added at the last element of the ParameterDriver array into getParametersDrivers() method.

        Returns:
        drivers for force model parameters
      • initializeShortPeriodTerms

        public List<ShortPeriodTerms> initializeShortPeriodTerms​(AuxiliaryElements auxiliaryElements,
                                                                 PropagationType type,
                                                                 double[] parameters)
        Performs initialization prior to propagation for the current force model.

        This method aims at being called at the very beginning of a propagation.

        Specified by:
        initializeShortPeriodTerms in interface DSSTForceModel
        Parameters:
        auxiliaryElements - auxiliary elements related to the current orbit
        type - type of the elements used during the propagation
        parameters - values of the force model parameters
        Returns:
        a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
      • initializeShortPeriodTerms

        public <T extends CalculusFieldElement<T>> List<FieldShortPeriodTerms<T>> initializeShortPeriodTerms​(FieldAuxiliaryElements<T> auxiliaryElements,
                                                                                                             PropagationType type,
                                                                                                             T[] parameters)
        Performs initialization prior to propagation for the current force model.

        This method aims at being called at the very beginning of a propagation.

        Specified by:
        initializeShortPeriodTerms in interface DSSTForceModel
        Type Parameters:
        T - type of the elements
        Parameters:
        auxiliaryElements - auxiliary elements related to the current orbit
        type - type of the elements used during the propagation
        parameters - values of the force model parameters
        Returns:
        a list of objects that will hold short period terms (the objects are also retained by the force model, which will update them during propagation)
      • getMeanElementRate

        public double[] getMeanElementRate​(SpacecraftState state,
                                           AuxiliaryElements auxiliaryElements,
                                           double[] parameters)
        Computes the mean equinoctial elements rates dai / dt.
        Specified by:
        getMeanElementRate in interface DSSTForceModel
        Parameters:
        state - current state information: date, kinematics, attitude
        auxiliaryElements - auxiliary elements related to the current orbit
        parameters - values of the force model parameters
        Returns:
        the mean element rates dai/dt
      • getMeanElementRate

        public <T extends CalculusFieldElement<T>> T[] getMeanElementRate​(FieldSpacecraftState<T> state,
                                                                          FieldAuxiliaryElements<T> auxiliaryElements,
                                                                          T[] parameters)
        Computes the mean equinoctial elements rates dai / dt.
        Specified by:
        getMeanElementRate in interface DSSTForceModel
        Type Parameters:
        T - type of the elements
        Parameters:
        state - current state information: date, kinematics, attitude
        auxiliaryElements - auxiliary elements related to the current orbit
        parameters - values of the force model parameters
        Returns:
        the mean element rates dai/dt
      • getLLimits

        protected abstract double[] getLLimits​(SpacecraftState state,
                                               AuxiliaryElements auxiliaryElements)
        Compute the limits in L, the true longitude, for integration.
        Parameters:
        state - current state information: date, kinematics, attitude
        auxiliaryElements - auxiliary elements related to the current orbit
        Returns:
        the integration limits in L
      • getLLimits

        protected abstract <T extends CalculusFieldElement<T>> T[] getLLimits​(FieldSpacecraftState<T> state,
                                                                              FieldAuxiliaryElements<T> auxiliaryElements)
        Compute the limits in L, the true longitude, for integration.
        Type Parameters:
        T - type of the elements
        Parameters:
        state - current state information: date, kinematics, attitude
        auxiliaryElements - auxiliary elements related to the current orbit
        Returns:
        the integration limits in L
      • getMeanElementRate

        protected double[] getMeanElementRate​(SpacecraftState state,
                                              AbstractGaussianContribution.GaussQuadrature gauss,
                                              double low,
                                              double high,
                                              AbstractGaussianContributionContext context,
                                              double[] parameters)
        Computes the mean equinoctial elements rates dai / dt.
        Parameters:
        state - current state
        gauss - Gauss quadrature
        low - lower bound of the integral interval
        high - upper bound of the integral interval
        context - container for attributes
        parameters - values of the force model parameters
        Returns:
        the mean element rates
      • getMeanElementRate

        protected <T extends CalculusFieldElement<T>> 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.
        Type Parameters:
        T - type of the elements
        Parameters:
        state - current state
        gauss - Gauss quadrature
        low - lower bound of the integral interval
        high - upper bound of the integral interval
        context - container for attributes
        parameters - values of the force model parameters
        Returns:
        the mean element rates