Class FieldImpulseManeuver<T extends CalculusFieldElement<T>>
- Type Parameters:
T- type of the field elements
- All Implemented Interfaces:
FieldDetectorModifier<T>,FieldEventDetector<T>
This class implements an impulse maneuver as a discrete event
that can be provided to any Propagator and mirrors the standard version
ImpulseManeuver.
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.
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 FieldImpulseProvider.
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 FieldSpacecraftState 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 ...
- Since:
- 12.0
- Author:
- Romain Serra
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionFieldImpulseManeuver(Field<T> field, ImpulseManeuver maneuver) Constructor from non-Field impulse maneuver.FieldImpulseManeuver(FieldEventDetector<T> trigger, FieldVector3D<T> deltaVSat, T isp) Build a new instance.FieldImpulseManeuver(FieldEventDetector<T> trigger, AttitudeProvider attitudeOverride, FieldVector3D<T> deltaVSat, T isp) Build a new instance.FieldImpulseManeuver(FieldEventDetector<T> trigger, AttitudeProvider attitudeOverride, FieldImpulseProvider<T> fieldImpulseProvider, T isp, Control3DVectorCostType control3DVectorCostType) Build a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidfinish(FieldSpacecraftState<T> state) This method finalizes the event detector's job.Getter for the settings.Getter for wrapped detector.Getter for the impulse provider.Get the handler.getIsp()Get the specific impulse.Get the triggering event.voidinit(FieldSpacecraftState<T> s0, FieldAbsoluteDate<T> t) Initialize event detector at the start of a propagation.withDetectionSettings(FieldEventDetectionSettings<T> 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.FieldDetectorModifier
g, getEventFunction, resetMethods inherited from interface org.orekit.propagation.events.FieldEventDetector
getMaxCheckInterval, getMaxIterationCount, getThreshold
-
Constructor Details
-
FieldImpulseManeuver
Build a new instance.- Parameters:
trigger- triggering eventdeltaVSat- velocity increment in satellite frameisp- engine specific impulse (s)
-
FieldImpulseManeuver
public FieldImpulseManeuver(FieldEventDetector<T> trigger, AttitudeProvider attitudeOverride, FieldVector3D<T> deltaVSat, T 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)
-
FieldImpulseManeuver
public FieldImpulseManeuver(FieldEventDetector<T> trigger, AttitudeProvider attitudeOverride, FieldImpulseProvider<T> fieldImpulseProvider, T isp, Control3DVectorCostType control3DVectorCostType) Build a new instance.- Parameters:
trigger- triggering eventattitudeOverride- the attitude provider to use for the maneuverfieldImpulseProvider- impulse providerisp- engine specific impulse (s)control3DVectorCostType- increment's norm for mass consumption
-
FieldImpulseManeuver
Constructor from non-Field impulse maneuver. The conversion of the trigger might not work as expected in specific cases and one might need to build it by hand.- Parameters:
field- fieldmaneuver- non-Field impulse maneuver- Since:
- 14.0
-
-
Method Details
-
withDetectionSettings
public FieldImpulseManeuver<T> withDetectionSettings(FieldEventDetectionSettings<T> 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
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 detector to initialize some internal data if needed.
The default implementation initializes the handler.
- Specified by:
initin interfaceFieldDetectorModifier<T extends CalculusFieldElement<T>>- Specified by:
initin interfaceFieldEventDetector<T extends CalculusFieldElement<T>>- Parameters:
s0- initial statet- target time for the integration
-
finish
This method finalizes the event detector's job.- Specified by:
finishin interfaceFieldDetectorModifier<T extends CalculusFieldElement<T>>- Specified by:
finishin interfaceFieldEventDetector<T extends CalculusFieldElement<T>>- Parameters:
state- state at propagation end
-
getDetectionSettings
Getter for the settings.- Specified by:
getDetectionSettingsin interfaceFieldDetectorModifier<T extends CalculusFieldElement<T>>- Specified by:
getDetectionSettingsin interfaceFieldEventDetector<T extends CalculusFieldElement<T>>- Returns:
- detection settings
-
getDetector
Getter for wrapped detector.- Specified by:
getDetectorin interfaceFieldDetectorModifier<T extends CalculusFieldElement<T>>- Returns:
- detector
-
getTrigger
Get the triggering event.- Returns:
- triggering event
-
getFieldImpulseProvider
Getter for the impulse provider.- Returns:
- impulse provider
- Since:
- 13.0
-
getIsp
Get the specific impulse.- Returns:
- specific impulse
-
getHandler
Description copied from interface:FieldDetectorModifierGet the handler.- Specified by:
getHandlerin interfaceFieldDetectorModifier<T extends CalculusFieldElement<T>>- Specified by:
getHandlerin interfaceFieldEventDetector<T extends CalculusFieldElement<T>>- Returns:
- event handler to call at event occurrences
-