T
- class type for the generic versionpublic class EventState<T extends EventDetector> extends Object implements Serializable
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
(AbsoluteDate
, SpacecraftState
).
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).
Modifier and Type | Class and Description |
---|---|
static class |
EventState.EventOccurrence
Class to hold the data related to an event occurrence that is needed to decide how
to modify integration.
|
Constructor and Description |
---|
EventState(T detector)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
EventState.EventOccurrence |
doEvent(SpacecraftState state)
Notify the user's listener of the event.
|
boolean |
evaluateStep(OrekitStepInterpolator interpolator)
Evaluate the impact of the proposed step on the event detector.
|
AbsoluteDate |
getEventDate()
Get the occurrence time of the event triggered in the current
step.
|
T |
getEventDetector()
Get the underlying event detector.
|
void |
init(SpacecraftState s0,
AbsoluteDate t)
Initialize event handler at the start of a propagation.
|
void |
reinitializeBegin(OrekitStepInterpolator interpolator)
Reinitialize the beginning of the step.
|
boolean |
tryAdvance(SpacecraftState state,
OrekitStepInterpolator interpolator)
Try to accept the current history up to the given time.
|
public EventState(T detector)
detector
- monitored event detectorpublic T getEventDetector()
public void init(SpacecraftState s0, AbsoluteDate t)
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.
s0
- initial statet
- target time for the integrationpublic void reinitializeBegin(OrekitStepInterpolator interpolator) throws OrekitException
interpolator
- interpolator valid for the current stepOrekitException
- if the event detector
value cannot be evaluated at the beginning of the steppublic boolean evaluateStep(OrekitStepInterpolator interpolator) throws OrekitException, MathRuntimeException
interpolator
- step interpolator for the proposed stepOrekitException
- if the switching function
cannot be evaluatedMathRuntimeException
- if an event cannot be locatedpublic AbsoluteDate getEventDate()
public boolean tryAdvance(SpacecraftState state, OrekitStepInterpolator interpolator) throws OrekitException
It is not necessary to call this method before calling doEvent(SpacecraftState)
with the same state. It is necessary to call this
method before you call doEvent(SpacecraftState)
on some other event
detector.
state
- to try to accept.interpolator
- to use to find the new root, if any.state
. In other words false
means continue
on while true
means stop and handle my event first.OrekitException
- if the g function throws onepublic EventState.EventOccurrence doEvent(SpacecraftState state) throws OrekitException
EventDetector.resetState(SpacecraftState)
if necessary.state
- the state at the time of the event. This must be at the same time as
the current value of getEventDate()
.Action.RESET_STATE
.
Otherwise the new state is state
. The stop time indicates what time propagation
should stop if the action is Action.STOP
.
This guarantees the integration will stop on or after the root, so that integration
may be restarted safely.OrekitException
- if the event detector throws oneCopyright © 2002-2017 CS Systèmes d'information. All rights reserved.