Class AbstractGaussianContribution

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

    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 method: getLLimits(SpacecraftState).

    Author:
    Pascal Parraud
    • Field Detail

      • a

        protected double a
        a.
      • k

        protected double k
        ex.
      • h

        protected double h
        ey.
      • q

        protected double q
        hx.
      • p

        protected double p
        hy.
      • ecc

        protected double ecc
        Eccentricity.
      • n

        protected double n
        Kepler mean motion: n = sqrt(μ / a³).
      • lm

        protected double lm
        Mean longitude.
      • f

        protected org.hipparchus.geometry.euclidean.threed.Vector3D f
        Equinoctial frame f vector.
      • g

        protected org.hipparchus.geometry.euclidean.threed.Vector3D g
        Equinoctial frame g vector.
      • w

        protected org.hipparchus.geometry.euclidean.threed.Vector3D w
        Equinoctial frame w vector.
      • A

        protected double A
        A = sqrt(μ * a).
      • B

        protected double B
        B = sqrt(1 - h² - k²).
      • C

        protected double C
        C = 1 + p² + q².
      • ton2a

        protected double ton2a
        2 / (n² * a) .
      • ooA

        protected double ooA
        1 / A .
      • ooAB

        protected double ooAB
        1 / (A * B) .
      • co2AB

        protected double co2AB
        C / (2 * A * B) .
      • ooBpo

        protected double ooBpo
        1 / (1 + B) .
      • ooMu

        protected double ooMu
        1 / μ .
      • mu

        protected double mu
        μ .
    • Constructor Detail

      • AbstractGaussianContribution

        protected AbstractGaussianContribution​(String coefficientsKeyPrefix,
                                               double threshold,
                                               ForceModel contribution)
        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
    • Method Detail

      • initialize

        public List<ShortPeriodTerms> initialize​(AuxiliaryElements aux,
                                                 boolean meanOnly)
        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:
        initialize in interface DSSTForceModel
        Parameters:
        aux - auxiliary elements related to the current orbit
        meanOnly - only mean elements are used during the propagation
        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)
      • initializeStep

        public void initializeStep​(AuxiliaryElements aux)
        Performs initialization at each integration step for the current force model.

        This method aims at being called before mean elements rates computation.

        Specified by:
        initializeStep in interface DSSTForceModel
        Parameters:
        aux - auxiliary elements related to the current orbit
      • getMeanElementRate

        public double[] getMeanElementRate​(SpacecraftState state)
        Computes the mean equinoctial elements rates dai / dt.
        Specified by:
        getMeanElementRate in interface DSSTForceModel
        Parameters:
        state - current state information: date, kinematics, attitude
        Returns:
        the mean element rates dai/dt
      • getLLimits

        protected abstract double[] getLLimits​(SpacecraftState state)
        Compute the limits in L, the true longitude, for integration.
        Parameters:
        state - current state information: date, kinematics, attitude
        Returns:
        the integration limits in L