Class FieldImpulseManeuver<T extends CalculusFieldElement<T>>
- java.lang.Object
-
- org.orekit.forces.maneuvers.AbstractImpulseManeuver
-
- org.orekit.forces.maneuvers.FieldImpulseManeuver<T>
-
- Type Parameters:
T- type of the field elements
- All Implemented Interfaces:
FieldDetectorModifier<T>,FieldEventDetector<T>
public class FieldImpulseManeuver<T extends CalculusFieldElement<T>> extends AbstractImpulseManeuver implements FieldDetectorModifier<T>
Impulse maneuver model for propagators working with Fields.This class implements an impulse maneuver as a discrete event that can be provided to any
Propagatorand mirrors the standard versionImpulseManeuver.The maneuver is executed when an underlying is triggered, in which case this class will generate a
RESET_STATEevent. 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 eventfor 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 theAttitudeProviderso the velocity increment should be given in the same pseudoinertial frame as theFieldSpacecraftStateused 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 alignedattitude 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:
FieldPropagator.addEventDetector(FieldEventDetector),ImpulseManeuver
-
-
Constructor Summary
Constructors Constructor Description 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, FieldVector3D<T> deltaVSat, T isp, Control3DVectorCostType control3DVectorCostType)Deprecated.since 13.0FieldImpulseManeuver(FieldEventDetector<T> trigger, AttitudeProvider attitudeOverride, FieldImpulseProvider<T> fieldImpulseProvider, T isp, Control3DVectorCostType control3DVectorCostType)Build a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidfinish(FieldSpacecraftState<T> state)This method finalizes the event detector's job.FieldEventDetectionSettings<T>getDetectionSettings()Getter for the settings.FieldEventDetector<T>getDetector()Getter for wrapped detector.FieldImpulseProvider<T>getFieldImpulseProvider()Getter for the impulse provider.FieldEventHandler<T>getHandler()Get the handler.TgetIsp()Get the specific impulse.FieldEventDetector<T>getTrigger()Get the triggering event.voidinit(FieldSpacecraftState<T> s0, FieldAbsoluteDate<T> t)Initialize event detector at the start of a propagation.FieldImpulseManeuver<T>withDetectionSettings(FieldEventDetectionSettings<T> 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.FieldDetectorModifier
dependsOnTimeOnly, g, reset
-
Methods inherited from interface org.orekit.propagation.events.FieldEventDetector
getMaxCheckInterval, getMaxIterationCount, getThreshold
-
-
-
-
Constructor Detail
-
FieldImpulseManeuver
public FieldImpulseManeuver(FieldEventDetector<T> trigger, FieldVector3D<T> deltaVSat, T isp)
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
@Deprecated public FieldImpulseManeuver(FieldEventDetector<T> trigger, AttitudeProvider attitudeOverride, FieldVector3D<T> deltaVSat, T 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
-
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
-
-
Method Detail
-
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
public void init(FieldSpacecraftState<T> s0, FieldAbsoluteDate<T> t)
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
public void finish(FieldSpacecraftState<T> state)
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
public FieldEventDetectionSettings<T> 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
public FieldEventDetector<T> getDetector()
Getter for wrapped detector.- Specified by:
getDetectorin interfaceFieldDetectorModifier<T extends CalculusFieldElement<T>>- Returns:
- detector
-
getTrigger
public FieldEventDetector<T> getTrigger()
Get the triggering event.- Returns:
- triggering event
-
getFieldImpulseProvider
public FieldImpulseProvider<T> getFieldImpulseProvider()
Getter for the impulse provider.- Returns:
- impulse provider
- Since:
- 13.0
-
getIsp
public T getIsp()
Get the specific impulse.- Returns:
- specific impulse
-
getHandler
public FieldEventHandler<T> 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
-
-