Class AbstractPropagator

java.lang.Object
org.orekit.propagation.AbstractPropagator
All Implemented Interfaces:
Propagator, PVCoordinatesProvider
Direct Known Subclasses:
AbstractAnalyticalPropagator, AbstractIntegratedPropagator

public abstract class AbstractPropagator extends Object implements Propagator
Common handling of Propagator methods for propagators.

This abstract class allows to provide easily the full set of Propagator methods, including all propagation modes support and discrete events support for any simple propagation method.

Author:
Luc Maisonobe
  • Constructor Details

    • AbstractPropagator

      protected AbstractPropagator()
      Build a new instance.
  • Method Details

    • setStartDate

      protected void setStartDate(AbsoluteDate startDate)
      Set a start date.
      Parameters:
      startDate - start date
    • getStartDate

      protected AbsoluteDate getStartDate()
      Get the start date.
      Returns:
      start date
    • getAttitudeProvider

      public AttitudeProvider getAttitudeProvider()
      Get attitude provider.
      Specified by:
      getAttitudeProvider in interface Propagator
      Returns:
      attitude provider
    • setAttitudeProvider

      public void setAttitudeProvider(AttitudeProvider attitudeProvider)
      Set attitude provider.
      Specified by:
      setAttitudeProvider in interface Propagator
      Parameters:
      attitudeProvider - attitude provider
    • getInitialState

      public SpacecraftState getInitialState()
      Get the propagator initial state.
      Specified by:
      getInitialState in interface Propagator
      Returns:
      initial state
    • getFrame

      public Frame getFrame()
      Get the frame in which the orbit is propagated.

      The propagation frame is the definition frame of the initial state, so this method should be called after this state has been set, otherwise it may return null.

      Specified by:
      getFrame in interface Propagator
      Returns:
      frame in which the orbit is propagated
      See Also:
    • resetInitialState

      public void resetInitialState(SpacecraftState state)
      Reset the propagator initial state.
      Specified by:
      resetInitialState in interface Propagator
      Parameters:
      state - new initial state to consider
    • getMultiplexer

      public StepHandlerMultiplexer getMultiplexer()
      Get the multiplexer holding all step handlers.
      Specified by:
      getMultiplexer in interface Propagator
      Returns:
      multiplexer holding all step handlers
    • addAdditionalDataProvider

      public void addAdditionalDataProvider(AdditionalDataProvider<?> provider)
      Add a set of user-specified data to be computed along with the orbit propagation.
      Specified by:
      addAdditionalDataProvider in interface Propagator
      Parameters:
      provider - provider for additional data
    • getAdditionalDataProviders

      public List<AdditionalDataProvider<?>> getAdditionalDataProviders()
      Get an unmodifiable list of providers for additional data.
      Specified by:
      getAdditionalDataProviders in interface Propagator
      Returns:
      providers for the additional data
    • removeAdditionalDataProvider

      public void removeAdditionalDataProvider(String name)
      Remove an additional data provider.
      Parameters:
      name - data name
      Since:
      13.1
    • setupMatricesComputation

      public MatricesHarvester setupMatricesComputation(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
      Set up computation of State Transition Matrix and Jacobians matrix with respect to parameters.

      If this method is called, both State Transition Matrix and Jacobians with respect to the force models parameters that will be selected when propagation starts will be automatically computed, and the harvester will allow to retrieve them.

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

      Specified by:
      setupMatricesComputation in interface Propagator
      Parameters:
      stmName - State Transition Matrix state name
      initialStm - initial State Transition Matrix ∂Y/∂Y₀, if null (which is the most frequent case), assumed to be 6x6 identity
      initialJacobianColumns - initial columns of the Jacobians matrix with respect to parameters, if null or if some selected parameters are missing from the dictionary, the corresponding initial column is assumed to be 0
      Returns:
      harvester to retrieve computed matrices during and after propagation
    • clearMatricesComputation

      public void clearMatricesComputation()
      Erases the internal matrices harvester.
      Since:
      13.1
    • createHarvester

      protected AbstractMatricesHarvester createHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
      Create the harvester suitable for propagator.
      Parameters:
      stmName - State Transition Matrix state name
      initialStm - initial State Transition Matrix ∂Y/∂Y₀, if null (which is the most frequent case), assumed to be 6x6 identity
      initialJacobianColumns - initial columns of the Jacobians matrix with respect to parameters, if null or if some selected parameters are missing from the dictionary, the corresponding initial column is assumed to be 0
      Returns:
      harvester to retrieve computed matrices during and after propagation
      Since:
      11.1
    • getHarvester

      protected AbstractMatricesHarvester getHarvester()
      Get the harvester.
      Returns:
      harvester, or null if it was not created
      Since:
      11.1
    • updateUnmanagedData

      protected SpacecraftState updateUnmanagedData(SpacecraftState original)
      Update state by adding unmanaged states.
      Parameters:
      original - original state
      Returns:
      updated state, with unmanaged states included
      See Also:
    • updateAdditionalData

      public SpacecraftState updateAdditionalData(SpacecraftState original)
      Update state by adding all additional data.
      Parameters:
      original - original state
      Returns:
      updated state, with all additional data included (including unmanaged data)
      See Also:
    • initializeAdditionalData

      protected void initializeAdditionalData(AbsoluteDate target)
      Initialize the additional state providers at the start of propagation.
      Parameters:
      target - date of propagation. Not equal to initialState.getDate().
      Since:
      11.2
    • isAdditionalDataManaged

      public boolean isAdditionalDataManaged(String name)
      Check if an additional data is managed.

      Managed data are the ones for which the propagators know how to compute its evolution. They correspond to additional data for which a provider has been registered by calling the addAdditionalDataProvider method.

      Additional data that are present in the initial state but have no evolution method registered are not considered as managed data. These unmanaged additional data are not lost during propagation, though. Their value are piecewise constant between state resets that may change them if some event handler resetState method is called at an event occurrence and happens to change the unmanaged additional data.

      Specified by:
      isAdditionalDataManaged in interface Propagator
      Parameters:
      name - name of the additional data
      Returns:
      true if the additional data is managed
    • getManagedAdditionalData

      public String[] getManagedAdditionalData()
      Get all the names of all managed additional data.
      Specified by:
      getManagedAdditionalData in interface Propagator
      Returns:
      names of all managed additional data
    • propagate

      public SpacecraftState propagate(AbsoluteDate target)
      Propagate towards a target date.

      Simple propagators use only the target date as the specification for computing the propagated state. More feature rich propagators can consider other information and provide different operating modes or G-stop facilities to stop at pinpointed events occurrences. In these cases, the target date is only a hint, not a mandatory objective.

      Specified by:
      propagate in interface Propagator
      Parameters:
      target - target date towards which orbit state should be propagated
      Returns:
      propagated state
    • initializePropagation

      protected void initializePropagation()
      Initialize propagation.
      Since:
      10.1
    • stateChanged

      protected void stateChanged(SpacecraftState state)
      Notify about a state change.
      Parameters:
      state - new state