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.
      Specified by:
      interpolate in interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
      Parameters:
      interpolationDate - interpolation date
      sample - time stamped sample
      Returns:
      a new instance, interpolated at specified date
      See Also:
    • interpolate

      public T interpolate(FieldAbsoluteDate<KK> interpolationDate, Collection<T> sample)
      Get an interpolated instance..
      Specified by:
      interpolate in interface FieldTimeInterpolator<T extends FieldTimeStamped<KK>,KK extends CalculusFieldElement<KK>>
      Parameters:
      interpolationDate - interpolation date
      sample - 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 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]