Class AbstractAnalyticalMatricesHarvester

java.lang.Object
org.orekit.propagation.AbstractMatricesHarvester
org.orekit.propagation.analytical.AbstractAnalyticalMatricesHarvester
All Implemented Interfaces:
AdditionalDataProvider<double[]>, MatricesHarvester

public abstract class AbstractAnalyticalMatricesHarvester extends AbstractMatricesHarvester implements AdditionalDataProvider<double[]>
Base class harvester between two-dimensional Jacobian matrices and analytical orbit propagator.
Since:
11.1
Author:
Thomas Paulet, Bryan Cazabonne
  • Constructor Details

    • AbstractAnalyticalMatricesHarvester

      protected AbstractAnalyticalMatricesHarvester(AbstractAnalyticalPropagator propagator)
      Simple constructor.

      The arguments for initial matrices must be compatible with the orbit type and position angle that will be used by propagator

      Parameters:
      propagator - propagator bound to this harvester
  • Method Details

    • setInitialStm

      protected void setInitialStm(String stmName, RealMatrix stm)
      Set the initial State Transition Matrix.

      The arguments for initial matrices must be compatible with the orbit type and position angle that will be used by propagator, which may be different from input and output

      Overrides:
      setInitialStm in class AbstractMatricesHarvester
      Parameters:
      stmName - State Transition Matrix state name
      stm - initial State Transition Matrix ∂Y/∂I₀ if null (which is the most frequent case), input and output orbit types are assumed to be identical and the matrix is assumed to be the 6x6 identity
    • getJacobiansColumnsNames

      public List<String> getJacobiansColumnsNames()
      Get the names of the parameters in the matrix returned by MatricesHarvester.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

      Specified by:
      getJacobiansColumnsNames in interface MatricesHarvester
      Returns:
      names of the parameters (i.e. columns) of the Jacobian matrix
    • freezeColumnsNames

      public void freezeColumnsNames()
      Freeze the names of the Jacobian columns.

      This method is called when propagation starts, i.e. when configuration is completed

      Specified by:
      freezeColumnsNames in class AbstractMatricesHarvester
    • getName

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

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

      Specified by:
      getName in interface AdditionalDataProvider<double[]>
      Returns:
      name of the additional data (names containing "orekit" with any case are reserved for the library internal use)
    • getAdditionalData

      public double[] getAdditionalData(SpacecraftState state)
      Get the additional data.
      Specified by:
      getAdditionalData in interface AdditionalDataProvider<double[]>
      Parameters:
      state - spacecraft state to which additional data should correspond
      Returns:
      additional state corresponding to spacecraft state
    • getStateTransitionMatrix

      public 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 MatricesHarvester.getStateJacobianVsBuilderParameters(SpacecraftState).

      Specified by:
      getStateTransitionMatrix in interface MatricesHarvester
      Parameters:
      state - spacecraft state
      Returns:
      state transition matrix, with semantics consistent with propagation, or null if no state transition matrix is available orbit type.
    • getParametersJacobian

      public RealMatrix getParametersJacobian(SpacecraftState state)
      Get the Jacobian with respect to propagation parameters.
      Specified by:
      getParametersJacobian in interface MatricesHarvester
      Parameters:
      state - spacecraft state
      Returns:
      Jacobian with respect to propagation parameters, or null if there are no parameters
    • setReferenceState

      public 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.

      Specified by:
      setReferenceState in interface MatricesHarvester
      Overrides:
      setReferenceState in class AbstractMatricesHarvester
      Parameters:
      reference - reference state to set
    • getOrbitType

      public OrbitType getOrbitType()
      Get the orbit type used for the matrix computation.
      Specified by:
      getOrbitType in interface MatricesHarvester
      Returns:
      the orbit type used for the matrix computation
    • getPositionAngleType

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

      Irrelevant if MatricesHarvester.getOrbitType() returns OrbitType.CARTESIAN.

      Specified by:
      getPositionAngleType in interface MatricesHarvester
      Returns:
      the position angle used for the matrix computation
    • getGradientConverter

      public abstract AbstractAnalyticalGradientConverter getGradientConverter()
      Get the gradient converter related to the analytical orbit propagator.
      Returns:
      the gradient converter