Class EventSlopeFilter<T extends EventDetector>
- java.lang.Object
-
- org.orekit.propagation.events.AbstractDetector<EventSlopeFilter<T>>
-
- org.orekit.propagation.events.EventSlopeFilter<T>
-
- Type Parameters:
T
- type of the detector
- All Implemented Interfaces:
EventDetector
public class EventSlopeFilter<T extends EventDetector> extends AbstractDetector<EventSlopeFilter<T>>
Wrapper used to detect only increasing or decreasing events.This class is heavily based on the class EventFilter from the Hipparchus library. The changes performed consist in replacing raw types (double and double arrays) with space dynamics types (
AbsoluteDate
,SpacecraftState
).General
events
are defined implicitly by ag function
crossing zero. This function needs to be continuous in the event neighborhood, and its sign must remain consistent between events. This implies that during an orbit propagation, events triggered are alternately events for which the function increases from negative to positive values, and events for which the function decreases from positive to negative values.Sometimes, users are only interested in one type of event (say increasing events for example) and not in the other type. 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 aPropagator
in order to avoid wasting time looking for uninteresting events. The wrapper will intercept the calls to theg function
and to theeventOccurred
method in order to ignore uninteresting events. The wrapped regularevent detector
will then see only the interesting events, i.e. either onlyincreasing
events or onlydecreasing
events. The number of calls to theg function
will also be reduced.- See Also:
EventEnablingPredicateFilter
-
-
Field Summary
-
Fields inherited from class org.orekit.propagation.events.AbstractDetector
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
EventSlopeFilter(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, T rawDetector, FilterType filter)
Protected constructor with full parameters.EventSlopeFilter(T rawDetector, FilterType filter)
Wrap anevent detector
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected EventSlopeFilter<T>
create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
Build a new instance.double
g(SpacecraftState s)
Compute the value of the switching function.T
getDetector()
Get the wrapped raw detector.FilterType
getFilter()
Get filter type.void
init(SpacecraftState s0, AbsoluteDate t)
Initialize event handler at the start of a propagation.-
Methods inherited from class org.orekit.propagation.events.AbstractDetector
create, getDetectionSettings, getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, isForward, withDetectionSettings, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.events.EventDetector
finish
-
-
-
-
Constructor Detail
-
EventSlopeFilter
public EventSlopeFilter(T rawDetector, FilterType filter)
Wrap anevent detector
.- Parameters:
rawDetector
- event detector to wrapfilter
- filter to use
-
EventSlopeFilter
protected EventSlopeFilter(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, T rawDetector, FilterType filter)
Protected constructor with full parameters.This constructor is not public as users are expected to use the builder API with the various
withXxx()
methods to set up the instance in a readable manner without using a huge amount of parameters.- Parameters:
maxCheck
- maximum checking intervalthreshold
- convergence threshold (s)maxIter
- maximum number of iterations in the event time searchhandler
- event handler to call at event occurrencesrawDetector
- event detector to wrapfilter
- filter to use- Since:
- 6.1
-
-
Method Detail
-
create
protected EventSlopeFilter<T> create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
Build a new instance.- Specified by:
create
in classAbstractDetector<EventSlopeFilter<T extends EventDetector>>
- Parameters:
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 occurrences- Returns:
- a new instance of the appropriate sub-type WARNING: this method will be removed in 13.0. It doesn't have the deprecated annotation because the method is abstract and shall be implemented
-
getDetector
public T getDetector()
Get the wrapped raw detector.- Returns:
- the wrapped raw detector
- Since:
- 11.1
-
getFilter
public FilterType getFilter()
Get filter type.- Returns:
- filter type
-
init
public void init(SpacecraftState s0, AbsoluteDate 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.
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)
.- Specified by:
init
in interfaceEventDetector
- Overrides:
init
in classAbstractDetector<EventSlopeFilter<T extends EventDetector>>
- Parameters:
s0
- initial statet
- target time for the integration
-
g
public double g(SpacecraftState s)
Compute the value of the switching function. This function must be continuous (at least in its roots neighborhood), as the integrator will need to find its roots to locate the events.- Parameters:
s
- the current state information: date, kinematics, attitude- Returns:
- value of the switching function
-
-