Package org.orekit.forces.maneuvers
Class Maneuver
- java.lang.Object
-
- org.orekit.forces.AbstractForceModel
-
- org.orekit.forces.maneuvers.Maneuver
-
- All Implemented Interfaces:
ForceModel
,ParametersDriversProvider
- Direct Known Subclasses:
ConfigurableLowThrustManeuver
,ConstantThrustManeuver
public class Maneuver extends AbstractForceModel
A generic model for maneuvers. It contains: - An attitude override, this is the attitude used during the maneuver, it can be different than 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). The convention here is that the propulsion model drivers are given before the maneuver triggers when calling the methodgetParametersDrivers()
- Since:
- 10.2
- Author:
- Maxime Journot
-
-
Constructor Summary
Constructors Constructor Description Maneuver(AttitudeProvider 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 models depends on position only.AttitudeProvider
getAttitudeOverride()
Get the attitude override used for the maneuver.Stream<EventDetector>
getEventsDetectors()
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.ManeuverTriggers
getManeuverTriggers()
Get the maneuver triggers.String
getName()
Get the name of the maneuver.List<ParameterDriver>
getParametersDrivers()
Get the drivers for parameters.PropulsionModel
getPropulsionModel()
Get the propulsion model.<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 org.orekit.forces.AbstractForceModel
complainIfNotSupported, getParameterDriver, isSupported
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.forces.ForceModel
getParameters, getParameters
-
-
-
-
Constructor Detail
-
Maneuver
public Maneuver(AttitudeProvider 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 AttitudeProvider getAttitudeOverride()
Get the attitude override used for the maneuver.- Returns:
- the attitude override
-
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 models depends on position only.- 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.
- 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.
- 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.- 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.- 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)
Description copied from interface:ForceModel
Compute acceleration.- Parameters:
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- acceleration in same frame as state
-
acceleration
public <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
Description copied from interface:ForceModel
Compute acceleration.- Type Parameters:
T
- type of the elements- Parameters:
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- acceleration in same frame as state
-
getEventsDetectors
public Stream<EventDetector> getEventsDetectors()
Get the discrete events related to the model.- Returns:
- stream of events detectors
-
getFieldEventsDetectors
public <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
field
- field to which the state belongs- Returns:
- stream of events detectors
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Description copied from interface:ParametersDriversProvider
Get the drivers for parameters.- Returns:
- drivers for parameters
-
-