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
A generic model for maneuvers with finite-valued acceleration magnitude, as opposed to instantaneous changes
in the velocity vector which are defined via detectors (in
ImpulseManeuver and
FieldImpulseManeuver).
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
method getParametersDrivers()- Since:
- 10.2
- Author:
- Maxime Journot
-
Field Summary
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY -
Constructor Summary
ConstructorsConstructorDescriptionManeuver(AttitudeRotationModel attitudeOverride, ManeuverTriggers maneuverTriggers, PropulsionModel propulsionModel) Generic maneuver constructor. -
Method Summary
Modifier and TypeMethodDescription<T extends CalculusFieldElement<T>>
FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters) Compute acceleration.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.voidCompute the contribution of the force model to the perturbing acceleration.booleanCheck 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.Get the attitude override used for the maneuver.Get the control vector's cost type.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.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.<T extends CalculusFieldElement<T>>
TgetMassDerivative(FieldSpacecraftState<T> state, T[] parameters) Compute the mass rate.doublegetMassDerivative(SpacecraftState state, double[] parameters) Compute the mass rate.getName()Get the name of the maneuver.Get the drivers for parameters.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.voidinit(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, waitMethods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getDateDetector, getEventDetectors, getFieldDateDetector, getFieldEventDetectorsMethods inherited from interface org.orekit.forces.ForceModel
dependsOnAttitudeRateMethods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
Constructor Details
-
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 Details
-
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
Get the attitude override used for the maneuver.- Returns:
- the attitude override
- Since:
- 13.0
-
getControl3DVectorCostType
Get the control vector's cost type.- Returns:
- control cost type
- Since:
- 12.0
-
getPropulsionModel
Get the propulsion model.- Returns:
- the propulsion model
-
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:
dependsOnPositionOnlyin interfaceForceModel- Returns:
- true if force model depends on position only, false if it depends on mass or velocity, either directly or due to a dependency on attitude
-
init
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:
initin 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:
initin 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
Compute the contribution of the force model to the perturbing acceleration.The default implementation simply adds the
accelerationas a non-Keplerian acceleration.- Specified by:
addContributionin interfaceForceModel- Parameters:
s- current state information: date, kinematics, attitudeadder- object where the contribution should be added
-
getMassDerivative
Compute the mass rate. Zero by default.- Specified by:
getMassDerivativein interfaceForceModel- Parameters:
state- current state information: date, kinematics, attitudeparameters- values of the force model parameters at state date- Returns:
- mass rate (kg/s)
-
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:
addContributionin interfaceForceModel- Type Parameters:
T- type of the elements- Parameters:
s- current state information: date, kinematics, attitudeadder- object where the contribution should be added
-
getMassDerivative
public <T extends CalculusFieldElement<T>> T getMassDerivative(FieldSpacecraftState<T> state, T[] parameters) Compute the mass rate. Zero by default.- Specified by:
getMassDerivativein interfaceForceModel- Type Parameters:
T- field type- Parameters:
state- current state information: date, kinematics, attitudeparameters- values of the force model parameters at state date- Returns:
- mass rate (kg/s)
-
acceleration
Compute acceleration.- Specified by:
accelerationin 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:
accelerationin 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
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:
getEventDetectorsin interfaceEventDetectorsProvider- Specified by:
getEventDetectorsin 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:
getFieldEventDetectorsin interfaceEventDetectorsProvider- Specified by:
getFieldEventDetectorsin interfaceForceModel- Type Parameters:
T- extends CalculusFieldElement<T>- Parameters:
field- field to which the state belongs- Returns:
- stream of event detectors
-
getParametersDrivers
Get the drivers for parameters.- Specified by:
getParametersDriversin 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
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
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
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
-