T
- class type for the generic versionpublic class EventState<T extends EventDetector> extends Object
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)
interpolator
- interpolator valid for the current steppublic boolean evaluateStep(OrekitStepInterpolator interpolator) throws MathRuntimeException
interpolator
- step interpolator for the proposed stepMathRuntimeException
- if an event cannot be locatedpublic AbsoluteDate getEventDate()
public boolean tryAdvance(SpacecraftState state, OrekitStepInterpolator interpolator)
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.public EventState.EventOccurrence doEvent(SpacecraftState state)
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.Copyright © 2002-2020 CS Group. All rights reserved.