public class NodeDetector extends AbstractDetector<NodeDetector>
This class finds equator crossing events (i.e. ascending or descending node crossing).
The default implementation behavior is to continue
propagation at descending node crossing and to stop
propagation
at ascending node crossing. This can be changed by calling
AbstractDetector.withHandler(EventHandler)
after construction.
Beware that node detection will fail for almost equatorial orbits. If
for example a node detector is used to trigger an ImpulseManeuver
and the maneuver
turn the orbit plane to equator, then the detector may completely fail just
after the maneuver has been performed! This is a real case that has been
encountered during validation ...
Propagator.addEventDetector(EventDetector)
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK
Modifier | Constructor and Description |
---|---|
protected |
NodeDetector(AdaptableInterval maxCheck,
double threshold,
int maxIter,
EventHandler handler,
Frame frame)
Protected constructor with full parameters.
|
|
NodeDetector(double threshold,
Orbit orbit,
Frame frame)
Build a new instance.
|
|
NodeDetector(Frame frame)
Build a new instance.
|
|
NodeDetector(Orbit orbit,
Frame frame)
Build a new instance.
|
Modifier and Type | Method and Description |
---|---|
protected NodeDetector |
create(AdaptableInterval newMaxCheck,
double newThreshold,
int newMaxIter,
EventHandler newHandler)
Build a new instance.
|
double |
g(SpacecraftState s)
Compute the value of the switching function.
|
Frame |
getFrame()
Get the frame in which the equator is defined.
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, init, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public NodeDetector(Frame frame)
The default max check interval
is set to 1800s, it can be changed using AbstractDetector.withMaxCheck(double)
in the fluent API. The default convergence threshold
is set to 1.0e-3s, it can be changed using AbstractDetector.withThreshold(double)
in the fluent API.
public NodeDetector(Orbit orbit, Frame frame)
The orbit is used only to set an upper bound for the max check interval to a value related to nodes separation (as computed by a Keplerian model) and to set the convergence threshold according to orbit size.
public NodeDetector(double threshold, Orbit orbit, Frame frame)
The orbit is used only to set an upper bound for the max check interval to a value related to nodes separation (as computed by a Keplerian model).
protected NodeDetector(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, Frame frame)
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.
protected NodeDetector create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
create
in class AbstractDetector<NodeDetector>
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 Frame getFrame()
public double g(SpacecraftState s)
g
in interface EventDetector
g
in class AbstractDetector<NodeDetector>
s
- the current state information: date, kinematics, attitudeCopyright © 2002-2023 CS GROUP. All rights reserved.