org.orekit.propagation.analytical
Class AdapterPropagator

java.lang.Object
  extended by org.orekit.propagation.AbstractPropagator
      extended by org.orekit.propagation.analytical.AdapterPropagator
All Implemented Interfaces:
Serializable, Propagator, PVCoordinatesProvider

public class AdapterPropagator
extends AbstractPropagator

Orbit propagator that adapts an underlying propagator, adding differential effects.

This propagator is used when a reference propagator does not handle some effects that we need. A typical example would be an ephemeris that was computed for a reference orbit, and we want to compute a station-keeping maneuver on top of this ephemeris, changing its final state. The principal is to add one or more small maneuvers analytical models to it and use it as a new propagator, which takes the maneuvers into account.

From a space flight dynamics point of view, this is a differential correction approach. From a computer science point of view, this is a use of the decorator design pattern.

Author:
Luc Maisonobe
See Also:
Propagator, SmallManeuverAnalyticalModel, Serialized Form

Nested Class Summary
static interface AdapterPropagator.DifferentialEffect
          Interface for orbit differential effects.
 
Field Summary
 
Fields inherited from class org.orekit.propagation.AbstractPropagator
MASS
 
Fields inherited from interface org.orekit.propagation.Propagator
EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE
 
Constructor Summary
AdapterPropagator(Propagator reference)
          Build a propagator from an underlying reference propagator.
 
Method Summary
 void addEffect(AdapterPropagator.DifferentialEffect effect)
          Add a differential effect.
protected  SpacecraftState basicPropagate(AbsoluteDate date)
          Propagate an orbit without any fancy features.
 List<AdapterPropagator.DifferentialEffect> getEffects()
          Get the differential effects.
 SpacecraftState getInitialState()
          Get the propagator initial state.
 Propagator getPropagator()
          Get the reference propagator.
protected  Orbit propagateOrbit(AbsoluteDate date)
          Extrapolate an orbit up to a specific target date.
 void resetInitialState(SpacecraftState state)
          Reset the propagator initial state.
 
Methods inherited from class org.orekit.propagation.AbstractPropagator
acceptStep, addAdditionalStateProvider, addAdditionalStateProvider, addEventDetector, clearEventsDetectors, getAttitudeProvider, getAttitudeProviderEvents, getAttitudeProviderForces, getEventsDetectors, getFrame, getGeneratedEphemeris, getMode, getPVCoordinates, getPvProvider, manageStateFrame, propagate, propagate, setAttitudeProvider, setAttitudeProviderEvents, setAttitudeProviderForces, setEphemerisMode, setMasterMode, setMasterMode, setOrbitFrame, setSlaveMode, setStartDate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AdapterPropagator

public AdapterPropagator(Propagator reference)
Build a propagator from an underlying reference propagator.

The reference propagator can be almost anything, numerical, analytical, and even an ephemeris. It may already take some maneuvers into account.

Parameters:
reference - reference propagator
Method Detail

addEffect

public void addEffect(AdapterPropagator.DifferentialEffect effect)
Add a differential effect.

Parameters:
effect - differential effect

getPropagator

public Propagator getPropagator()
Get the reference propagator.

Returns:
reference propagator

getEffects

public List<AdapterPropagator.DifferentialEffect> getEffects()
Get the differential effects.

Returns:
differential effects models, as an unmodifiable list

getInitialState

public SpacecraftState getInitialState()
                                throws OrekitException
Get the propagator initial state.

Specified by:
getInitialState in interface Propagator
Overrides:
getInitialState in class AbstractPropagator
Returns:
initial state
Throws:
OrekitException - if state cannot be retrieved

resetInitialState

public void resetInitialState(SpacecraftState state)
                       throws PropagationException
Reset the propagator initial state.

Specified by:
resetInitialState in interface Propagator
Overrides:
resetInitialState in class AbstractPropagator
Parameters:
state - new initial state to consider
Throws:
PropagationException - if initial state cannot be reset

basicPropagate

protected SpacecraftState basicPropagate(AbsoluteDate date)
                                  throws PropagationException
Propagate an orbit without any fancy features.

This method is similar in spirit to the AbstractPropagator.propagate(org.orekit.time.AbsoluteDate) method, except that it does not call any handler during propagation, nor any discrete events. It always stop exactly at the specified date.

Overrides:
basicPropagate in class AbstractPropagator
Parameters:
date - target date for propagation
Returns:
state at specified date
Throws:
PropagationException - if propagation cannot reach specified date

propagateOrbit

protected Orbit propagateOrbit(AbsoluteDate date)
                        throws PropagationException
Extrapolate an orbit up to a specific target date.

Specified by:
propagateOrbit in class AbstractPropagator
Parameters:
date - target date for the orbit
Returns:
extrapolated parameters
Throws:
PropagationException - if some parameters are out of bounds


Copyright © 2017 CNES. All Rights Reserved.