public interface Propagator extends PVCoordinatesProvider, Serializable
This interface is the top-level abstraction for orbit propagation. It only allows propagation to a predefined date. It is implemented by analytical models which have no time limit, by orbit readers based on external data files, by numerical integrators using rich force models and by continuous models built after numerical integration has been completed and dense output data as been gathered.
Modifier and Type | Field and Description |
---|---|
static int |
EPHEMERIS_GENERATION_MODE
Indicator for ephemeris generation mode.
|
static int |
MASTER_MODE
Indicator for master mode.
|
static int |
SLAVE_MODE
Indicator for slave mode.
|
Modifier and Type | Method and Description |
---|---|
void |
addEventDetector(EventDetector detector)
Add an event detector.
|
void |
clearEventsDetectors()
Remove all events detectors.
|
AttitudeProvider |
getAttitudeProvider()
Get attitude provider.
|
AttitudeProvider |
getAttitudeProviderEvents()
Get attitude provider for events computation.
|
AttitudeProvider |
getAttitudeProviderForces()
Get attitude provider for forces computation.
|
Collection<EventDetector> |
getEventsDetectors()
Get all the events detectors that have been added.
|
Frame |
getFrame()
Get the frame in which the orbit is propagated.
|
BoundedPropagator |
getGeneratedEphemeris()
Get the ephemeris generated during propagation.
|
SpacecraftState |
getInitialState()
Get the propagator initial state.
|
int |
getMode()
Get the current operating mode of the propagator.
|
SpacecraftState |
propagate(AbsoluteDate target)
Propagate towards a target date.
|
SpacecraftState |
propagate(AbsoluteDate start,
AbsoluteDate target)
Propagate from a start date towards a target date.
|
void |
resetInitialState(SpacecraftState state)
Reset the propagator initial state.
|
void |
setAttitudeProvider(AttitudeProvider attitudeProvider)
Set attitude provider for forces and events computation.
|
void |
setAttitudeProviderEvents(AttitudeProvider attitudeProviderEvents)
Set attitude provider for events computation.
|
void |
setAttitudeProviderForces(AttitudeProvider attitudeProviderForces)
Set attitude provider for forces computation.
|
void |
setEphemerisMode()
Set the propagator to ephemeris generation mode.
|
void |
setMasterMode(double h,
PatriusFixedStepHandler handler)
Set the propagator to master mode with fixed steps.
|
void |
setMasterMode(PatriusStepHandler handler)
Set the propagator to master mode with variable steps.
|
void |
setOrbitFrame(Frame frame)
Set propagation frame.
|
void |
setSlaveMode()
Set the propagator to slave mode.
|
getPVCoordinates
static final int SLAVE_MODE
static final int MASTER_MODE
static final int EPHEMERIS_GENERATION_MODE
int getMode()
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.
void setMasterMode(double h, PatriusFixedStepHandler 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.
h
- fixed stepsize (s)handler
- handler called at the end of each finalized stepsetSlaveMode()
,
setMasterMode(PatriusStepHandler)
,
setEphemerisMode()
,
getMode()
,
MASTER_MODE
void setMasterMode(PatriusStepHandler 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.
handler
- handler called at the end of each finalized stepsetSlaveMode()
,
setMasterMode(double, PatriusFixedStepHandler)
,
setEphemerisMode()
,
getMode()
,
MASTER_MODE
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.
void setOrbitFrame(Frame frame) throws PatriusException
frame
- the frame to use.
This frame must be inertial or pseudo-inertial, otherwise an exception is raised.PatriusException
- if frame is not inertial or pseudo-inertialBoundedPropagator getGeneratedEphemeris()
IllegalStateException
- if the propagator was not set in ephemeris
generation mode before propagationsetEphemerisMode()
SpacecraftState getInitialState() throws PatriusException
PatriusException
- if state cannot be retrievedvoid resetInitialState(SpacecraftState state) throws PropagationException
state
- new initial state to considerPropagationException
- if initial state cannot be resetvoid addEventDetector(EventDetector detector)
detector
- event detector to addclearEventsDetectors()
,
getEventsDetectors()
Collection<EventDetector> getEventsDetectors()
addEventDetector(EventDetector)
,
clearEventsDetectors()
void clearEventsDetectors()
AttitudeProvider getAttitudeProvider()
AttitudeProvider getAttitudeProviderForces()
AttitudeProvider getAttitudeProviderEvents()
void setAttitudeProvider(AttitudeProvider attitudeProvider)
ConstantAttitudeLaw
.attitudeProvider
- attitude providervoid setAttitudeProviderForces(AttitudeProvider attitudeProviderForces)
ConstantAttitudeLaw
.attitudeProviderForces
- attitude provider for forces computationvoid setAttitudeProviderEvents(AttitudeProvider attitudeProviderEvents)
ConstantAttitudeLaw
.attitudeProviderEvents
- attitude provider for events computationFrame getFrame()
4 cases are possible:
setOrbitFrame(Frame)
): it is returned.SpacecraftState propagate(AbsoluteDate target) throws PropagationException
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.
target
- target date towards which orbit state should be propagatedPropagationException
- if state cannot be propagatedSpacecraftState propagate(AbsoluteDate start, AbsoluteDate target) throws PropagationException
Those propagators use a start date and a target date to compute the propagated state. For propagators using event detection mechanism, if the provided start date is different from the initial state date, a first, simple propagation is performed, without processing any event computation. Then complete propagation is performed from start date to target date.
start
- start date from which orbit state should be propagatedtarget
- target date to which orbit state should be propagatedPropagationException
- if state cannot be propagatedCopyright © 2017 CNES. All rights reserved.