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_MASS
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, getEphemerisGenerator, getEventsDetectors, getJacobiansColumnsNames, getPvProvider, propagate
addAdditionalStateProvider, createHarvester, getAdditionalStateProviders, getAttitudeProvider, getFrame, getHarvester, getManagedAdditionalStates, getMultiplexer, getPVCoordinates, getStartDate, initializePropagation, isAdditionalStateManaged, propagate, setAttitudeProvider, setStartDate, setupMatricesComputation, stateChanged, updateAdditionalStates, updateUnmanagedStates
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearStepHandlers, getDefaultLaw, setStepHandler, setStepHandler
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()
getInitialState
in interface Propagator
getInitialState
in class AbstractPropagator
public void resetInitialState(SpacecraftState state)
resetInitialState
in interface Propagator
resetInitialState
in class AbstractPropagator
state
- new initial state to considerprotected void resetIntermediateState(SpacecraftState state, boolean forward)
resetIntermediateState
in class AbstractAnalyticalPropagator
state
- new intermediate state to considerforward
- if true, the intermediate state is valid for
propagations after itselfprotected SpacecraftState basicPropagate(AbsoluteDate date)
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 propagationprotected Orbit propagateOrbit(AbsoluteDate date)
propagateOrbit
in class AbstractAnalyticalPropagator
date
- target date for the orbitprotected double getMass(AbsoluteDate date)
getMass
in class AbstractAnalyticalPropagator
date
- target date for the orbitCopyright © 2002-2022 CS GROUP. All rights reserved.