Class EventEnablingPredicateFilter

java.lang.Object
org.orekit.propagation.events.EventEnablingPredicateFilter
All Implemented Interfaces:
DetectorModifier, EventDetector

public class EventEnablingPredicateFilter extends Object implements DetectorModifier
Wrapper used to detect events only when enabled by an external predicated function.

General events are defined implicitly by a g function crossing zero. This implies that during an orbit propagation, events are triggered at all zero crossings.

Sometimes, users would like to enable or disable events by themselves, for example to trigger them only for certain orbits, or to check elevation maximums only when elevation itself is positive (i.e. they want to discard elevation maximums below ground). 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 Propagator 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 the see only the interesting events, i.e. either only events that occur when a user-provided event enabling predicate function is true, ignoring all events that occur when the event enabling predicate function is false. The number of calls to the g function will also be reduced.

Since:
7.1
See Also:
  • Constructor Details

    • EventEnablingPredicateFilter

      public EventEnablingPredicateFilter(EventDetector rawDetector, EnablingPredicate enabler)
      Parameters:
      rawDetector - event detector to wrap (its detection settings are taken as well)
      enabler - event enabling predicate function to use
    • EventEnablingPredicateFilter

      public EventEnablingPredicateFilter(EventDetectionSettings detectionSettings, EventDetector rawDetector, EnablingPredicate enabler)
      Constructor with full parameters.
      Parameters:
      detectionSettings - event detection settings
      rawDetector - event detector to wrap
      enabler - event enabling function to use
      Since:
      13.0
  • Method Details

    • withDetectionSettings

      public EventEnablingPredicateFilter withDetectionSettings(EventDetectionSettings settings)
      Builds a new instance from the input detection settings.
      Parameters:
      settings - event detection settings to be used
      Returns:
      a new detector
    • getDetector

      public EventDetector getDetector()
      Get the wrapped raw detector.
      Specified by:
      getDetector in interface DetectorModifier
      Returns:
      the wrapped raw detector
      Since:
      11.1
    • getHandler

      public EventHandler getHandler()
      Get the handler.
      Specified by:
      getHandler in interface DetectorModifier
      Specified by:
      getHandler in interface EventDetector
      Returns:
      event handler to call at event occurrences
    • getDetectionSettings

      public EventDetectionSettings getDetectionSettings()
      Getter for the settings.
      Specified by:
      getDetectionSettings in interface DetectorModifier
      Specified by:
      getDetectionSettings in interface EventDetector
      Returns:
      detection settings
    • getPredicate

      public EnablingPredicate getPredicate()
      Getter for the enabling predicate.
      Returns:
      predicate
      Since:
      13.1
    • getEventFunction

      public EventFunction getEventFunction()
      Get the event function. It defines g both for double and Field.
      Specified by:
      getEventFunction in interface DetectorModifier
      Specified by:
      getEventFunction in interface EventDetector
      Returns:
      event function
    • init

      public void init(SpacecraftState s0, AbsoluteDate 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 handler to initialize some internal data if needed.

      The default implementation initializes the handler.

      Specified by:
      init in interface DetectorModifier
      Specified by:
      init in interface EventDetector
      Parameters:
      s0 - initial state
      t - target time for the integration
    • reset

      public void reset(SpacecraftState state, AbsoluteDate 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 DetectorModifier
      Specified by:
      reset in interface EventDetector
      Parameters:
      state - current state
      target - target time for the integration
    • g

      public double g(SpacecraftState 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 DetectorModifier
      Specified by:
      g in interface EventDetector
      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