Class DetectorBasedEventState

  • All Implemented Interfaces:
    EventState

    public class DetectorBasedEventState
    extends Object
    implements EventState
    This class handles the state for one event handler during integration steps.

    Each time the integrator proposes a step, the event handler switching function should be checked. This class handles the state of one handler during one integration step, with references to the state at the end of the preceding step. This information is used to decide if the handler should trigger an event or not during the proposed step.

    • Constructor Detail

      • DetectorBasedEventState

        public DetectorBasedEventState​(ODEEventDetector detector)
        Simple constructor.
        Parameters:
        detector - event detector
        Since:
        3.0
    • Method Detail

      • getEventDetector

        public ODEEventDetector getEventDetector()
        Get the underlying event detector.
        Returns:
        underlying event detector
        Since:
        3.0
      • init

        public void init​(ODEStateAndDerivative s0,
                         double t)
        Initialize handler at the start of an integration.

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

        Specified by:
        init in interface EventState
        Parameters:
        s0 - initial state
        t - target time for the integration
      • getEventTime

        public double getEventTime()
        Get the occurrence time of the event triggered in the current step.
        Specified by:
        getEventTime in interface EventState
        Returns:
        occurrence time of the event triggered in the current step or infinity if no events are triggered
      • tryAdvance

        public boolean tryAdvance​(ODEStateAndDerivative state,
                                  ODEStateInterpolator interpolator)
        Try to accept the current history up to the given time.

        It is not necessary to call this method before calling doEvent(ODEStateAndDerivative) with the same state. It is necessary to call this method before you call doEvent(ODEStateAndDerivative) on some other event detector.

        Parameters:
        state - to try to accept.
        interpolator - to use to find the new root, if any.
        Returns:
        if the event detector has an event it has not detected before that is on or before the same time as state. In other words false means continue on while true means stop and handle my event first.