Interface MatricesHarvester

All Known Implementing Classes:
AbstractAnalyticalMatricesHarvester, AbstractMatricesHarvester, DSSTHarvester

public interface MatricesHarvester
Interface for extracting State Transition Matrices and Jacobians matrices from spacecraft state.

The State Transition Matrix and Jacobians matrices with respect to propagation parameters are stored in the state as additional states. Each propagator and support classes have their own way to handle them. The interface leverages these differences which are implementation details and provides a higher level access to these matrices, regardless of how they were computed and stored.

class diagram
Since:
11.1
Author:
Luc Maisonobe
  • Method Details

    • setReferenceState

      void setReferenceState(SpacecraftState reference)
      Set up reference state.

      This method is called whenever the global propagation reference state changes. This corresponds to the start of propagation in batch least squares orbit determination or at prediction step for each measurement in Kalman filtering. Its goal is to allow the harvester to compute some internal data. Analytical models like TLE use it to compute analytical derivatives, semi-analytical models like DSST use it to compute short periodic terms, numerical models do not use it at all.

      Parameters:
      reference - reference state to set
    • getStateTransitionMatrix

      RealMatrix getStateTransitionMatrix(SpacecraftState state)
      Extract state transition matrix from state.

      Some propagators use an orbit type B as the propagator builder parameter, and a different type Y for the propagated orbit. Typical examples are TLE or specialized GNSS propagators that use Keplerian-like builder parameters but produce Cartesian states. This method is not aware of such parameters change, so it always computes dY/dY₀ with the same representation for the current propagated state Y and the initial state Y₀.

      In order to compute dY/dB₀ where the current propagated state Y and the initial building state B₀ have different types, one should compute dY/dB₀ = dY/dY₀ dY₀/dB₀, where the first factor dY/dY₀ is given by this method and the second factor dY₀/dB₀ is given by the method getStateJacobianVsBuilderParameters(SpacecraftState).

      Parameters:
      state - spacecraft state
      Returns:
      state transition matrix, with semantics consistent with propagation, or null if no state transition matrix is available orbit type.
    • getStateJacobianVsBuilderParameters

      default RealMatrix getStateJacobianVsBuilderParameters(SpacecraftState state)
      Get transformation Jacobian between builder parameters and propagated state.

      Some propagators use an orbit type B as the propagator builder parameter, and a different type Y for the propagated orbit. Typical examples are TLE or specialized GNSS propagators that use Keplerian-like builder parameters but produce Cartesian states. This method allows to convert between these types.

      Applying this method to the propagator initial state gives the Jacobian dY₀/dB₀ between the initial propagated state and the initial builder parameters.

      Parameters:
      state - state at which the Jacobian should be evaluated
      Returns:
      jacobian matrix dY/dB where Y is the propagated state, using the representation given by getOrbitType() and getPositionAngleType(), and B is the set of propagator builder parameters representing this very same state, or null if Y and B have the same type, in which case callers must consider the Jacobian is the identity matrix
      Since:
      14.0
    • getParametersJacobian

      RealMatrix getParametersJacobian(SpacecraftState state)
      Get the Jacobian with respect to propagation parameters.
      Parameters:
      state - spacecraft state
      Returns:
      Jacobian with respect to propagation parameters, or null if there are no parameters
    • getJacobiansColumnsNames

      List<String> getJacobiansColumnsNames()
      Get the names of the parameters in the matrix returned by getParametersJacobian(org.orekit.propagation.SpacecraftState).

      Beware that the names of the parameters are fully known only once all force models have been set up and their parameters properly selected. Applications that retrieve the matrices harvester first and select the force model parameters to retrieve afterwards (but obviously before starting propagation) must take care to wait until the parameters have been set up before they call this method. Calling the method too early would return wrong results.

      The names are returned in the Jacobians matrix columns order

      Returns:
      names of the parameters (i.e. columns) of the Jacobian matrix
    • getOrbitType

      OrbitType getOrbitType()
      Get the orbit type used for the matrix computation.
      Returns:
      the orbit type used for the matrix computation
    • getPositionAngleType

      PositionAngleType getPositionAngleType()
      Get the position angle used for the matrix computation.

      Irrelevant if getOrbitType() returns OrbitType.CARTESIAN.

      Returns:
      the position angle used for the matrix computation