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, getSpacecraftState, manageStateFrame, propagate, propagate, setAttitudeProvider, setAttitudeProviderEvents, setAttitudeProviderForces, setEphemerisMode, setMasterMode, setMasterMode, setOrbitFrame, setSlaveMode, setStartDate
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getNativeFrame
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 © 2023 CNES. All rights reserved.