Class StateCovarianceMatrixProvider

  • All Implemented Interfaces:
    AdditionalStateProvider

    public class StateCovarianceMatrixProvider
    extends Object
    implements AdditionalStateProvider
    Additional state provider for state covariance matrix.

    This additional state provider allows computing a propagated covariance matrix based on a user defined input state covariance matrix. The computation of the propagated covariance matrix uses the State Transition Matrix between the propagated spacecraft state and the initial state. As a result, the user must define the name of the provider for the State Transition Matrix.

    As the State Transition Matrix and the input state covariance matrix can be expressed in different orbit types, the user must specify both orbit types when building the covariance provider. In addition, the position angle used in both matrices must also be specified.

    In order to add this additional state provider to an orbit propagator, user must use the Propagator.addAdditionalStateProvider(AdditionalStateProvider) method.

    For a given propagated spacecraft state, the propagated state covariance matrix is accessible through the method getStateCovariance(SpacecraftState)

    Since:
    11.3
    Author:
    Bryan Cazabonne, Vincent Cucchietti
    • Constructor Detail

      • StateCovarianceMatrixProvider

        public StateCovarianceMatrixProvider​(String additionalName,
                                             String stmName,
                                             MatricesHarvester harvester,
                                             StateCovariance covInit)
        Constructor.
        Parameters:
        additionalName - name of the additional state
        stmName - name of the state for State Transition Matrix
        harvester - matrix harvester as returned by propagator.setupMatricesComputation(stmName, null, null)
        covInit - initial state covariance
    • Method Detail

      • getName

        public String getName()
        Get the name of the additional state.

        If a provider just modifies one of the basic elements (orbit, attitude or mass) without adding any new state, it should return the empty string as its name.

        Specified by:
        getName in interface AdditionalStateProvider
        Returns:
        name of the additional state (names containing "orekit" with any case are reserved for the library internal use)
      • init

        public void init​(SpacecraftState initialState,
                         AbsoluteDate target)
        Initialize the additional state provider at the start of propagation.
        Specified by:
        init in interface AdditionalStateProvider
        Parameters:
        initialState - initial state information at the start of propagation
        target - date of propagation
      • yields

        public boolean yields​(SpacecraftState state)
        Check if this provider should yield so another provider has an opportunity to add missing parts.

        Decision to yield is often based on an additional state being already available in the provided state (but it could theoretically also depend on an additional state derivative being already available, or any other criterion). If for example a provider needs the state transition matrix, it could implement this method as:

        
         public boolean yields(final SpacecraftState state) {
             return !state.getAdditionalStates().containsKey("STM");
         }
         

        The default implementation returns false, meaning that state data can be generated immediately.

        The covariance matrix can be computed only if the State Transition Matrix state is available.

        Specified by:
        yields in interface AdditionalStateProvider
        Parameters:
        state - state to handle
        Returns:
        true if this provider should yield so another provider has an opportunity to add missing parts as the state is incrementally built up
      • getAdditionalState

        public double[] getAdditionalState​(SpacecraftState state)
        Get the additional state.
        Specified by:
        getAdditionalState in interface AdditionalStateProvider
        Parameters:
        state - spacecraft state to which additional state should correspond
        Returns:
        additional state corresponding to spacecraft state
      • getCovarianceOrbitType

        public OrbitType getCovarianceOrbitType()
        Get the orbit type in which the covariance matrix is expressed.
        Returns:
        the orbit type