org.orekit.propagation.analytical

## Class Ephemeris

• All Implemented Interfaces:
BoundedPropagator, Propagator, PVCoordinatesProvider

public class Ephemeris
extends AbstractAnalyticalPropagator
implements BoundedPropagator
This class is designed to accept and handle tabulated orbital entries. Tabulated entries are classified and then extrapolated in way to obtain continuous output, with accuracy and computation methods configured by the user.
Author:
Fabien Maussion, Véronique Pommier-Maurussane, Luc Maisonobe
• ### Field Summary

Fields
Modifier and Type Field and Description
static double DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
Default extrapolation time threshold: 1ms.
• ### Fields inherited from interface org.orekit.propagation.Propagator

DEFAULT_MASS
• ### Constructor Summary

Constructors
Constructor and Description
Ephemeris(List<SpacecraftState> states, int interpolationPoints)
Constructor with tabulated states.
Ephemeris(List<SpacecraftState> states, int interpolationPoints, double extrapolationThreshold)
Constructor with tabulated states.
Ephemeris(List<SpacecraftState> states, int interpolationPoints, double extrapolationThreshold, AttitudeProvider attitudeProvider)
Constructor with tabulated states.
• ### Method Summary

All Methods
Modifier and Type Method and Description
SpacecraftState basicPropagate(AbsoluteDate date)
Propagate an orbit without any fancy features.
protected AbstractMatricesHarvester createHarvester(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
Create the harvester suitable for propagator.
double getExtrapolationThreshold()
Get the maximum timespan outside of the stored ephemeris that is allowed for extrapolation.
Frame getFrame()
Get the frame in which the orbit is propagated.
SpacecraftState getInitialState()
Get the propagator initial state.
String[] getManagedAdditionalStates()
Get all the names of all managed states.
protected double getMass(AbsoluteDate date)
Get the mass.
AbsoluteDate getMaxDate()
Get the last date of the range.
AbsoluteDate getMinDate()
Get the first date of the range.
TimeStampedPVCoordinates getPVCoordinates(AbsoluteDate date, Frame f)
Get the PVCoordinates of the body in the selected frame.
boolean isAdditionalStateManaged(String name)
Check if an additional state is managed.
protected Orbit propagateOrbit(AbsoluteDate date)
Extrapolate an orbit up to a specific target date.
void resetInitialState(SpacecraftState state)
Try (and fail) to reset the initial state.
protected void resetIntermediateState(SpacecraftState state, boolean forward)
Reset an intermediate state.
• ### Methods inherited from class org.orekit.propagation.analytical.AbstractAnalyticalPropagator

acceptStep, addEventDetector, clearEventsDetectors, getEphemerisGenerator, getEventsDetectors, getJacobiansColumnsNames, getPvProvider, propagate
• ### Methods inherited from class org.orekit.propagation.AbstractPropagator

addAdditionalStateProvider, getAdditionalStateProviders, getAttitudeProvider, getHarvester, getMultiplexer, getStartDate, initializeAdditionalStates, initializePropagation, propagate, setAttitudeProvider, setStartDate, setupMatricesComputation, stateChanged, updateAdditionalStates, updateUnmanagedStates
• ### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ### Methods inherited from interface org.orekit.propagation.Propagator

addAdditionalStateProvider, addEventDetector, clearEventsDetectors, clearStepHandlers, getAdditionalStateProviders, getAttitudeProvider, getDefaultLaw, getEphemerisGenerator, getEventsDetectors, getMultiplexer, propagate, propagate, setAttitudeProvider, setStepHandler, setStepHandler, setupMatricesComputation
• ### Methods inherited from interface org.orekit.utils.PVCoordinatesProvider

getPosition
• ### Field Detail

• #### DEFAULT_EXTRAPOLATION_THRESHOLD_SEC

public static final double DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
Default extrapolation time threshold: 1ms.
Since:
9.0
Constant Field Values
• ### Constructor Detail

• #### Ephemeris

public Ephemeris(List<SpacecraftState> states,
int interpolationPoints,
double extrapolationThreshold)
throws MathIllegalArgumentException
Constructor with tabulated states.
Parameters:
states - tabulates states
interpolationPoints - number of points to use in interpolation
extrapolationThreshold - the largest time difference in seconds between the start or stop boundary of the ephemeris bounds to be doing extrapolation
Throws:
MathIllegalArgumentException - if the number of states is smaller than the number of points to use in interpolation
Since:
9.0
Ephemeris(List, int, double, AttitudeProvider)
• #### Ephemeris

public Ephemeris(List<SpacecraftState> states,
int interpolationPoints,
double extrapolationThreshold,
AttitudeProvider attitudeProvider)
throws MathIllegalArgumentException
Constructor with tabulated states.
Parameters:
states - tabulates states
interpolationPoints - number of points to use in interpolation
extrapolationThreshold - the largest time difference in seconds between the start or stop boundary of the ephemeris bounds to be doing extrapolation
attitudeProvider - attitude law to use.
Throws:
MathIllegalArgumentException - if the number of states is smaller than the number of points to use in interpolation
Since:
10.1
• ### Method Detail

• #### getMinDate

public AbsoluteDate getMinDate()
Get the first date of the range.
Specified by:
getMinDate in interface BoundedPropagator
Returns:
the first date of the range
• #### getMaxDate

public AbsoluteDate getMaxDate()
Get the last date of the range.
Specified by:
getMaxDate in interface BoundedPropagator
Returns:
the last date of the range
• #### getExtrapolationThreshold

public double getExtrapolationThreshold()
Get the maximum timespan outside of the stored ephemeris that is allowed for extrapolation.
Returns:
the extrapolation threshold in seconds
• #### getFrame

public Frame getFrame()
Description copied from class: AbstractPropagator
Get the frame in which the orbit is propagated.

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.

Specified by:
getFrame in interface Propagator
Overrides:
getFrame in class AbstractPropagator
Returns:
frame in which the orbit is propagated
Propagator.resetInitialState(SpacecraftState)
• #### basicPropagate

public SpacecraftState basicPropagate(AbsoluteDate date)
Description copied from class: AbstractAnalyticalPropagator
Propagate an orbit without any fancy features.

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.

Overrides:
basicPropagate in class AbstractAnalyticalPropagator
Parameters:
date - target date for propagation
Returns:
state at specified date
• #### propagateOrbit

protected Orbit propagateOrbit(AbsoluteDate date)
Extrapolate an orbit up to a specific target date.
Specified by:
propagateOrbit in class AbstractAnalyticalPropagator
Parameters:
date - target date for the orbit
Returns:
extrapolated parameters
• #### getMass

protected double getMass(AbsoluteDate date)
Get the mass.
Specified by:
getMass in class AbstractAnalyticalPropagator
Parameters:
date - target date for the orbit
Returns:
mass mass
• #### getPVCoordinates

public TimeStampedPVCoordinates getPVCoordinates(AbsoluteDate date,
Frame f)
Get the PVCoordinates of the body in the selected frame.
Specified by:
getPVCoordinates in interface PVCoordinatesProvider
Overrides:
getPVCoordinates in class AbstractPropagator
Parameters:
date - current date
f - the frame where to define the position
Returns:
time-stamped position/velocity of the body (m and m/s)
• #### resetInitialState

public void resetInitialState(SpacecraftState state)
Try (and fail) to reset the initial state.

This method always throws an exception, as ephemerides cannot be reset.

Specified by:
resetInitialState in interface Propagator
Overrides:
resetInitialState in class AbstractPropagator
Parameters:
state - new initial state to consider
• #### resetIntermediateState

protected void resetIntermediateState(SpacecraftState state,
boolean forward)
Reset an intermediate state.
Specified by:
resetIntermediateState in class AbstractAnalyticalPropagator
Parameters:
state - new intermediate state to consider
forward - if true, the intermediate state is valid for propagations after itself
• #### getInitialState

public SpacecraftState getInitialState()
Get the propagator initial state.
Specified by:
getInitialState in interface Propagator
Overrides:
getInitialState in class AbstractPropagator
Returns:
initial state

public boolean isAdditionalStateManaged(String name)
Check if an additional state is managed.

Managed states are states for which the propagators know how to compute its evolution. They correspond to additional states for which a provider has been registered by calling the addAdditionalStateProvider method.

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.

Specified by:
isAdditionalStateManaged in interface Propagator
Overrides:
isAdditionalStateManaged in class AbstractPropagator
Parameters:
name - name of the additional state
Returns:
true if the additional state is managed

public String[] getManagedAdditionalStates()
Get all the names of all managed states.
Specified by:
getManagedAdditionalStates in interface Propagator
Overrides:
getManagedAdditionalStates in class AbstractPropagator
Returns:
names of all managed states
• #### createHarvester

protected AbstractMatricesHarvester createHarvester(String stmName,
RealMatrix initialStm,
DoubleArrayDictionary initialJacobianColumns)
Create the harvester suitable for propagator.
Overrides:
createHarvester in class AbstractPropagator
Parameters:
stmName - State Transition Matrix state name
initialStm - initial State Transition Matrix ∂Y/∂Y₀, if null (which is the most frequent case), assumed to be 6x6 identity
initialJacobianColumns - initial columns of the Jacobians matrix with respect to parameters, if null or if some selected parameters are missing from the dictionary, the corresponding initial column is assumed to be 0
Returns:
harvester to retrieve computed matrices during and after propagation