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 FormModifier and Type | Class and Description |
---|---|
static interface |
AdapterPropagator.DifferentialEffect
Interface for orbit differential effects.
|
MASS
EPHEMERIS_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, setStartDate
public 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 Propagator
getInitialState
in class AbstractPropagator
PatriusException
- if state cannot be retrievedpublic void resetInitialState(SpacecraftState state) throws PropagationException
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- 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 AbstractPropagator
date
- target date for propagationPropagationException
- if propagation cannot reach specified dateprotected Orbit propagateOrbit(AbsoluteDate date) throws PropagationException
propagateOrbit
in class AbstractPropagator
date
- target date for the orbitPropagationException
- if some parameters are out of boundsCopyright © 2019 CNES. All rights reserved.