public class EventEnablingPredicateFilter<T extends EventDetector> extends AbstractDetector<EventEnablingPredicateFilter<T>>
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.
EventSlopeFilter
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Constructor and Description |
---|
EventEnablingPredicateFilter(T rawDetector,
EnablingPredicate<? super T> enabler)
Wrap an
event detector . |
Modifier and Type | Method and Description |
---|---|
protected EventEnablingPredicateFilter<T> |
create(double newMaxCheck,
double newThreshold,
int newMaxIter,
EventHandler<? super EventEnablingPredicateFilter<T>> newHandler)
Build a new instance.
|
double |
g(SpacecraftState s)
Compute the value of the switching function.
|
void |
init(SpacecraftState s0,
AbsoluteDate t)
Initialize event handler at the start of a propagation.
|
eventOccurred, getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, isForward, resetState, withHandler, withMaxCheck, withMaxIter, withThreshold
public EventEnablingPredicateFilter(T rawDetector, EnablingPredicate<? super T> enabler)
event detector
.rawDetector
- event detector to wrapenabler
- event enabling predicate function to useprotected EventEnablingPredicateFilter<T> create(double newMaxCheck, double newThreshold, int newMaxIter, EventHandler<? super EventEnablingPredicateFilter<T>> newHandler)
create
in class AbstractDetector<EventEnablingPredicateFilter<T extends EventDetector>>
newMaxCheck
- maximum checking interval (s)newThreshold
- convergence threshold (s)newMaxIter
- maximum number of iterations in the event time searchnewHandler
- event handler to call at event occurrencespublic 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.
The default implementation does nothing
This implementation sets the direction of propagation and initializes the event
handler. If a subclass overrides this method it should call super.init(s0, t)
.
init
in interface EventDetector
init
in class AbstractDetector<EventEnablingPredicateFilter<T extends EventDetector>>
s0
- initial statet
- target time for the integrationpublic double g(SpacecraftState s)
g
in interface EventDetector
g
in class AbstractDetector<EventEnablingPredicateFilter<T extends EventDetector>>
s
- the current state information: date, kinematics, attitudeCopyright © 2002-2021 CS GROUP. All rights reserved.