Package org.orekit.time
Class AbstractFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
- java.lang.Object
-
- org.orekit.time.AbstractFieldTimeInterpolator<T,KK>
-
- Type Parameters:
T- interpolated time stamped typeKK- type of the field element
- All Implemented Interfaces:
FieldTimeInterpolator<T,KK>
- Direct Known Subclasses:
AbstractFieldOrbitInterpolator,FieldAbsolutePVCoordinatesHermiteInterpolator,FieldAttitudeInterpolator,FieldClockOffsetHermiteInterpolator,FieldSpacecraftStateInterpolator,TimeStampedFieldAngularCoordinatesHermiteInterpolator,TimeStampedFieldHermiteInterpolator,TimeStampedFieldPVCoordinatesHermiteInterpolator
public abstract class AbstractFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>> extends Object implements FieldTimeInterpolator<T,KK>
Abstract class for time interpolator.- Author:
- Vincent Cucchietti
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classAbstractFieldTimeInterpolator.InterpolationDataNested class used to store interpolation data.
-
Field Summary
Fields Modifier and Type Field Description static doubleDEFAULT_EXTRAPOLATION_THRESHOLD_SECDefault extrapolation time threshold: 1ms.static intDEFAULT_INTERPOLATION_POINTSDefault number of interpolation points.
-
Constructor Summary
Constructors Constructor Description AbstractFieldTimeInterpolator(int interpolationPoints, double extrapolationThreshold)Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected <S extends CalculusFieldElement<S>>
voidaddOptionalSubInterpolatorIfDefined(FieldTimeInterpolator<? extends FieldTimeStamped<S>,S> subInterpolator, List<FieldTimeInterpolator<? extends FieldTimeStamped<S>,S>> subInterpolators)Add all lowest level sub interpolators to the sub interpolator list.static <T extends CalculusFieldElement<T>>
voidcheckInterpolatorCompatibilityWithSampleSize(FieldTimeInterpolator<? extends FieldTimeStamped<T>,T> interpolator, int sampleSize)Method checking if given interpolator is compatible with given sample size.static <KK extends CalculusFieldElement<KK>>
FieldAbsoluteDate<KK>getCentralDate(FieldAbsoluteDate<KK> date, FieldAbsoluteDate<KK> minDate, FieldAbsoluteDate<KK> maxDate, double threshold)Get the central date to use to find neighbors while taking into account extrapolation threshold.static <T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
FieldAbsoluteDate<KK>getCentralDate(FieldAbsoluteDate<KK> date, ImmutableFieldTimeStampedCache<T,KK> cachedSamples, double threshold)Get the central date to use to find neighbors while taking into account extrapolation threshold.doublegetExtrapolationThreshold()Get the extrapolation threshold.intgetNbInterpolationPoints()Get the number of interpolation points.List<FieldTimeInterpolator<? extends FieldTimeStamped<KK>,KK>>getSubInterpolators()Get all lowest level interpolators implemented by this instance, otherwise return a list with this instance only.protected KKgetTimeParameter(FieldAbsoluteDate<KK> interpolatingTime, FieldAbsoluteDate<KK> previousDate, FieldAbsoluteDate<KK> nextDate)Get the time parameter which lies between [0:1] by normalizing the difference between interpolating time and previous date by the Δt between tabulated values.protected abstract Tinterpolate(AbstractFieldTimeInterpolator.InterpolationData interpolationData)Interpolate instance from given interpolation data.Tinterpolate(FieldAbsoluteDate<KK> interpolationDate, Collection<T> sample)Get an interpolated instance.Tinterpolate(FieldAbsoluteDate<KK> interpolationDate, Stream<T> sample)Get an interpolated instance.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.time.FieldTimeInterpolator
interpolate, interpolate
-
-
-
-
Field Detail
-
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
public static final double DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
Default extrapolation time threshold: 1ms.- See Also:
- Constant Field Values
-
DEFAULT_INTERPOLATION_POINTS
public static final int DEFAULT_INTERPOLATION_POINTS
Default number of interpolation points.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractFieldTimeInterpolator
public AbstractFieldTimeInterpolator(int interpolationPoints, double extrapolationThreshold)Constructor.- Parameters:
interpolationPoints- number of interpolation pointsextrapolationThreshold- extrapolation threshold beyond which the propagation will fail
-
-
Method Detail
-
checkInterpolatorCompatibilityWithSampleSize
public static <T extends CalculusFieldElement<T>> void checkInterpolatorCompatibilityWithSampleSize(FieldTimeInterpolator<? extends FieldTimeStamped<T>,T> interpolator, int sampleSize)
Method checking if given interpolator is compatible with given sample size.- Type Parameters:
T- type of the field elements- Parameters:
interpolator- interpolatorsampleSize- sample size
-
interpolate
public T interpolate(FieldAbsoluteDate<KK> interpolationDate, Stream<T> sample)
Get an interpolated instance.- Specified by:
interpolatein interfaceFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>- Parameters:
interpolationDate- interpolation datesample- time stamped sample- Returns:
- a new instance, interpolated at specified date
- See Also:
TimeStamped,AbsoluteDate
-
interpolate
public T interpolate(FieldAbsoluteDate<KK> interpolationDate, Collection<T> sample)
Get an interpolated instance..- Specified by:
interpolatein interfaceFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>- Parameters:
interpolationDate- interpolation datesample- time stamped sample- Returns:
- a new instance, interpolated at specified date
-
getCentralDate
public static <T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>> FieldAbsoluteDate<KK> getCentralDate(FieldAbsoluteDate<KK> date, ImmutableFieldTimeStampedCache<T,KK> cachedSamples, double threshold)
Get the central date to use to find neighbors while taking into account extrapolation threshold.- Type Parameters:
T- type of time stamped elementKK- type of calculus field element- Parameters:
date- interpolation datecachedSamples- cached samplesthreshold- extrapolation threshold- Returns:
- central date to use to find neighbors
- Since:
- 12.0.1
-
getCentralDate
public static <KK extends CalculusFieldElement<KK>> FieldAbsoluteDate<KK> getCentralDate(FieldAbsoluteDate<KK> date, FieldAbsoluteDate<KK> minDate, FieldAbsoluteDate<KK> maxDate, double threshold)
Get the central date to use to find neighbors while taking into account extrapolation threshold.- Type Parameters:
KK- type of calculus field element- Parameters:
date- interpolation dateminDate- earliest date in the sample.maxDate- latest date in the sample.threshold- extrapolation threshold- Returns:
- central date to use to find neighbors
- Since:
- 12.0.1
-
getSubInterpolators
public List<FieldTimeInterpolator<? extends FieldTimeStamped<KK>,KK>> getSubInterpolators()
Get all lowest level interpolators implemented by this instance, otherwise return a list with this instance only.An example would be the spacecraft state interpolator which can use different interpolators for each of its attributes (orbit, absolute position-velocity-acceleration coordinates, mass...). In this case, it would return the list of all of these interpolators (or possibly all of their sub-interpolators if they were to use multiple interpolators themselves).
- Specified by:
getSubInterpolatorsin interfaceFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>- Returns:
- list of interpolators
-
getNbInterpolationPoints
public int getNbInterpolationPoints()
Get the number of interpolation points. In the specific case where this interpolator contains multiple sub-interpolators, this method will return the maximum number of interpolation points required among all sub-interpolators.- Specified by:
getNbInterpolationPointsin interfaceFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>- Returns:
- the number of interpolation points
-
getExtrapolationThreshold
public double getExtrapolationThreshold()
Get the extrapolation threshold.- Specified by:
getExtrapolationThresholdin interfaceFieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>- Returns:
- get the extrapolation threshold.
-
addOptionalSubInterpolatorIfDefined
protected <S extends CalculusFieldElement<S>> void addOptionalSubInterpolatorIfDefined(FieldTimeInterpolator<? extends FieldTimeStamped<S>,S> subInterpolator, List<FieldTimeInterpolator<? extends FieldTimeStamped<S>,S>> subInterpolators)
Add all lowest level sub interpolators to the sub interpolator list.- Type Parameters:
S- type of the field element- Parameters:
subInterpolator- optional sub interpolator to addsubInterpolators- list of sub interpolators
-
interpolate
protected abstract T interpolate(AbstractFieldTimeInterpolator.InterpolationData interpolationData)
Interpolate instance from given interpolation data.- Parameters:
interpolationData- interpolation data- Returns:
- interpolated instance from given interpolation data.
-
getTimeParameter
protected KK getTimeParameter(FieldAbsoluteDate<KK> interpolatingTime, FieldAbsoluteDate<KK> previousDate, FieldAbsoluteDate<KK> nextDate)
Get the time parameter which lies between [0:1] by normalizing the difference between interpolating time and previous date by the Δt between tabulated values.- Parameters:
interpolatingTime- time at which we want to interpolate a value (between previous and next tabulated dates)previousDate- previous tabulated value datenextDate- next tabulated value date- Returns:
- time parameter which lies between [0:1]
-
-