Package org.orekit.forces.maneuvers
Class Maneuver
- java.lang.Object
-
- org.orekit.forces.maneuvers.Maneuver
-
- All Implemented Interfaces:
ForceModel
,EventDetectorsProvider
,ParameterDriversProvider
- Direct Known Subclasses:
ConstantThrustManeuver
public class Maneuver extends Object implements ForceModel
A generic model for maneuvers with finite-valued acceleration magnitude, as opposed to instantaneous changes in the velocity vector which are defined via detectors (inImpulseManeuver
andFieldImpulseManeuver
). It contains: - An attitude override, this is the attitude used during the maneuver, it can be different from the one used for propagation; - A maneuver triggers object from the trigger sub-package. It defines the triggers used to start and stop the maneuvers (dates or events for example). - A propulsion model from sub-package propulsion. It defines the thrust or ΔV, isp, flow rate etc. Both the propulsion model and the maneuver triggers can contain parameter drivers (for estimation), as well as the attitude override if set. The convention here is the following: drivers from propulsion model first, then maneuver triggers and if any the attitude override when calling the methodgetParametersDrivers()
- Since:
- 10.2
- Author:
- Maxime Journot
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Constructor Description Maneuver(AttitudeRotationModel attitudeOverride, ManeuverTriggers maneuverTriggers, PropulsionModel propulsionModel)
Generic maneuver constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends CalculusFieldElement<T>>
FieldVector3D<T>acceleration(FieldSpacecraftState<T> s, T[] parameters)
Compute acceleration.Vector3D
acceleration(SpacecraftState s, double[] parameters)
Compute acceleration.<T extends CalculusFieldElement<T>>
voidaddContribution(FieldSpacecraftState<T> s, FieldTimeDerivativesEquations<T> adder)
Compute the contribution of the force model to the perturbing acceleration.void
addContribution(SpacecraftState s, TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing acceleration.boolean
dependsOnPositionOnly()
Check if force model depends on position only at a given, fixed date.protected double[]
getAttitudeModelParameters(double[] parameters)
Extract attitude model' parameters from the parameters' array called in by the ForceModel interface.protected <T extends CalculusFieldElement<T>>
T[]getAttitudeModelParameters(T[] parameters)
Extract attitude model' parameters from the parameters' array called in by the ForceModel interface.AttitudeRotationModel
getAttitudeOverride()
Get the attitude override used for the maneuver.Control3DVectorCostType
getControl3DVectorCostType()
Get the control vector's cost type.Stream<EventDetector>
getEventDetectors()
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventDetectors(Field<T> field)
Get the discrete events related to the model.ManeuverTriggers
getManeuverTriggers()
Get the maneuver triggers.double[]
getManeuverTriggersParameters(double[] parameters)
Extract maneuver triggers' parameters from the parameters' array called in by the ForceModel interface.<T extends CalculusFieldElement<T>>
T[]getManeuverTriggersParameters(T[] parameters)
Extract maneuver triggers' parameters from the parameters' array called in by the ForceModel interface.String
getName()
Get the name of the maneuver.List<ParameterDriver>
getParametersDrivers()
Get the drivers for parameters.PropulsionModel
getPropulsionModel()
Get the propulsion model.double[]
getPropulsionModelParameters(double[] parameters)
Extract propulsion model parameters from the parameters' array called in by the ForceModel interface.<T extends CalculusFieldElement<T>>
T[]getPropulsionModelParameters(T[] parameters)
Extract propulsion model parameters from the parameters' array called in by the ForceModel interface.<T extends CalculusFieldElement<T>>
voidinit(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
Initialize the force model at the start of propagation.void
init(SpacecraftState initialState, AbsoluteDate target)
Initialize the force model at the start of propagation.-
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.EventDetectorsProvider
getDateDetector, getEventDetectors, getFieldDateDetector, getFieldEventDetectors
-
Methods inherited from interface org.orekit.forces.ForceModel
dependsOnAttitudeRate
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
-
-
-
Constructor Detail
-
Maneuver
public Maneuver(AttitudeRotationModel attitudeOverride, ManeuverTriggers maneuverTriggers, PropulsionModel propulsionModel)
Generic maneuver constructor.- Parameters:
attitudeOverride
- attitude provider for the attitude during the maneuvermaneuverTriggers
- maneuver triggerspropulsionModel
- propulsion model
-
-
Method Detail
-
getName
public String getName()
Get the name of the maneuver. The name can be in the propulsion model, in the maneuver triggers or both. If it is in both it should be the same since it refers to the same maneuver. The name is inferred from the propulsion model first, then from the maneuver triggers if the propulsion model had an empty name.- Returns:
- the name
-
getAttitudeOverride
public AttitudeRotationModel getAttitudeOverride()
Get the attitude override used for the maneuver.- Returns:
- the attitude override
- Since:
- 13.0
-
getControl3DVectorCostType
public Control3DVectorCostType getControl3DVectorCostType()
Get the control vector's cost type.- Returns:
- control cost type
- Since:
- 12.0
-
getPropulsionModel
public PropulsionModel getPropulsionModel()
Get the propulsion model.- Returns:
- the propulsion model
-
getManeuverTriggers
public ManeuverTriggers getManeuverTriggers()
Get the maneuver triggers.- Returns:
- the maneuver triggers
-
dependsOnPositionOnly
public boolean dependsOnPositionOnly()
Check if force model depends on position only at a given, fixed date.- Specified by:
dependsOnPositionOnly
in interfaceForceModel
- Returns:
- true if force model depends on position only, false if it depends on velocity, either directly or due to a dependency on attitude
-
init
public void init(SpacecraftState initialState, AbsoluteDate target)
Initialize the force model at the start of propagation. This method will be called before any calls toForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,ForceModel.acceleration(SpacecraftState, double[])
orForceModel.acceleration(FieldSpacecraftState, CalculusFieldElement[])
The default implementation of this method does nothing.
- Specified by:
init
in interfaceForceModel
- Parameters:
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal toinitialState.getDate()
.
-
init
public <T extends CalculusFieldElement<T>> void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
Initialize the force model at the start of propagation. This method will be called before any calls toForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,ForceModel.acceleration(SpacecraftState, double[])
orForceModel.acceleration(FieldSpacecraftState, CalculusFieldElement[])
The default implementation of this method does nothing.
- Specified by:
init
in interfaceForceModel
- Type Parameters:
T
- type of the elements- Parameters:
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal toinitialState.getDate()
.
-
addContribution
public void addContribution(SpacecraftState s, TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing acceleration.The default implementation simply adds the
acceleration
as a non-Keplerian acceleration.- Specified by:
addContribution
in interfaceForceModel
- Parameters:
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be added
-
addContribution
public <T extends CalculusFieldElement<T>> void addContribution(FieldSpacecraftState<T> s, FieldTimeDerivativesEquations<T> adder)
Compute the contribution of the force model to the perturbing acceleration.- Specified by:
addContribution
in interfaceForceModel
- Type Parameters:
T
- type of the elements- Parameters:
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be added
-
acceleration
public Vector3D acceleration(SpacecraftState s, double[] parameters)
Compute acceleration.- Specified by:
acceleration
in interfaceForceModel
- Parameters:
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date, only 1 value for each parameterDriver- Returns:
- acceleration in same frame as state
-
acceleration
public <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
Compute acceleration.- Specified by:
acceleration
in interfaceForceModel
- Type Parameters:
T
- type of the elements- Parameters:
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date, only 1 value for each parameterDriver- Returns:
- acceleration in same frame as state
-
getEventDetectors
public Stream<EventDetector> getEventDetectors()
Get the discrete events related to the model.This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
- Specified by:
getEventDetectors
in interfaceEventDetectorsProvider
- Specified by:
getEventDetectors
in interfaceForceModel
- Returns:
- stream of event detectors
-
getFieldEventDetectors
public <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors(Field<T> field)
Get the discrete events related to the model.This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
- Specified by:
getFieldEventDetectors
in interfaceEventDetectorsProvider
- Specified by:
getFieldEventDetectors
in interfaceForceModel
- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
field
- field to which the state belongs- Returns:
- stream of event detectors
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Specified by:
getParametersDrivers
in interfaceParameterDriversProvider
- Returns:
- drivers for parameters
-
getPropulsionModelParameters
public double[] getPropulsionModelParameters(double[] parameters)
Extract propulsion model parameters from the parameters' array called in by the ForceModel interface. Convention: Propulsion parameters are given before maneuver triggers parameters- Parameters:
parameters
- parameters' array called in by ForceModel interface- Returns:
- propulsion model parameters
-
getPropulsionModelParameters
public <T extends CalculusFieldElement<T>> T[] getPropulsionModelParameters(T[] parameters)
Extract propulsion model parameters from the parameters' array called in by the ForceModel interface. Convention: Propulsion parameters are given before maneuver triggers parameters- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
parameters
- parameters' array called in by ForceModel interface- Returns:
- propulsion model parameters
-
getManeuverTriggersParameters
public double[] getManeuverTriggersParameters(double[] parameters)
Extract maneuver triggers' parameters from the parameters' array called in by the ForceModel interface. Convention: Propulsion parameters are given before maneuver triggers parameters- Parameters:
parameters
- parameters' array called in by ForceModel interface- Returns:
- maneuver triggers' parameters
-
getManeuverTriggersParameters
public <T extends CalculusFieldElement<T>> T[] getManeuverTriggersParameters(T[] parameters)
Extract maneuver triggers' parameters from the parameters' array called in by the ForceModel interface. Convention: Propulsion parameters are given before maneuver triggers parameters- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
parameters
- parameters' array called in by ForceModel interface- Returns:
- maneuver triggers' parameters
-
getAttitudeModelParameters
protected double[] getAttitudeModelParameters(double[] parameters)
Extract attitude model' parameters from the parameters' array called in by the ForceModel interface. Convention: Attitude model parameters are given last- Parameters:
parameters
- parameters' array called in by ForceModel interface- Returns:
- maneuver triggers' parameters
-
getAttitudeModelParameters
protected <T extends CalculusFieldElement<T>> T[] getAttitudeModelParameters(T[] parameters)
Extract attitude model' parameters from the parameters' array called in by the ForceModel interface. Convention: Attitude parameters are given last- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
parameters
- parameters' array called in by ForceModel interface- Returns:
- maneuver triggers' parameters
-
-