Class ImpulseManeuver
- All Implemented Interfaces:
DetectorModifier,EventDetector
This class implements an impulse maneuver as a discrete event
that can be provided to any Propagator.
The maneuver is executed when an underlying event is triggered and the handler returns anything but CONTINUE,
in which case this class will generate a RESET_STATE event.
By default, the detection settings are those of the trigger.
In the simple cases, the underlying event detector may be a basic
date event, but it
can also be a more elaborate apside event for apogee
maneuvers for example.
The maneuver velocity increment is defined via ImpulseProvider.
If no AttitudeProvider is given, the current attitude of the spacecraft,
defined by the current spacecraft state, will be used as the
AttitudeProvider so the velocity increment should be given in
the same pseudoinertial frame as the SpacecraftState used to
construct the propagator that will handle the maneuver.
If an AttitudeProvider is given, the velocity increment given should be
defined appropriately in consideration of that provider. So, a typical
case for tangential maneuvers is to provide a LOF aligned
attitude provider along with a velocity increment defined in accordance with
that LOF aligned attitude provider; e.g. if the LOF aligned attitude provider
was constructed using LOFType.VNC the velocity increment should be
provided in VNC coordinates.
The norm through which the delta-V maps to the mass consumption is chosen via the
enum Control3DVectorCostType. Default is Euclidean.
Beware that the triggering event detector must behave properly both before and after maneuver. If for example a node detector is used to trigger an inclination maneuver and the maneuver change the orbit to an equatorial one, the node detector will fail just after the maneuver, being unable to find a node on an equatorial orbit! This is a real case that has been encountered during validation ...
- Author:
- Luc Maisonobe
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionImpulseManeuver(EventDetector trigger, Vector3D deltaVSat, double isp) Build a new instance.ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, Vector3D deltaVSat, double isp) Build a new instance.ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, ImpulseProvider impulseProvider, double isp, Control3DVectorCostType control3DVectorCostType) Build a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidfinish(SpacecraftState state) This method finalizes the event detector's job.Getter for the settings.Get the wrapped detector.Get the handler.Getter for the impulse provider.doublegetIsp()Get the specific impulse.Get the triggering event.voidinit(SpacecraftState s0, AbsoluteDate t) Initialize event detector at the start of a propagation.withDetectionSettings(EventDetectionSettings eventDetectionSettings) Creates a copy with different event detection settings.Methods inherited from class org.orekit.forces.maneuvers.AbstractImpulseManeuver
getAttitudeOverride, getControl3DVectorCostTypeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.orekit.propagation.events.DetectorModifier
g, getEventFunction, resetMethods inherited from interface org.orekit.propagation.events.EventDetector
getMaxCheckInterval, getMaxIterationCount, getThreshold
-
Constructor Details
-
ImpulseManeuver
Build a new instance.- Parameters:
trigger- triggering eventdeltaVSat- velocity increment in satellite frameisp- engine specific impulse (s)
-
ImpulseManeuver
public ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, Vector3D deltaVSat, double isp) Build a new instance.- Parameters:
trigger- triggering eventattitudeOverride- the attitude provider to use for the maneuverdeltaVSat- velocity increment in satellite frameisp- engine specific impulse (s)
-
ImpulseManeuver
public ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, ImpulseProvider impulseProvider, double isp, Control3DVectorCostType control3DVectorCostType) Build a new instance.- Parameters:
trigger- triggering eventattitudeOverride- the attitude provider to use for the maneuverimpulseProvider- impulse providerisp- engine specific impulse (s)control3DVectorCostType- increment's norm for mass consumption- Since:
- 13.0
-
-
Method Details
-
withDetectionSettings
Creates a copy with different event detection settings.- Parameters:
eventDetectionSettings- new detection settings- Returns:
- a new detector with same properties except for the detection settings
-
init
Initialize event detector 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 initializes the handler.
- Specified by:
initin interfaceDetectorModifier- Specified by:
initin interfaceEventDetector- Parameters:
s0- initial statet- target time for the integration
-
finish
This method finalizes the event detector's job.- Specified by:
finishin interfaceDetectorModifier- Specified by:
finishin interfaceEventDetector- Parameters:
state- state at propagation end
-
getDetector
Get the wrapped detector.- Specified by:
getDetectorin interfaceDetectorModifier- Returns:
- wrapped detector
-
getHandler
Get the handler.- Specified by:
getHandlerin interfaceDetectorModifier- Specified by:
getHandlerin interfaceEventDetector- Returns:
- event handler to call at event occurrences
-
getDetectionSettings
Getter for the settings.- Specified by:
getDetectionSettingsin interfaceDetectorModifier- Specified by:
getDetectionSettingsin interfaceEventDetector- Returns:
- detection settings
-
getTrigger
Get the triggering event.- Returns:
- triggering event
-
getImpulseProvider
Getter for the impulse provider.- Returns:
- impulse provider
- Since:
- 13.0
-
getIsp
public double getIsp()Get the specific impulse.- Returns:
- specific impulse
-