Class FieldCircularOrbit<T extends CalculusFieldElement<T>>

    • Constructor Detail

      • FieldCircularOrbit

        public FieldCircularOrbit​(T a,
                                  T ex,
                                  T ey,
                                  T i,
                                  T raan,
                                  T alpha,
                                  PositionAngleType type,
                                  PositionAngleType cachedPositionAngleType,
                                  Frame frame,
                                  FieldAbsoluteDate<T> date,
                                  T mu)
                           throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω), first component of circular eccentricity vector
        ey - e sin(ω), second component of circular eccentricity vector
        i - inclination (rad)
        raan - right ascension of ascending node (Ω, rad)
        alpha - an + ω, mean, eccentric or true latitude argument (rad)
        type - type of latitude argument
        cachedPositionAngleType - type of cached latitude argument
        frame - the frame in which are defined the parameters (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
        Since:
        12.1
      • FieldCircularOrbit

        public FieldCircularOrbit​(T a,
                                  T ex,
                                  T ey,
                                  T i,
                                  T raan,
                                  T alpha,
                                  PositionAngleType type,
                                  Frame frame,
                                  FieldAbsoluteDate<T> date,
                                  T mu)
                           throws IllegalArgumentException
        Creates a new instance without derivatives and with cached position angle same as value inputted.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω), first component of circular eccentricity vector
        ey - e sin(ω), second component of circular eccentricity vector
        i - inclination (rad)
        raan - right ascension of ascending node (Ω, rad)
        alpha - an + ω, mean, eccentric or true latitude argument (rad)
        type - type of latitude argument
        frame - the frame in which are defined the parameters (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
      • FieldCircularOrbit

        public FieldCircularOrbit​(T a,
                                  T ex,
                                  T ey,
                                  T i,
                                  T raan,
                                  T alpha,
                                  T aDot,
                                  T exDot,
                                  T eyDot,
                                  T iDot,
                                  T raanDot,
                                  T alphaDot,
                                  PositionAngleType type,
                                  Frame frame,
                                  FieldAbsoluteDate<T> date,
                                  T mu)
                           throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω), first component of circular eccentricity vector
        ey - e sin(ω), second component of circular eccentricity vector
        i - inclination (rad)
        raan - right ascension of ascending node (Ω, rad)
        alpha - an + ω, mean, eccentric or true latitude argument (rad)
        aDot - semi-major axis derivative (m/s)
        exDot - d(e cos(ω))/dt, first component of circular eccentricity vector derivative
        eyDot - d(e sin(ω))/dt, second component of circular eccentricity vector derivative
        iDot - inclination derivative(rad/s)
        raanDot - right ascension of ascending node derivative (rad/s)
        alphaDot - d(an + ω), mean, eccentric or true latitude argument derivative (rad/s)
        type - type of latitude argument
        frame - the frame in which are defined the parameters (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
      • FieldCircularOrbit

        public FieldCircularOrbit​(T a,
                                  T ex,
                                  T ey,
                                  T i,
                                  T raan,
                                  T alpha,
                                  T aDot,
                                  T exDot,
                                  T eyDot,
                                  T iDot,
                                  T raanDot,
                                  T alphaDot,
                                  PositionAngleType type,
                                  PositionAngleType cachedPositionAngleType,
                                  Frame frame,
                                  FieldAbsoluteDate<T> date,
                                  T mu)
                           throws IllegalArgumentException
        Creates a new instance.
        Parameters:
        a - semi-major axis (m)
        ex - e cos(ω), first component of circular eccentricity vector
        ey - e sin(ω), second component of circular eccentricity vector
        i - inclination (rad)
        raan - right ascension of ascending node (Ω, rad)
        alpha - an + ω, mean, eccentric or true latitude argument (rad)
        aDot - semi-major axis derivative (m/s)
        exDot - d(e cos(ω))/dt, first component of circular eccentricity vector derivative
        eyDot - d(e sin(ω))/dt, second component of circular eccentricity vector derivative
        iDot - inclination derivative(rad/s)
        raanDot - right ascension of ascending node derivative (rad/s)
        alphaDot - d(an + ω), mean, eccentric or true latitude argument derivative (rad/s)
        type - type of latitude argument
        cachedPositionAngleType - type of cached latitude argument
        frame - the frame in which are defined the parameters (must be a pseudo-inertial frame)
        date - date of the orbital parameters
        mu - central attraction coefficient (m³/s²)
        Throws:
        IllegalArgumentException - if eccentricity is equal to 1 or larger or if frame is not a pseudo-inertial frame
        Since:
        12.1
      • FieldCircularOrbit

        public FieldCircularOrbit​(FieldOrbit<T> op)
        Constructor from any kind of orbital parameters.
        Parameters:
        op - orbital parameters to copy
      • FieldCircularOrbit

        public FieldCircularOrbit​(Field<T> field,
                                  CircularOrbit op)
        Constructor from Field and CircularOrbit.

        Build a FieldCircularOrbit from non-Field CircularOrbit.

        Parameters:
        field - CalculusField to base object on
        op - non-field orbit with only "constant" terms
        Since:
        12.0
      • FieldCircularOrbit

        public FieldCircularOrbit​(Field<T> field,
                                  Orbit op)
        Constructor from Field and Orbit.

        Build a FieldCircularOrbit from any non-Field Orbit.

        Parameters:
        field - CalculusField to base object on
        op - non-field orbit with only "constant" terms
        Since:
        12.0
    • Method Detail

      • getA

        public T getA()
        Get the semi-major axis.

        Note that the semi-major axis is considered negative for hyperbolic orbits.

        Specified by:
        getA in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        semi-major axis (m)
      • getADot

        public T getADot()
        Get the semi-major axis derivative.

        Note that the semi-major axis is considered negative for hyperbolic orbits.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getADot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        semi-major axis derivative (m/s)
      • getEquinoctialEx

        public T getEquinoctialEx()
        Get the first component of the equinoctial eccentricity vector.
        Specified by:
        getEquinoctialEx in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        first component of the equinoctial eccentricity vector
      • getEquinoctialExDot

        public T getEquinoctialExDot()
        Get the first component of the equinoctial eccentricity vector derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getEquinoctialExDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        first component of the equinoctial eccentricity vector derivative
      • getEquinoctialEy

        public T getEquinoctialEy()
        Get the second component of the equinoctial eccentricity vector.
        Specified by:
        getEquinoctialEy in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        second component of the equinoctial eccentricity vector
      • getEquinoctialEyDot

        public T getEquinoctialEyDot()
        Get the second component of the equinoctial eccentricity vector derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getEquinoctialEyDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        second component of the equinoctial eccentricity vector derivative
      • getCircularEx

        public T getCircularEx()
        Get the first component of the circular eccentricity vector.
        Returns:
        ex = e cos(ω), first component of the circular eccentricity vector
      • getCircularExDot

        public T getCircularExDot()
        Get the first component of the circular eccentricity vector derivative.
        Returns:
        d(ex)/dt = d(e cos(ω))/dt, first component of the circular eccentricity vector derivative
      • getCircularEy

        public T getCircularEy()
        Get the second component of the circular eccentricity vector.
        Returns:
        ey = e sin(ω), second component of the circular eccentricity vector
      • getCircularEyDot

        public T getCircularEyDot()
        Get the second component of the circular eccentricity vector derivative.
        Returns:
        d(ey)/dt = d(e sin(ω))/dt, second component of the circular eccentricity vector derivative
      • getHx

        public T getHx()
        Get the first component of the inclination vector.
        Specified by:
        getHx in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        first component of the inclination vector
      • getHxDot

        public T getHxDot()
        Get the first component of the inclination vector derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getHxDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        first component of the inclination vector derivative
      • getHy

        public T getHy()
        Get the second component of the inclination vector.
        Specified by:
        getHy in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        second component of the inclination vector
      • getHyDot

        public T getHyDot()
        Get the second component of the inclination vector derivative.
        Specified by:
        getHyDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        second component of the inclination vector derivative
      • getAlphaV

        public T getAlphaV()
        Get the true latitude argument.
        Returns:
        v + ω true latitude argument (rad)
      • getAlphaVDot

        public T getAlphaVDot()
        Get the true latitude argument derivative.
        Returns:
        d(v + ω)/dt true latitude argument derivative (rad/s)
      • getAlphaE

        public T getAlphaE()
        Get the eccentric latitude argument.
        Returns:
        E + ω eccentric latitude argument (rad)
      • getAlphaEDot

        public T getAlphaEDot()
        Get the eccentric latitude argument derivative.
        Returns:
        d(E + ω)/dt eccentric latitude argument derivative (rad/s)
      • getAlphaM

        public T getAlphaM()
        Get the mean latitude argument.
        Returns:
        M + ω mean latitude argument (rad)
      • getAlphaMDot

        public T getAlphaMDot()
        Get the mean latitude argument derivative.
        Returns:
        d(M + ω)/dt mean latitude argument derivative (rad/s)
      • getAlpha

        public T getAlpha​(PositionAngleType type)
        Get the latitude argument.
        Parameters:
        type - type of the angle
        Returns:
        latitude argument (rad)
      • getAlphaDot

        public T getAlphaDot​(PositionAngleType type)
        Get the latitude argument derivative.
        Parameters:
        type - type of the angle
        Returns:
        latitude argument derivative (rad/s)
      • getEDot

        public T getEDot()
        Get the eccentricity derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getEDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        eccentricity derivative
      • getI

        public T getI()
        Get the inclination.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getI in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        inclination (rad)
      • getRightAscensionOfAscendingNode

        public T getRightAscensionOfAscendingNode()
        Get the right ascension of the ascending node.
        Returns:
        right ascension of the ascending node (rad)
      • getRightAscensionOfAscendingNodeDot

        public T getRightAscensionOfAscendingNodeDot()
        Get the right ascension of the ascending node derivative.
        Returns:
        right ascension of the ascending node derivative (rad/s)
      • getLvDot

        public T getLvDot()
        Get the true longitude argument derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getLvDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        d(v + ω + Ω)/dt true longitude argument derivative (rad/s)
      • getLE

        public T getLE()
        Get the eccentric longitude argument.
        Specified by:
        getLE in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        E + ω + Ω eccentric longitude argument (rad)
      • getLEDot

        public T getLEDot()
        Get the eccentric longitude argument derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getLEDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        d(E + ω + Ω)/dt eccentric longitude argument derivative (rad/s)
      • getLMDot

        public T getLMDot()
        Get the mean longitude argument derivative.

        If the orbit was created without derivatives, the value returned is null.

        Specified by:
        getLMDot in class FieldOrbit<T extends CalculusFieldElement<T>>
        Returns:
        d(M + ω + Ω)/dt mean longitude argument derivative (rad/s)
      • inFrame

        public FieldCircularOrbit<T> inFrame​(Frame inertialFrame)
        Create a new object representing the same physical orbital state, but attached to a different reference frame. If the new frame is not inertial, an exception will be thrown.
        Specified by:
        inFrame in class FieldOrbit<T extends CalculusFieldElement<T>>
        Parameters:
        inertialFrame - reference frame of output orbit
        Returns:
        orbit with different frame
      • shiftedBy

        public FieldCircularOrbit<T> shiftedBy​(double dt)
        Get a time-shifted orbit.

        The orbit can be slightly shifted to close dates. This shift is based on a simple Keplerian model. It is not intended as a replacement for proper orbit and attitude propagation but should be sufficient for small time shifts or coarse accuracy.

        Specified by:
        shiftedBy in interface TimeShiftable<T extends CalculusFieldElement<T>>
        Specified by:
        shiftedBy in class FieldOrbit<T extends CalculusFieldElement<T>>
        Parameters:
        dt - time shift in seconds
        Returns:
        a new orbit, shifted with respect to the instance (which is immutable)
      • addKeplerContribution

        public void addKeplerContribution​(PositionAngleType type,
                                          T gm,
                                          T[] pDot)
        Add the contribution of the Keplerian motion to parameters derivatives

        This method is used by integration-based propagators to evaluate the part of Keplerian motion to evolution of the orbital state.

        Specified by:
        addKeplerContribution in class FieldOrbit<T extends CalculusFieldElement<T>>
        Parameters:
        type - type of the position angle in the state
        gm - attraction coefficient to use
        pDot - array containing orbital state derivatives to update (the Keplerian part must be added to the array components, as the array may already contain some non-zero elements corresponding to non-Keplerian parts)
      • toString

        public String toString()
        Returns a string representation of this Orbit object.
        Overrides:
        toString in class Object
        Returns:
        a string representation of this object
      • hasNonKeplerianRates

        public boolean hasNonKeplerianRates()
        Tells whether the instance holds rates (first-order time derivatives) for dependent variables that are incompatible with Keplerian motion.
        Specified by:
        hasNonKeplerianRates in interface PositionAngleBased<T extends CalculusFieldElement<T>>
        Returns:
        true if and only if holding non-Keplerian rates