public class AdapterPropagator extends AbstractPropagator
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.
Propagator,
SmallManeuverAnalyticalModel,
Serialized Form| Modifier and Type | Class and Description |
|---|---|
static interface |
AdapterPropagator.DifferentialEffect
Interface for orbit differential effects.
|
MASSEPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE| Constructor and Description |
|---|
AdapterPropagator(Propagator referenceIn)
Build a propagator from an underlying reference propagator.
|
| Modifier and Type | Method and Description |
|---|---|
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.
|
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, setStartDatepublic AdapterPropagator(Propagator referenceIn)
The reference propagator can be almost anything, numerical, analytical, and even an ephemeris. It may already take some maneuvers into account.
referenceIn - reference propagatorpublic void addEffect(AdapterPropagator.DifferentialEffect effect)
effect - differential effectpublic Propagator getPropagator()
public List<AdapterPropagator.DifferentialEffect> getEffects()
public SpacecraftState getInitialState() throws PatriusException
getInitialState in interface PropagatorgetInitialState in class AbstractPropagatorPatriusException - if state cannot be retrievedpublic void resetInitialState(SpacecraftState state) throws PropagationException
resetInitialState in interface PropagatorresetInitialState in class AbstractPropagatorstate - new initial state to considerPropagationException - if initial state cannot be resetprotected SpacecraftState basicPropagate(AbsoluteDate date) throws PropagationException
This method is similar in spirit to the AbstractPropagator.propagate(fr.cnes.sirius.patrius.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.
basicPropagate in class AbstractPropagatordate - target date for propagationPropagationException - if propagation cannot reach specified dateprotected Orbit propagateOrbit(AbsoluteDate date) throws PropagationException
propagateOrbit in class AbstractPropagatordate - target date for the orbitPropagationException - if some parameters are out of boundsCopyright © 2020 CNES. All rights reserved.