Propagator, PVCoordinatesProviderAbstractAnalyticalPropagator, AbstractIntegratedPropagatorpublic abstract class AbstractPropagator extends Object implements Propagator
Propagator methods for analytical propagators.
This abstract class allows to provide easily the full set of Propagator
methods, including all propagation modes support and discrete events support for
any simple propagation method.
DEFAULT_LAW, DEFAULT_MASS, EPHEMERIS_GENERATION_MODE, MASTER_MODE, SLAVE_MODE| Modifier | Constructor | Description |
|---|---|---|
protected |
AbstractPropagator() |
Build a new instance.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
addAdditionalStateProvider(AdditionalStateProvider additionalStateProvider) |
Add a set of user-specified state parameters to be computed along with the orbit propagation.
|
abstract <T extends EventDetector> |
addEventDetector(T detector) |
Add an event detector.
|
abstract void |
clearEventsDetectors() |
Remove all events detectors.
|
List<AdditionalStateProvider> |
getAdditionalStateProviders() |
Get an unmodifiable list of providers for additional state.
|
AttitudeProvider |
getAttitudeProvider() |
Get attitude provider.
|
abstract Collection<EventDetector> |
getEventsDetectors() |
Get all the events detectors that have been added.
|
protected double |
getFixedStepSize() |
Get the fixed step size.
|
Frame |
getFrame() |
Get the frame in which the orbit is propagated.
|
abstract BoundedPropagator |
getGeneratedEphemeris() |
Get the ephemeris generated during propagation.
|
SpacecraftState |
getInitialState() |
Get the propagator initial state.
|
String[] |
getManagedAdditionalStates() |
Get all the names of all managed states.
|
int |
getMode() |
Get the current operating mode of the propagator.
|
TimeStampedPVCoordinates |
getPVCoordinates(AbsoluteDate date,
Frame frame) |
Get the
PVCoordinates of the body in the selected frame. |
protected AbsoluteDate |
getStartDate() |
Get the start date.
|
protected OrekitStepHandler |
getStepHandler() |
Get the step handler.
|
boolean |
isAdditionalStateManaged(String name) |
Check if an additional state is managed.
|
SpacecraftState |
propagate(AbsoluteDate target) |
Propagate towards a target date.
|
void |
resetInitialState(SpacecraftState state) |
Reset the propagator initial state.
|
void |
setAttitudeProvider(AttitudeProvider attitudeProvider) |
Set attitude provider.
|
void |
setEphemerisMode() |
Set the propagator to ephemeris generation mode.
|
void |
setEphemerisMode(OrekitStepHandler handler) |
Set the propagator to ephemeris generation mode with the specified handler for each
integration step.
|
void |
setMasterMode(double h,
OrekitFixedStepHandler handler) |
Set the propagator to master mode with fixed steps.
|
void |
setMasterMode(OrekitStepHandler handler) |
Set the propagator to master mode with variable steps.
|
void |
setSlaveMode() |
Set the propagator to slave mode.
|
protected void |
setStartDate(AbsoluteDate startDate) |
Set a start date.
|
protected SpacecraftState |
updateAdditionalStates(SpacecraftState original) |
Update state by adding all additional states.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitpropagateprotected void setStartDate(AbsoluteDate startDate)
startDate - start dateprotected AbsoluteDate getStartDate()
public AttitudeProvider getAttitudeProvider()
getAttitudeProvider in interface Propagatorpublic void setAttitudeProvider(AttitudeProvider attitudeProvider)
setAttitudeProvider in interface PropagatorattitudeProvider - attitude providerpublic SpacecraftState getInitialState() throws OrekitException
getInitialState in interface PropagatorOrekitException - if state cannot be retrievedpublic int getMode()
getMode in interface PropagatorPropagator.SLAVE_MODE, Propagator.MASTER_MODE,
Propagator.EPHEMERIS_GENERATION_MODEPropagator.setSlaveMode(),
Propagator.setMasterMode(double, OrekitFixedStepHandler),
Propagator.setMasterMode(OrekitStepHandler),
Propagator.setEphemerisMode()public Frame getFrame()
The propagation frame is the definition frame of the initial state, so this method should be called after this state has been set, otherwise it may return null.
getFrame in interface PropagatorPropagator.resetInitialState(SpacecraftState)public void resetInitialState(SpacecraftState state) throws OrekitException
resetInitialState in interface Propagatorstate - new initial state to considerOrekitException - if initial state cannot be resetpublic void setSlaveMode()
This mode is used when the user needs only the final orbit at the target time. The (slave) propagator computes this result and return it to the calling (master) application, without any intermediate feedback.
This is the default mode.
public void setMasterMode(double h,
OrekitFixedStepHandler handler)
This mode is used when the user needs to have some custom function called at the end of each finalized step during integration. The (master) propagator integration loop calls the (slave) application callback methods at each finalized step.
setMasterMode in interface Propagatorh - fixed stepsize (s)handler - handler called at the end of each finalized stepPropagator.setSlaveMode(),
Propagator.setMasterMode(OrekitStepHandler),
Propagator.setEphemerisMode(),
Propagator.getMode(),
Propagator.MASTER_MODEpublic void setMasterMode(OrekitStepHandler handler)
This mode is used when the user needs to have some custom function called at the end of each finalized step during integration. The (master) propagator integration loop calls the (slave) application callback methods at each finalized step.
setMasterMode in interface Propagatorhandler - handler called at the end of each finalized stepPropagator.setSlaveMode(),
Propagator.setMasterMode(double, OrekitFixedStepHandler),
Propagator.setEphemerisMode(),
Propagator.getMode(),
Propagator.MASTER_MODEpublic void setEphemerisMode()
This mode is used when the user needs random access to the orbit state at any time between the initial and target times, and in no sequential order. A typical example is the implementation of search and iterative algorithms that may navigate forward and backward inside the propagation range before finding their result.
Beware that since this mode stores all intermediate results, it may be memory intensive for long integration ranges and high precision/short time steps.
public void setEphemerisMode(OrekitStepHandler handler)
This mode is used when the user needs random access to the orbit state at any time between the initial and target times, as well as access to the steps computed by the integrator as in Master Mode. A typical example is the implementation of search and iterative algorithms that may navigate forward and backward inside the propagation range before finding their result.
Beware that since this mode stores all intermediate results, it may be memory intensive for long integration ranges and high precision/short time steps.
setEphemerisMode in interface Propagatorhandler - handler called at the end of each finalized stepPropagator.setEphemerisMode(),
Propagator.getGeneratedEphemeris(),
Propagator.setSlaveMode(),
Propagator.setMasterMode(double, OrekitFixedStepHandler),
Propagator.setMasterMode(OrekitStepHandler),
Propagator.getMode(),
Propagator.EPHEMERIS_GENERATION_MODEpublic void addAdditionalStateProvider(AdditionalStateProvider additionalStateProvider) throws OrekitException
addAdditionalStateProvider in interface PropagatoradditionalStateProvider - provider for additional stateOrekitException - if an additional state with the same name is already presentpublic List<AdditionalStateProvider> getAdditionalStateProviders()
getAdditionalStateProviders in interface Propagatorprotected SpacecraftState updateAdditionalStates(SpacecraftState original) throws OrekitException
original - original stateOrekitException - if one of the providers throws oneaddAdditionalStateProvider(AdditionalStateProvider)public boolean isAdditionalStateManaged(String name)
Managed states are states for which the propagators know how to compute
its evolution. They correspond to additional states for which an
additional state provider has been registered
by calling the addAdditionalStateProvider method. If the propagator is an integrator-based
propagator, the states for which a set of additional equations has
been registered by calling the addAdditionalEquations
method are also counted as managed additional states.
Additional states that are present in the initial state
but have no evolution method registered are not considered as managed states.
These unmanaged additional states are not lost during propagation, though. Their
value will simply be copied unchanged throughout propagation.
isAdditionalStateManaged in interface Propagatorname - name of the additional statepublic String[] getManagedAdditionalStates()
getManagedAdditionalStates in interface Propagatorprotected double getFixedStepSize()
protected OrekitStepHandler getStepHandler()
public abstract BoundedPropagator getGeneratedEphemeris()
getGeneratedEphemeris in interface PropagatorPropagator.setEphemerisMode()public abstract <T extends EventDetector> void addEventDetector(T detector)
addEventDetector in interface PropagatorT - class type for the generic versiondetector - event detector to addPropagator.clearEventsDetectors(),
Propagator.getEventsDetectors()public abstract Collection<EventDetector> getEventsDetectors()
getEventsDetectors in interface PropagatorPropagator.addEventDetector(EventDetector),
Propagator.clearEventsDetectors()public abstract void clearEventsDetectors()
clearEventsDetectors in interface PropagatorPropagator.addEventDetector(EventDetector),
Propagator.getEventsDetectors()public SpacecraftState propagate(AbsoluteDate target) throws OrekitException
Simple propagators use only the target date as the specification for computing the propagated state. More feature rich propagators can consider other information and provide different operating modes or G-stop facilities to stop at pinpointed events occurrences. In these cases, the target date is only a hint, not a mandatory objective.
propagate in interface Propagatortarget - target date towards which orbit state should be propagatedOrekitException - if state cannot be propagatedpublic TimeStampedPVCoordinates getPVCoordinates(AbsoluteDate date, Frame frame) throws OrekitException
PVCoordinates of the body in the selected frame.getPVCoordinates in interface PVCoordinatesProviderdate - current dateframe - the frame where to define the positionOrekitException - if position cannot be computed in given frameCopyright © 2002-2018 CS Systèmes d'information. All rights reserved.