Class FieldEphemeris<T extends CalculusFieldElement<T>>
- java.lang.Object
-
- org.orekit.propagation.FieldAbstractPropagator<T>
-
- org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator<T>
-
- org.orekit.propagation.analytical.FieldEphemeris<T>
-
- All Implemented Interfaces:
FieldPropagator<T>,FieldBoundedPVCoordinatesProvider<T>,FieldPVCoordinatesProvider<T>,ParameterDriversProvider
public class FieldEphemeris<T extends CalculusFieldElement<T>> extends FieldAbstractAnalyticalPropagator<T> implements FieldBoundedPVCoordinatesProvider<T>
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.- Since:
- 14.0
- Author:
- Luc Maisonobe, Vincent Cucchietti, Romain Serra
- See Also:
Ephemeris
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.FieldPropagator
DEFAULT_MASS
-
-
Constructor Summary
Constructors Constructor Description FieldEphemeris(List<FieldSpacecraftState<T>> states, int interpolationPoints)Constructor with tabulated states and default Hermite interpolation.FieldEphemeris(List<FieldSpacecraftState<T>> states, FieldTimeInterpolator<FieldSpacecraftState<T>,T> stateInterpolator)Constructor with tabulated states.FieldEphemeris(List<FieldSpacecraftState<T>> states, FieldTimeInterpolator<FieldSpacecraftState<T>,T> stateInterpolator, AttitudeProvider attitudeProvider)Constructor with tabulated states and attitude provider.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FieldSpacecraftState<T>basicPropagate(FieldAbsoluteDate<T> date)Propagate an orbit without any fancy features.voidcheckInputConsistency(List<FieldSpacecraftState<T>> states, FieldTimeInterpolator<FieldSpacecraftState<T>,T> interpolator)Check input consistency between states and the interpolator.voidcheckStatesDefinitionsConsistency(List<FieldSpacecraftState<T>> states)Check that all state are either orbit defined or based on absolute position-velocity-acceleration.FramegetFrame()Get the frame in which the orbit is propagated.FieldSpacecraftState<T>getInitialState()Get the propagator initial state.String[]getManagedAdditionalData()Get all the names of all managed data.protected TgetMass(FieldAbsoluteDate<T> date)Get the mass.FieldAbsoluteDate<T>getMaxDate()Get the last date of the range.FieldAbsoluteDate<T>getMinDate()Get the first date of the range.List<ParameterDriver>getParametersDrivers()Get the drivers for parameters.FieldTimeInterpolator<FieldSpacecraftState<T>,T>getStateInterpolator()Get state interpolator.booleanisAdditionalDataManaged(String name)Check if an additional data is managed.FieldOrbit<T>propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)Propagate an orbit up to a specific target date.voidresetInitialState(FieldSpacecraftState<T> state)Try (and fail) to reset the initial state.protected voidresetIntermediateState(FieldSpacecraftState<T> state, boolean forward)Reset an intermediate state.-
Methods inherited from class org.orekit.propagation.analytical.FieldAbstractAnalyticalPropagator
acceptStep, addEventDetector, clearEventsDetectors, getEphemerisGenerator, getEventDetectors, propagate
-
Methods inherited from class org.orekit.propagation.FieldAbstractPropagator
addAdditionalDataProvider, getAdditionalDataProviders, getAttitudeProvider, getField, getMultiplexer, getStartDate, initializeAdditionalData, initializePropagation, propagate, removeAdditionalDataProvider, setAttitudeProvider, setStartDate, stateChanged, updateAdditionalData, updateUnmanagedData
-
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.FieldPropagator
clearStepHandlers, getPosition, getPVCoordinates, getVelocity, setStepHandler, setStepHandler
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
-
-
-
Constructor Detail
-
FieldEphemeris
public FieldEphemeris(List<FieldSpacecraftState<T>> states, int interpolationPoints) throws MathIllegalArgumentException
Constructor with tabulated states and default Hermite interpolation.- Parameters:
states- list of spacecraft statesinterpolationPoints- number of points to use in interpolation- Throws:
MathIllegalArgumentException- if the number of states is smaller than the number of points to use in interpolationOrekitIllegalArgumentException- if states are not defined the same way (orbit or absolute position-velocity-acceleration)- See Also:
FieldSpacecraftStateInterpolator
-
FieldEphemeris
public FieldEphemeris(List<FieldSpacecraftState<T>> states, FieldTimeInterpolator<FieldSpacecraftState<T>,T> stateInterpolator) throws MathIllegalArgumentException
Constructor with tabulated states.- Parameters:
states- list of spacecraft statesstateInterpolator- spacecraft state interpolator- Throws:
MathIllegalArgumentException- if the number of states is smaller than the number of points to use in interpolationOrekitIllegalArgumentException- if states are not defined the same way (orbit or absolute position-velocity-acceleration)
-
FieldEphemeris
public FieldEphemeris(List<FieldSpacecraftState<T>> states, FieldTimeInterpolator<FieldSpacecraftState<T>,T> stateInterpolator, AttitudeProvider attitudeProvider) throws MathIllegalArgumentException
Constructor with tabulated states and attitude provider.- Parameters:
states- list of spacecraft statesstateInterpolator- spacecraft state interpolatorattitudeProvider- attitude law to use- Throws:
MathIllegalArgumentException- if the number of states is smaller than the number of points to use in interpolationOrekitIllegalArgumentException- if states are not defined the same way (orbit or absolute position-velocity-acceleration)
-
-
Method Detail
-
checkInputConsistency
public void checkInputConsistency(List<FieldSpacecraftState<T>> states, FieldTimeInterpolator<FieldSpacecraftState<T>,T> interpolator)
Check input consistency between states and the interpolator.- Parameters:
states- spacecraft states sampleinterpolator- spacecraft state interpolator
-
checkStatesDefinitionsConsistency
public void checkStatesDefinitionsConsistency(List<FieldSpacecraftState<T>> states)
Check that all state are either orbit defined or based on absolute position-velocity-acceleration.- Parameters:
states- spacecraft state sample
-
getMinDate
public FieldAbsoluteDate<T> getMinDate()
Get the first date of the range.- Specified by:
getMinDatein interfaceFieldBoundedPVCoordinatesProvider<T extends CalculusFieldElement<T>>- Returns:
- the first date of the range
-
getMaxDate
public FieldAbsoluteDate<T> getMaxDate()
Get the last date of the range.- Specified by:
getMaxDatein interfaceFieldBoundedPVCoordinatesProvider<T extends CalculusFieldElement<T>>- Returns:
- the last date of the range
-
getFrame
public Frame getFrame()
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:
getFramein interfaceFieldPropagator<T extends CalculusFieldElement<T>>- Overrides:
getFramein classFieldAbstractPropagator<T extends CalculusFieldElement<T>>- Returns:
- frame in which the orbit is propagated
- See Also:
FieldPropagator.resetInitialState(FieldSpacecraftState)
-
basicPropagate
public FieldSpacecraftState<T> basicPropagate(FieldAbsoluteDate<T> date)
Propagate an orbit without any fancy features.This method is similar in spirit to the
FieldAbstractAnalyticalPropagator.propagate(org.orekit.time.FieldAbsoluteDate<T>, org.orekit.time.FieldAbsoluteDate<T>)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:
basicPropagatein classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>- Parameters:
date- target date for propagation- Returns:
- state at specified date
-
propagateOrbit
public FieldOrbit<T> propagateOrbit(FieldAbsoluteDate<T> date, T[] parameters)
Propagate an orbit up to a specific target date.- Specified by:
propagateOrbitin classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>- Parameters:
date- target date for the orbitparameters- model parameters- Returns:
- propagated orbit
-
getMass
protected T getMass(FieldAbsoluteDate<T> date)
Get the mass.- Specified by:
getMassin classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>- Parameters:
date- target date for the orbit- Returns:
- mass mass
-
resetInitialState
public void resetInitialState(FieldSpacecraftState<T> state)
Try (and fail) to reset the initial state.This method always throws an exception, as ephemerides cannot be reset.
- Specified by:
resetInitialStatein interfaceFieldPropagator<T extends CalculusFieldElement<T>>- Overrides:
resetInitialStatein classFieldAbstractPropagator<T extends CalculusFieldElement<T>>- Parameters:
state- new initial state to consider
-
resetIntermediateState
protected void resetIntermediateState(FieldSpacecraftState<T> state, boolean forward)
Reset an intermediate state.- Specified by:
resetIntermediateStatein classFieldAbstractAnalyticalPropagator<T extends CalculusFieldElement<T>>- Parameters:
state- new intermediate state to considerforward- if true, the intermediate state is valid for propagations after itself
-
getInitialState
public FieldSpacecraftState<T> getInitialState()
Get the propagator initial state.- Specified by:
getInitialStatein interfaceFieldPropagator<T extends CalculusFieldElement<T>>- Overrides:
getInitialStatein classFieldAbstractPropagator<T extends CalculusFieldElement<T>>- Returns:
- initial state
-
isAdditionalDataManaged
public boolean isAdditionalDataManaged(String name)
Check if an additional data is managed.Managed data are the ones for which the propagators know how to compute its evolution. They correspond to additional data for which an
additional data providerhas been registered by calling theaddAdditionalDataProvidermethod. If the propagator is anintegrator-based propagator, the states for which a set ofadditional derivatives providerhas been registered by calling theaddAdditionalDerivativesProvidermethod are also counted as managed additional states.Additional data that are present in the
initial statebut have no evolution method registered are not considered as managed data. These unmanaged additional data are not lost during propagation, though. Their value are piecewise constant between state resets that may change them if some event handlerresetStatemethod is called at an event occurrence and happens to change the unmanaged additional data.- Specified by:
isAdditionalDataManagedin interfaceFieldPropagator<T extends CalculusFieldElement<T>>- Overrides:
isAdditionalDataManagedin classFieldAbstractPropagator<T extends CalculusFieldElement<T>>- Parameters:
name- name of the additional data- Returns:
- true if the additional data is managed
-
getManagedAdditionalData
public String[] getManagedAdditionalData()
Get all the names of all managed data.- Specified by:
getManagedAdditionalDatain interfaceFieldPropagator<T extends CalculusFieldElement<T>>- Overrides:
getManagedAdditionalDatain classFieldAbstractPropagator<T extends CalculusFieldElement<T>>- Returns:
- names of all managed data
-
getStateInterpolator
public FieldTimeInterpolator<FieldSpacecraftState<T>,T> getStateInterpolator()
Get state interpolator.- Returns:
- state interpolator
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Description copied from interface:ParameterDriversProviderGet the drivers for parameters.- Specified by:
getParametersDriversin interfaceParameterDriversProvider- Returns:
- drivers for parameters
-
-