public class AdapterPropagator extends AbstractAnalyticalPropagator
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
Modifier and Type | Class and Description |
---|---|
static interface |
AdapterPropagator.DifferentialEffect
Interface for orbit differential effects.
|
DEFAULT_LAW, DEFAULT_MASS, EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE
Constructor and Description |
---|
AdapterPropagator(Propagator reference)
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.
|
protected double |
getMass(AbsoluteDate date)
Get the mass.
|
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.
|
protected void |
resetIntermediateState(SpacecraftState state,
boolean forward)
Reset an intermediate state.
|
acceptStep, addEventDetector, clearEventsDetectors, getEventsDetectors, getGeneratedEphemeris, getPvProvider, propagate
addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getFixedStepSize, getFrame, getManagedAdditionalStates, getMode, getPVCoordinates, getStartDate, getStepHandler, isAdditionalStateManaged, propagate, setAttitudeProvider, setEphemerisMode, setEphemerisMode, setMasterMode, setMasterMode, setSlaveMode, setStartDate, updateAdditionalStates
public AdapterPropagator(Propagator reference)
The reference propagator can be almost anything, numerical, analytical, and even an ephemeris. It may already take some maneuvers into account.
reference
- reference propagatorpublic void addEffect(AdapterPropagator.DifferentialEffect effect)
effect
- differential effectpublic Propagator getPropagator()
public List<AdapterPropagator.DifferentialEffect> getEffects()
public SpacecraftState getInitialState() throws OrekitException
getInitialState
in interface Propagator
getInitialState
in class AbstractPropagator
OrekitException
- if state cannot be retrievedpublic void resetInitialState(SpacecraftState state) throws OrekitException
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- new initial state to considerOrekitException
- if initial state cannot be resetprotected void resetIntermediateState(SpacecraftState state, boolean forward) throws OrekitException
resetIntermediateState
in class AbstractAnalyticalPropagator
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfOrekitException
- if initial state cannot be resetprotected SpacecraftState basicPropagate(AbsoluteDate date) throws OrekitException
This method is similar in spirit to the AbstractAnalyticalPropagator.propagate(org.orekit.time.AbsoluteDate, org.orekit.time.AbsoluteDate)
method,
except that it does not call any handler during
propagation, nor any discrete events, not additional states. It always
stop exactly at the specified date.
basicPropagate
in class AbstractAnalyticalPropagator
date
- target date for propagationOrekitException
- if propagation cannot reach specified dateprotected Orbit propagateOrbit(AbsoluteDate date) throws OrekitException
propagateOrbit
in class AbstractAnalyticalPropagator
date
- target date for the orbitOrekitException
- if some parameters are out of boundsprotected double getMass(AbsoluteDate date) throws OrekitException
getMass
in class AbstractAnalyticalPropagator
date
- target date for the orbitOrekitException
- if some parameters are out of boundsCopyright © 2002-2017 CS Systèmes d'information. All rights reserved.