Class AbstractParametricAcceleration

  • All Implemented Interfaces:
    ForceModel
    Direct Known Subclasses:
    HarmonicParametricAcceleration, PolynomialParametricAcceleration

    public abstract class AbstractParametricAcceleration
    extends AbstractForceModel
    This class implements a parametric acceleration.

    Parametric accelerations are intended to model lesser-known forces, estimating a few defining parameters from a parametric function using orbit determination. Typical parametric functions are polynomial (often limited to a constant term) and harmonic (often with either orbital period or half orbital period).

    An important operational example is the infamous GPS Y-bias, which is thought to be related to a radiator thermal radiation. Other examples could be to model leaks that produce roughly constant trust in some spacecraft-related direction.

    The acceleration direction is considered constant in either:

    • inertial frame
    • spacecraft frame
    • a dedicated attitude frame overriding spacecraft attitude (this could for example be used to model solar arrays orientation if the force is related to solar arrays)

    If the direction of the acceleration is unknown, then three instances of this class should be used, one along the X axis, one along the Y axis and one along the Z axis and their parameters estimated as usual.

    Since:
    9.0
    Author:
    Luc Maisonobe
    • Constructor Detail

      • AbstractParametricAcceleration

        protected AbstractParametricAcceleration​(org.hipparchus.geometry.euclidean.threed.Vector3D direction,
                                                 boolean isInertial,
                                                 AttitudeProvider attitudeOverride)
        Simple constructor.
        Parameters:
        direction - acceleration direction in overridden spacecraft frame
        isInertial - if true, direction is defined in the same inertial frame used for propagation (i.e. SpacecraftState.getFrame()), otherwise direction is defined in spacecraft frame (i.e. using the propagation attitude law)
        attitudeOverride - provider for attitude used to compute acceleration direction
    • Method Detail

      • isInertial

        protected boolean isInertial()
        Check if direction is inertial.
        Returns:
        true if direction is inertial
      • signedAmplitude

        protected abstract double signedAmplitude​(SpacecraftState state,
                                                  double[] parameters)
        Compute the signed amplitude of the acceleration.

        The acceleration is the direction multiplied by the signed amplitude. So if signed amplitude is negative, the acceleratin is towards the opposite of the direction specified at construction.

        Parameters:
        state - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        norm of the acceleration
      • signedAmplitude

        protected abstract <T extends org.hipparchus.RealFieldElement<T>> T signedAmplitude​(FieldSpacecraftState<T> state,
                                                                                            T[] parameters)
        Compute the signed amplitude of the acceleration.

        The acceleration is the direction multiplied by the signed amplitude. So if signed amplitude is negative, the acceleratin is towards the opposite of the direction specified at construction.

        Type Parameters:
        T - type of the elements
        Parameters:
        state - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        norm of the acceleration
      • acceleration

        public org.hipparchus.geometry.euclidean.threed.Vector3D acceleration​(SpacecraftState state,
                                                                              double[] parameters)
        Compute acceleration.
        Parameters:
        state - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        acceleration in same frame as state
      • acceleration

        public <T extends org.hipparchus.RealFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration​(FieldSpacecraftState<T> state,
                                                                                                                                     T[] parameters)
        Compute acceleration.
        Type Parameters:
        T - type of the elements
        Parameters:
        state - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        acceleration in same frame as state
      • getEventsDetectors

        public Stream<EventDetector> getEventsDetectors()
        Get the discrete events related to the model.
        Returns:
        stream of events detectors
      • getFieldEventsDetectors

        public <T extends org.hipparchus.RealFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors​(org.hipparchus.Field<T> field)
        Get the discrete events related to the model.
        Type Parameters:
        T - extends RealFieldElement
        Parameters:
        field - field to which the state belongs
        Returns:
        stream of events detectors