Class ImpulseManeuver
- java.lang.Object
-
- org.orekit.forces.maneuvers.AbstractImpulseManeuver
-
- org.orekit.forces.maneuvers.ImpulseManeuver
-
- All Implemented Interfaces:
DetectorModifier
,EventDetector
public class ImpulseManeuver extends AbstractImpulseManeuver implements DetectorModifier
Impulse maneuver model.This class implements an impulse maneuver as a discrete event that can be provided to any
Propagator
.The maneuver is executed when an underlying is triggered, 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 basicdate event
, but it can also be a more elaborateapside 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 theAttitudeProvider
so the velocity increment should be given in the same pseudoinertial frame as theSpacecraftState
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 aLOF 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:
Propagator.addEventDetector(EventDetector)
-
-
Constructor Summary
Constructors Constructor Description ImpulseManeuver(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, Vector3D deltaVSat, double isp, Control3DVectorCostType control3DVectorCostType)
Deprecated.since 13.0ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, ImpulseProvider impulseProvider, double isp, Control3DVectorCostType control3DVectorCostType)
Build a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description EventDetectionSettings
getDetectionSettings()
Getter for the settings.EventDetector
getDetector()
Get the wrapped detector.EventHandler
getHandler()
Get the handler.ImpulseProvider
getImpulseProvider()
Getter for the impulse provider.double
getIsp()
Get the specific impulse.EventDetector
getTrigger()
Get the triggering event.void
init(SpacecraftState s0, AbsoluteDate t)
Initialize event handler at the start of a propagation.ImpulseManeuver
withDetectionSettings(EventDetectionSettings eventDetectionSettings)
Creates a copy with different event detection settings.-
Methods inherited from class org.orekit.forces.maneuvers.AbstractImpulseManeuver
getAttitudeOverride, getControl3DVectorCostType
-
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.DetectorModifier
finish, g
-
Methods inherited from interface org.orekit.propagation.events.EventDetector
getMaxCheckInterval, getMaxIterationCount, getThreshold
-
-
-
-
Constructor Detail
-
ImpulseManeuver
public ImpulseManeuver(EventDetector trigger, Vector3D deltaVSat, double isp)
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
@Deprecated public ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, Vector3D deltaVSat, double isp, Control3DVectorCostType control3DVectorCostType)
Deprecated.since 13.0Build a new instance.- Parameters:
trigger
- triggering eventattitudeOverride
- the attitude provider to use for the maneuverdeltaVSat
- velocity increment in satellite frameisp
- engine specific impulse (s)control3DVectorCostType
- increment's norm for mass consumption
-
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 Detail
-
withDetectionSettings
public ImpulseManeuver withDetectionSettings(EventDetectionSettings eventDetectionSettings)
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
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 initializes the handler.
- Specified by:
init
in interfaceDetectorModifier
- Specified by:
init
in interfaceEventDetector
- Parameters:
s0
- initial statet
- target time for the integration
-
getDetector
public EventDetector getDetector()
Get the wrapped detector.- Specified by:
getDetector
in interfaceDetectorModifier
- Returns:
- wrapped detector
-
getHandler
public EventHandler getHandler()
Get the handler.- Specified by:
getHandler
in interfaceDetectorModifier
- Specified by:
getHandler
in interfaceEventDetector
- Returns:
- event handler to call at event occurrences
-
getDetectionSettings
public EventDetectionSettings getDetectionSettings()
Getter for the settings.- Specified by:
getDetectionSettings
in interfaceDetectorModifier
- Specified by:
getDetectionSettings
in interfaceEventDetector
- Returns:
- detection settings
-
getTrigger
public EventDetector getTrigger()
Get the triggering event.- Returns:
- triggering event
-
getImpulseProvider
public ImpulseProvider getImpulseProvider()
Getter for the impulse provider.- Returns:
- impulse provider
- Since:
- 13.0
-
getIsp
public double getIsp()
Get the specific impulse.- Returns:
- specific impulse
-
-