Class FieldEventSlopeFilter<D extends FieldEventDetector<T>,​T extends CalculusFieldElement<T>>

  • Type Parameters:
    D - type of the detector
    T - type of the field elements
    All Implemented Interfaces:
    FieldEventDetector<T>

    public class FieldEventSlopeFilter<D extends FieldEventDetector<T>,​T extends CalculusFieldElement<T>>
    extends Object
    implements FieldEventDetector<T>
    Wrapper used to detect only increasing or decreasing events.

    This class is heavily based on the class EventFilter from the Hipparchus library. The changes performed consist in replacing raw types (double and double arrays) with space dynamics types (FieldAbsoluteDate, FieldSpacecraftState).

    General events are defined implicitly by a g function crossing zero. This function needs to be continuous in the event neighborhood, and its sign must remain consistent between events. This implies that during an orbit propagation, events triggered are alternately events for which the function increases from negative to positive values, and events for which the function decreases from positive to negative values.

    Sometimes, users are only interested in one type of event (say increasing events for example) and not in the other type. In these cases, looking precisely for all events location and triggering events that will later be ignored is a waste of computing time.

    Users can wrap a regular event detector in an instance of this class and provide this wrapping instance to a FieldPropagator in order to avoid wasting time looking for uninteresting events. The wrapper will intercept the calls to the g function and to the eventOccurred method in order to ignore uninteresting events. The wrapped regular event detector will then see only the interesting events, i.e. either only increasing events or only decreasing events. The number of calls to the g function will also be reduced.

    See Also:
    FieldEventEnablingPredicateFilter
    • Constructor Detail

      • FieldEventSlopeFilter

        public FieldEventSlopeFilter​(D rawDetector,
                                     FilterType filterType)
        Parameters:
        rawDetector - event detector to wrap
        filterType - filter to use
      • FieldEventSlopeFilter

        public FieldEventSlopeFilter​(FieldEventDetectionSettings<T> detectionSettings,
                                     D rawDetector,
                                     FilterType filterType)
        Constructor with full parameters.
        Parameters:
        detectionSettings - event detection settings
        rawDetector - event detector to wrap
        filterType - filter to use since 13.0
    • Method Detail

      • withDetectionSettings

        public FieldEventSlopeFilter<D,​T> withDetectionSettings​(FieldEventDetectionSettings<T> settings)
        Builds a new instance from the input detection settings.
        Parameters:
        settings - event detection settings to be used
        Returns:
        a new detector
      • getFilterType

        public FilterType getFilterType()
        Get filter type.
        Returns:
        filter type
        Since:
        13.0
      • getDetector

        public D getDetector()
        Get the wrapped raw detector.
        Returns:
        the wrapped raw detector
      • init

        public void init​(FieldSpacecraftState<T> s0,
                         FieldAbsoluteDate<T> t)
        Initialize event detector at the start of a propagation.

        This method is called once at the start of the propagation. It may be used by the event detector to initialize some internal data if needed.

        The default implementation initializes the handler.

        Specified by:
        init in interface FieldEventDetector<D extends FieldEventDetector<T>>
        Parameters:
        s0 - initial state
        t - target time for the integration
      • reset

        public void reset​(FieldSpacecraftState<T> state,
                          FieldAbsoluteDate<T> target)
        Reset the event detector during propagation when the state is modified by an event or an additional data provider.

        The default implementation does nothing.

        Specified by:
        reset in interface FieldEventDetector<D extends FieldEventDetector<T>>
        Parameters:
        state - current state
        target - target time for the integration
      • g

        public T g​(FieldSpacecraftState<T> s)
        Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as the integrator will need to find its roots to locate the events.
        Specified by:
        g in interface FieldEventDetector<D extends FieldEventDetector<T>>
        Parameters:
        s - the current state information: date, kinematics, attitude
        Returns:
        value of the switching function
      • isForward

        public boolean isForward()
        Check if the current propagation is forward or backward.
        Returns:
        true if the current propagation is forward