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 type
KK - 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
  • Field Details

    • DEFAULT_EXTRAPOLATION_THRESHOLD_SEC

      public static final double DEFAULT_EXTRAPOLATION_THRESHOLD_SEC
      Default extrapolation time threshold: 1ms.
      See Also:
    • DEFAULT_INTERPOLATION_POINTS

      public static final int DEFAULT_INTERPOLATION_POINTS
      Default number of interpolation points.
      See Also:
  • Constructor Details

    • AbstractFieldTimeInterpolator

      protected AbstractFieldTimeInterpolator(int interpolationPoints, double extrapolationThreshold)
      Constructor.
      Parameters:
      interpolationPoints - number of interpolation points
      extrapolationThreshold - extrapolation threshold beyond which the propagation will fail
  • Method Details

    • 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 - interpolator
      sampleSize - sample size
    • interpolate

      public T interpolate(FieldAbsoluteDate<KK> interpolationDate, Stream<T> sample)
      Get an interpolated instance.

      The stream must yield elements in chronological order. Passing an unsorted stream yields undefined neighbors and may throw TimeStampedCacheException.

      The stream must yield elements in chronological order.

      Specified by:
      interpolate in interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
      Parameters:
      interpolationDate - interpolation date
      sample - time stamped sample (chronologically sorted)
      Returns:
      a new instance, interpolated at specified date
      See Also:
    • interpolate

      public T interpolate(FieldAbsoluteDate<KK> interpolationDate, Collection<T> sample)
      Get an interpolated instance.

      The sample must be in chronological order. Passing an unsorted sample yields undefined neighbors and may throw TimeStampedCacheException.

      Precondition: sample must be sorted in chronological order. Passing an unsorted sample yields undefined neighbors and may throw TimeStampedCacheException.

      Specified by:
      interpolate in interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
      Parameters:
      interpolationDate - interpolation date
      sample - time stamped sample (chronologically sorted)
      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 element
      KK - type of calculus field element
      Parameters:
      date - interpolation date
      cachedSamples - cached samples
      threshold - 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 date
      minDate - 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 interface FieldTimeInterpolator<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 interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
      Returns:
      the number of interpolation points
    • getInternalNbInterpolationPoints

      public int getInternalNbInterpolationPoints()
      Get the number of interpolation points for this instance only i.e., not taking into account sub-interpolators.
      Returns:
      required the number of interpolation points for this instance only i.e., not taking into account sub-interpolators.
    • getExtrapolationThreshold

      public double getExtrapolationThreshold()
      Get the extrapolation threshold.
      Specified by:
      getExtrapolationThreshold in interface FieldTimeInterpolator<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 add
      subInterpolators - list of sub interpolators
    • interpolate

      protected abstract T interpolate(AbstractFieldTimeInterpolator<T,KK>.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 date
      nextDate - next tabulated value date
      Returns:
      time parameter which lies between [0:1]