Class FieldStateCovariance<T extends CalculusFieldElement<T>>

    • Constructor Detail

      • FieldStateCovariance

        public FieldStateCovariance​(FieldMatrix<T> orbitalCovariance,
                                    FieldAbsoluteDate<T> epoch,
                                    LOF lof)
        Constructor.
        Parameters:
        orbitalCovariance - 6x6 orbital parameters covariance
        epoch - epoch of the covariance
        lof - covariance LOF type
      • FieldStateCovariance

        public FieldStateCovariance​(FieldMatrix<T> orbitalCovariance,
                                    FieldAbsoluteDate<T> epoch,
                                    Frame covarianceFrame,
                                    OrbitType orbitType,
                                    PositionAngleType angleType)
        Constructor.
        Parameters:
        orbitalCovariance - 6x6 orbital parameters covariance
        epoch - epoch of the covariance
        covarianceFrame - covariance frame (inertial or Earth fixed)
        orbitType - orbit type of the covariance (CARTESIAN if covarianceFrame is not pseudo-inertial)
        angleType - position angle type of the covariance (not used if orbitType is CARTESIAN)
    • Method Detail

      • getMatrix

        public FieldMatrix<T> getMatrix()
        Get the covariance matrix.
        Returns:
        the covariance matrix
      • getOrbitType

        public OrbitType getOrbitType()
        Get the covariance orbit type.
        Returns:
        the covariance orbit type
      • getPositionAngleType

        public PositionAngleType getPositionAngleType()
        Get the covariance angle type.
        Returns:
        the covariance angle type
      • getFrame

        public Frame getFrame()
        Get the covariance frame.
        Returns:
        the covariance frame (can be null)
        See Also:
        getLOF()
      • getLOF

        public LOF getLOF()
        Get the covariance LOF type.
        Returns:
        the covariance LOF type (can be null)
        See Also:
        getFrame()
      • changeCovarianceType

        public FieldStateCovariance<T> changeCovarianceType​(FieldOrbit<T> orbit,
                                                            OrbitType outOrbitType,
                                                            PositionAngleType outAngleType)
        Get the covariance matrix in another orbit type.

        The covariance orbit type cannot be changed if the covariance matrix is expressed in a local orbital frame or a non-pseudo inertial frame.

        As this type change uses the jacobian matrix of the transformation, it introduces a linear approximation. Hence, the current covariance matrix will not exactly match the new linearized case and the distribution will not follow a generalized Gaussian distribution anymore.

        This is based on equation (1) to (6) from "Vallado, D. A. (2004). Covariance transformations for satellite flight dynamics operations."

        Parameters:
        orbit - orbit to which the covariance matrix should correspond
        outOrbitType - target orbit type of the state covariance matrix
        outAngleType - target position angle type of the state covariance matrix
        Returns:
        a new covariance state, expressed in the target orbit type with the target position angle
        See Also:
        changeCovarianceFrame(FieldOrbit, Frame)
      • changeCovarianceFrame

        public FieldStateCovariance<T> changeCovarianceFrame​(FieldOrbit<T> orbit,
                                                             LOF lofOut)
        Get the covariance in a given local orbital frame.

        Changing the covariance frame is a linear process, this method does not introduce approximation unless a change in covariance orbit type is required.

        This is based on equation (18) to (20) "from Vallado, D. A. (2004). Covariance transformations for satellite flight dynamics operations."

        Parameters:
        orbit - orbit to which the covariance matrix should correspond
        lofOut - output local orbital frame
        Returns:
        a new covariance state, expressed in the output local orbital frame
      • changeCovarianceFrame

        public FieldStateCovariance<T> changeCovarianceFrame​(FieldOrbit<T> orbit,
                                                             Frame frameOut)
        Get the covariance in the output frame.

        Changing the covariance frame is a linear process, this method does not introduce approximation unless a change in covariance orbit type is required.

        This is based on equation (18) to (20) "from Vallado, D. A. (2004). Covariance transformations for satellite flight dynamics operations."

        Parameters:
        orbit - orbit to which the covariance matrix should correspond
        frameOut - output frame
        Returns:
        a new covariance state, expressed in the output frame
      • shiftedBy

        public FieldStateCovariance<T> shiftedBy​(Field<T> field,
                                                 FieldOrbit<T> orbit,
                                                 T dt)
        Get a time-shifted covariance matrix.

        The shifting model is a linearized, Keplerian one. In other words, it is based on a state transition matrix that is computed assuming Keplerian motion.

        Shifting is not intended as a replacement for proper covariance propagation, but should be sufficient for small time shifts or coarse accuracy.

        Parameters:
        field - to which the elements belong
        orbit - orbit to which the covariance matrix should correspond
        dt - time shift in seconds
        Returns:
        a new covariance state, shifted with respect to the instance
      • toStateCovariance

        public StateCovariance toStateCovariance()
        Get new state covariance instance.
        Returns:
        new state covariance instance.