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

  • Type Parameters:
    D - class type for the generic version
    T - type of the field elements

    public class FieldEventState<D extends FieldEventDetector<T>,​T extends CalculusFieldElement<T>>
    extends Object
    This class handles the state for one event detector during integration steps.

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

    Each time the propagator proposes a step, the event detector should be checked. This class handles the state of one detector during one propagation step, with references to the state at the end of the preceding step. This information is used to determine if the detector should trigger an event or not during the proposed step (and hence the step should be reduced to ensure the event occurs at a bound rather than inside the step).

    Author:
    Luc Maisonobe
    • Constructor Detail

      • FieldEventState

        public FieldEventState​(D detector)
        Simple constructor.
        Parameters:
        detector - monitored event detector
    • Method Detail

      • getEventDetector

        public D getEventDetector()
        Get the underlying event detector.
        Returns:
        underlying event detector
      • init

        public void init​(FieldSpacecraftState<T> s0,
                         FieldAbsoluteDate<T> t)
        Initialize event handler 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.

        Parameters:
        s0 - initial state
        t - target time for the integration
      • reinitializeBegin

        public void reinitializeBegin​(FieldOrekitStepInterpolator<T> interpolator)
        Reinitialize the beginning of the step.
        Parameters:
        interpolator - interpolator valid for the current step
      • evaluateStep

        public boolean evaluateStep​(FieldOrekitStepInterpolator<T> interpolator)
                             throws MathRuntimeException
        Evaluate the impact of the proposed step on the event detector.
        Parameters:
        interpolator - step interpolator for the proposed step
        Returns:
        true if the event detector triggers an event before the end of the proposed step (this implies the step should be rejected)
        Throws:
        MathRuntimeException - if an event cannot be located
      • getEventDate

        public FieldAbsoluteDate<T> getEventDate()
        Get the occurrence time of the event triggered in the current step.
        Returns:
        occurrence time of the event triggered in the current step.
      • tryAdvance

        public boolean tryAdvance​(FieldSpacecraftState<T> state,
                                  FieldOrekitStepInterpolator<T> interpolator)
        Try to accept the current history up to the given time.

        It is not necessary to call this method before calling doEvent(FieldSpacecraftState) with the same state. It is necessary to call this method before you call doEvent(FieldSpacecraftState) 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.
      • getPendingEvent

        public boolean getPendingEvent()
        Get PendingEvent.
        Returns:
        if there is a pending event or not