public abstract class FieldAbstractPropagator<T extends RealFieldElement<T>> extends Object implements FieldPropagator<T>
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 and Description |
---|---|
protected |
FieldAbstractPropagator(Field<T> field)
Build a new instance.
|
Modifier and Type | Method and Description |
---|---|
void |
addAdditionalStateProvider(FieldAdditionalStateProvider<T> additionalStateProvider)
Add a set of user-specified state parameters to be computed along with the orbit propagation.
|
abstract <D extends FieldEventDetector<T>> |
addEventDetector(D detector)
Add an event detector.
|
abstract void |
clearEventsDetectors()
Remove all events detectors.
|
List<FieldAdditionalStateProvider<T>> |
getAdditionalStateProviders()
Get an unmodifiable list of providers for additional state.
|
AttitudeProvider |
getAttitudeProvider()
Get attitude provider.
|
abstract Collection<FieldEventDetector<T>> |
getEventsDetectors()
Get all the events detectors that have been added.
|
Field<T> |
getField()
Field getter.
|
protected T |
getFixedStepSize()
Get the fixed step size.
|
Frame |
getFrame()
Get the frame in which the orbit is propagated.
|
abstract FieldBoundedPropagator<T> |
getGeneratedEphemeris()
Get the ephemeris generated during propagation.
|
FieldSpacecraftState<T> |
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.
|
TimeStampedFieldPVCoordinates<T> |
getPVCoordinates(FieldAbsoluteDate<T> date,
Frame frame)
Get the
FieldPVCoordinates of the body in the selected frame. |
protected FieldAbsoluteDate<T> |
getStartDate()
Get the start date.
|
protected FieldOrekitStepHandler<T> |
getStepHandler()
Get the step handler.
|
protected void |
initializePropagation()
Initialize propagation.
|
boolean |
isAdditionalStateManaged(String name)
Check if an additional state is managed.
|
FieldSpacecraftState<T> |
propagate(FieldAbsoluteDate<T> target)
Propagate towards a target date.
|
void |
resetInitialState(FieldSpacecraftState<T> state)
Reset the propagator initial state.
|
void |
setAttitudeProvider(AttitudeProvider attitudeProvider)
Set attitude provider.
|
void |
setEphemerisMode()
Set the propagator to ephemeris generation mode.
|
void |
setMasterMode(FieldOrekitStepHandler<T> handler)
Set the propagator to master mode with variable steps.
|
void |
setMasterMode(T h,
FieldOrekitFixedStepHandler<T> handler)
Set the propagator to master mode with fixed steps.
|
void |
setSlaveMode()
Set the propagator to slave mode.
|
protected void |
setStartDate(FieldAbsoluteDate<T> startDate)
Set a start date.
|
protected void |
stateChanged(FieldSpacecraftState<T> state)
Notify about a state change.
|
protected FieldSpacecraftState<T> |
updateAdditionalStates(FieldSpacecraftState<T> original)
Update state by adding all additional states.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
propagate
protected void setStartDate(FieldAbsoluteDate<T> startDate)
startDate
- start dateprotected FieldAbsoluteDate<T> getStartDate()
public AttitudeProvider getAttitudeProvider()
getAttitudeProvider
in interface FieldPropagator<T extends RealFieldElement<T>>
public void setAttitudeProvider(AttitudeProvider attitudeProvider)
setAttitudeProvider
in interface FieldPropagator<T extends RealFieldElement<T>>
attitudeProvider
- attitude providerpublic FieldSpacecraftState<T> getInitialState()
getInitialState
in interface FieldPropagator<T extends RealFieldElement<T>>
public int getMode()
getMode
in interface FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.SLAVE_MODE
, FieldPropagator.MASTER_MODE
,
FieldPropagator.EPHEMERIS_GENERATION_MODE
FieldPropagator.setSlaveMode()
,
FieldPropagator.setMasterMode(RealFieldElement, FieldOrekitFixedStepHandler)
,
FieldPropagator.setMasterMode(FieldOrekitStepHandler)
,
FieldPropagator.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 FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.resetInitialState(FieldSpacecraftState)
public void resetInitialState(FieldSpacecraftState<T> state)
resetInitialState
in interface FieldPropagator<T extends RealFieldElement<T>>
state
- new initial state to considerpublic 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.
setSlaveMode
in interface FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.setMasterMode(RealFieldElement, FieldOrekitFixedStepHandler)
,
FieldPropagator.setMasterMode(FieldOrekitStepHandler)
,
FieldPropagator.setEphemerisMode()
,
FieldPropagator.getMode()
,
FieldPropagator.SLAVE_MODE
public void setMasterMode(T h, FieldOrekitFixedStepHandler<T> 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 FieldPropagator<T extends RealFieldElement<T>>
h
- fixed stepsize (s)handler
- handler called at the end of each finalized stepFieldPropagator.setSlaveMode()
,
FieldPropagator.setMasterMode(FieldOrekitStepHandler)
,
FieldPropagator.setEphemerisMode()
,
FieldPropagator.getMode()
,
FieldPropagator.MASTER_MODE
public void setMasterMode(FieldOrekitStepHandler<T> 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 FieldPropagator<T extends RealFieldElement<T>>
handler
- handler called at the end of each finalized stepFieldPropagator.setSlaveMode()
,
FieldPropagator.setMasterMode(RealFieldElement, FieldOrekitFixedStepHandler)
,
FieldPropagator.setEphemerisMode()
,
FieldPropagator.getMode()
,
FieldPropagator.MASTER_MODE
public 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.
setEphemerisMode
in interface FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.getGeneratedEphemeris()
,
FieldPropagator.setSlaveMode()
,
FieldPropagator.setMasterMode(RealFieldElement, FieldOrekitFixedStepHandler)
,
FieldPropagator.setMasterMode(FieldOrekitStepHandler)
,
FieldPropagator.getMode()
,
FieldPropagator.EPHEMERIS_GENERATION_MODE
public void addAdditionalStateProvider(FieldAdditionalStateProvider<T> additionalStateProvider)
addAdditionalStateProvider
in interface FieldPropagator<T extends RealFieldElement<T>>
additionalStateProvider
- provider for additional statepublic List<FieldAdditionalStateProvider<T>> getAdditionalStateProviders()
getAdditionalStateProviders
in interface FieldPropagator<T extends RealFieldElement<T>>
protected FieldSpacecraftState<T> updateAdditionalStates(FieldSpacecraftState<T> original)
original
- original stateaddAdditionalStateProvider(FieldAdditionalStateProvider)
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 are piecewise constant between state resets that may change them if some
event handler resetState
method is called at an event occurrence and happens
to change the unmanaged additional state.
isAdditionalStateManaged
in interface FieldPropagator<T extends RealFieldElement<T>>
name
- name of the additional statepublic String[] getManagedAdditionalStates()
getManagedAdditionalStates
in interface FieldPropagator<T extends RealFieldElement<T>>
protected T getFixedStepSize()
protected FieldOrekitStepHandler<T> getStepHandler()
public abstract FieldBoundedPropagator<T> getGeneratedEphemeris()
getGeneratedEphemeris
in interface FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.setEphemerisMode()
public abstract <D extends FieldEventDetector<T>> void addEventDetector(D detector)
addEventDetector
in interface FieldPropagator<T extends RealFieldElement<T>>
D
- class type for the generic versiondetector
- event detector to addFieldPropagator.clearEventsDetectors()
,
FieldPropagator.getEventsDetectors()
public abstract Collection<FieldEventDetector<T>> getEventsDetectors()
getEventsDetectors
in interface FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.addEventDetector(FieldEventDetector)
,
FieldPropagator.clearEventsDetectors()
public abstract void clearEventsDetectors()
clearEventsDetectors
in interface FieldPropagator<T extends RealFieldElement<T>>
FieldPropagator.addEventDetector(FieldEventDetector)
,
FieldPropagator.getEventsDetectors()
public FieldSpacecraftState<T> propagate(FieldAbsoluteDate<T> target)
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 FieldPropagator<T extends RealFieldElement<T>>
target
- target date towards which orbit state should be propagatedpublic TimeStampedFieldPVCoordinates<T> getPVCoordinates(FieldAbsoluteDate<T> date, Frame frame)
FieldPVCoordinates
of the body in the selected frame.getPVCoordinates
in interface FieldPVCoordinatesProvider<T extends RealFieldElement<T>>
date
- current dateframe
- the frame where to define the positionprotected void initializePropagation()
protected void stateChanged(FieldSpacecraftState<T> state)
state
- new stateCopyright © 2002-2020 CS Group. All rights reserved.