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 class
AbstractFieldTimeInterpolator.InterpolationData
Nested class used to store interpolation data.
-
Field Summary
Fields Modifier and Type Field Description static double
DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
Default extrapolation time threshold: 1ms.static int
DEFAULT_INTERPOLATION_POINTS
Default 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.double
getExtrapolationThreshold()
Get the extrapolation threshold.int
getNbInterpolationPoints()
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 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.protected abstract T
interpolate(AbstractFieldTimeInterpolator.InterpolationData interpolationData)
Interpolate instance from given interpolation data.T
interpolate(FieldAbsoluteDate<KK> interpolationDate, Collection<T> sample)
Get an interpolated instance.T
interpolate(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:
interpolate
in 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:
interpolate
in 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:
getSubInterpolators
in 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:
getNbInterpolationPoints
in 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:
getExtrapolationThreshold
in 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]
-
-