Class StateCovarianceKeplerianHermiteInterpolator
- java.lang.Object
-
- org.orekit.time.AbstractTimeInterpolator<TimeStampedPair<Orbit,StateCovariance>>
-
- org.orekit.propagation.AbstractStateCovarianceInterpolator
-
- org.orekit.propagation.StateCovarianceKeplerianHermiteInterpolator
-
- All Implemented Interfaces:
TimeInterpolator<TimeStampedPair<Orbit,StateCovariance>>
public class StateCovarianceKeplerianHermiteInterpolator extends AbstractStateCovarianceInterpolator
State covariance Keplerian quintic interpolator.Its purpose is to interpolate state covariance between tabulated state covariances using polynomial interpolation. To do so, it uses a
HermiteInterpolator
and compute the first and second order derivatives at tabulated states assuming a standard Keplerian motion depending on given derivatives filter.It gives very accurate results as explained here. In the very poorly tracked test case evolving in a highly dynamical environment mentioned in the linked thread, the user can expect at worst errors of less than 0.2% in position sigmas and less than 0.35% in velocity sigmas with steps of 40mn between tabulated values.
However, note that this method does not guarantee the positive definiteness of the computed state covariance as opposed to
StateCovarianceBlender
.- Author:
- Vincent Cucchietti
- See Also:
HermiteInterpolator
,StateCovarianceBlender
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.orekit.time.AbstractTimeInterpolator
AbstractTimeInterpolator.InterpolationData
-
-
Field Summary
-
Fields inherited from class org.orekit.propagation.AbstractStateCovarianceInterpolator
COLUMN_DIM, DEFAULT_POSITION_ANGLE, ROW_DIM
-
Fields inherited from class org.orekit.time.AbstractTimeInterpolator
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC, DEFAULT_INTERPOLATION_POINTS
-
-
Constructor Summary
Constructors Constructor Description StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame.StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, LOFType outLOF)
Constructor using an output local orbital frame.StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame and : Default number of interpolation points ofDEFAULT_INTERPOLATION_POINTS
Use of position and two time derivatives during interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, LOFType outLOF)
Constructor using an output local orbital frame and : Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) Use of position and two time derivatives during interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame and : Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, LOFType outLOF)
Constructor using an output local orbital frame and : Use of position and two time derivatives during interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame and : Default number of interpolation points ofDEFAULT_INTERPOLATION_POINTS
Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) Use of position and two time derivatives during interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator, LOFType outLOF)
Constructor using an output local orbital frame and : Default number of interpolation points ofDEFAULT_INTERPOLATION_POINTS
Default extrapolation threshold value (DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) Use of position and two time derivatives during interpolation As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected StateCovariance
computeInterpolatedCovarianceInOrbitFrame(List<TimeStampedPair<Orbit,StateCovariance>> uncertainStates, Orbit interpolatedOrbit)
Compute the interpolated covariance expressed in the interpolated orbit frame.CartesianDerivativesFilter
getFilter()
Get Filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives should be used.-
Methods inherited from class org.orekit.propagation.AbstractStateCovarianceInterpolator
expressCovarianceInDesiredOutput, getOrbitInterpolator, getOutFrame, getOutLOF, getOutOrbitType, getOutPositionAngleType, interpolate, interpolateOrbit
-
Methods inherited from class org.orekit.time.AbstractTimeInterpolator
addOptionalSubInterpolatorIfDefined, checkInterpolatorCompatibilityWithSampleSize, getCentralDate, getCentralDate, getExtrapolationThreshold, getNbInterpolationPoints, getSubInterpolators, getTimeParameter, interpolate, interpolate
-
-
-
-
Constructor Detail
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator, LOFType outLOF)
Constructor using an output local orbital frame and :- Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
- Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) - Use of position and two time derivatives during interpolation
BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
- Parameters:
orbitInterpolator
- orbit interpolatoroutLOF
- output local orbital frame
- Default number of interpolation points of
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, LOFType outLOF)
Constructor using an output local orbital frame and :- Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) - Use of position and two time derivatives during interpolation
BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
- Parameters:
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatoroutLOF
- output local orbital frame
- Default extrapolation threshold value (
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, LOFType outLOF)
Constructor using an output local orbital frame and :- Use of position and two time derivatives during interpolation
BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
- Parameters:
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatoroutLOF
- output local orbital framefilter
- filter for derivatives from the sample to use in position-velocity-acceleration interpolation
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, LOFType outLOF)
Constructor using an output local orbital frame.As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
BEWARE: If the output local orbital frame is not considered pseudo-inertial, all the covariance components related to the velocity will be poorly interpolated. Only the position covariance should be considered in this case.
- Parameters:
interpolationPoints
- number of interpolation pointsextrapolationThreshold
- extrapolation threshold beyond which the propagation will failorbitInterpolator
- orbit interpolatoroutLOF
- output local orbital framefilter
- filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives should be used during the interpolation.
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(TimeInterpolator<Orbit> orbitInterpolator, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame and :- Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
- Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s) - Use of position and two time derivatives during interpolation
- Parameters:
orbitInterpolator
- orbit interpolatoroutFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position angle
- Default number of interpolation points of
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame and :- Default number of interpolation points of
DEFAULT_INTERPOLATION_POINTS
- Use of position and two time derivatives during interpolation
- Parameters:
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatoroutFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position angle
- Default number of interpolation points of
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame and :- Default extrapolation threshold value (
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
s)
- Parameters:
interpolationPoints
- number of interpolation pointsorbitInterpolator
- orbit interpolatorfilter
- filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives should be used during the interpolation.outFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position angle
- Default extrapolation threshold value (
-
StateCovarianceKeplerianHermiteInterpolator
public StateCovarianceKeplerianHermiteInterpolator(int interpolationPoints, double extrapolationThreshold, TimeInterpolator<Orbit> orbitInterpolator, CartesianDerivativesFilter filter, Frame outFrame, OrbitType outOrbitType, PositionAngleType outPositionAngleType)
Constructor using an output frame.As this implementation of interpolation is polynomial, it should be used only with small number of interpolation points (about 10-20 points) in order to avoid Runge's phenomenon and numerical problems (including NaN appearing).
- Parameters:
interpolationPoints
- number of interpolation pointsextrapolationThreshold
- extrapolation threshold beyond which the propagation will failorbitInterpolator
- orbit interpolatorfilter
- filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives should be used during the interpolation.outFrame
- output frameoutOrbitType
- output orbit typeoutPositionAngleType
- output position angle
-
-
Method Detail
-
getFilter
public CartesianDerivativesFilter getFilter()
Get Filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives should be used.- Returns:
- Filter defining if only the state covariance value are used or if first or/and second Keplerian derivatives should be used.
-
computeInterpolatedCovarianceInOrbitFrame
protected StateCovariance computeInterpolatedCovarianceInOrbitFrame(List<TimeStampedPair<Orbit,StateCovariance>> uncertainStates, Orbit interpolatedOrbit)
Compute the interpolated covariance expressed in the interpolated orbit frame.- Specified by:
computeInterpolatedCovarianceInOrbitFrame
in classAbstractStateCovarianceInterpolator
- Parameters:
uncertainStates
- list of orbits and associated covariancesinterpolatedOrbit
- interpolated orbit- Returns:
- interpolated covariance expressed in the interpolated orbit frame
-
-