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 (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
  • Constructor Details

    • Maneuver

      public Maneuver(AttitudeRotationModel attitudeOverride, ManeuverTriggers maneuverTriggers, PropulsionModel propulsionModel)
      Generic maneuver constructor.
      Parameters:
      attitudeOverride - attitude provider for the attitude during the maneuver
      maneuverTriggers - maneuver triggers
      propulsionModel - propulsion model
  • Method Details

    • 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 interface ForceModel
      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

      public void init(SpacecraftState initialState, AbsoluteDate target)
      Specified by:
      init in interface ForceModel
      Parameters:
      initialState - spacecraft state at the start of propagation.
      target - date of propagation. Not equal to initialState.getDate().
    • init

      public <T extends CalculusFieldElement<T>> void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
      Specified by:
      init in interface ForceModel
      Type Parameters:
      T - type of the elements
      Parameters:
      initialState - spacecraft state at the start of propagation.
      target - date of propagation. Not equal to initialState.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 interface ForceModel
      Parameters:
      s - current state information: date, kinematics, attitude
      adder - object where the contribution should be added
    • getMassDerivative

      public double getMassDerivative(SpacecraftState state, double[] parameters)
      Compute the mass rate. Zero by default.
      Specified by:
      getMassDerivative in interface ForceModel
      Parameters:
      state - current state information: date, kinematics, attitude
      parameters - 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:
      addContribution in interface ForceModel
      Type Parameters:
      T - type of the elements
      Parameters:
      s - current state information: date, kinematics, attitude
      adder - 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:
      getMassDerivative in interface ForceModel
      Type Parameters:
      T - field type
      Parameters:
      state - current state information: date, kinematics, attitude
      parameters - values of the force model parameters at state date
      Returns:
      mass rate (kg/s)
    • acceleration

      public Vector3D acceleration(SpacecraftState s, double[] parameters)
      Compute acceleration.
      Specified by:
      acceleration in interface ForceModel
      Parameters:
      s - current state information: date, kinematics, attitude
      parameters - 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 interface ForceModel
      Type Parameters:
      T - type of the elements
      Parameters:
      s - current state information: date, kinematics, attitude
      parameters - 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 interface EventDetectorsProvider
      Specified by:
      getEventDetectors in interface ForceModel
      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 interface EventDetectorsProvider
      Specified by:
      getFieldEventDetectors in interface ForceModel
      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 interface ParameterDriversProvider
      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