Class ConstantThrustManeuver

java.lang.Object
org.orekit.forces.maneuvers.Maneuver
org.orekit.forces.maneuvers.ConstantThrustManeuver
All Implemented Interfaces:
ForceModel, EventDetectorsProvider, ParameterDriversProvider

public class ConstantThrustManeuver extends Maneuver
This class implements a simple maneuver with constant thrust.

The maneuver is defined by a direction in satellite frame. The current attitude of the spacecraft, defined by the current spacecraft state, will be used to compute the thrust direction in inertial frame. A typical case for tangential maneuvers is to use a LOF aligned attitude provider for state propagation and a velocity increment along the +X satellite axis.

Author:
Fabien Maussion, Véronique Pommier-Maurussane, Luc Maisonobe, Maxime Journot
  • Constructor Details

    • ConstantThrustManeuver

      public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction)
      Simple constructor for a constant direction and constant thrust.

      It uses the propulsion model BasicConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      Calling this constructor is equivalent to call ConstantThrustManeuver(date, duration, thrust, isp, direction, ""), hence not using any prefix for the parameters drivers names.

      Parameters:
      date - maneuver date
      duration - the duration of the thrust (s) (if negative, the date is considered to be the stop date)
      thrust - the thrust force (N)
      isp - engine specific impulse (s)
      direction - the acceleration direction in satellite frame.
    • ConstantThrustManeuver

      public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, AttitudeProvider attitudeOverride, Vector3D direction, String name)
      Simple constructor for a constant direction and constant thrust.

      It uses the propulsion model BasicConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      Calling this constructor is equivalent to call ConstantThrustManeuver(date, duration, thrust, isp, direction, ""), hence not using any prefix for the parameters drivers names.

      Parameters:
      date - maneuver date
      duration - the duration of the thrust (s) (if negative, the date is considered to be the stop date)
      thrust - the thrust force (N)
      isp - engine specific impulse (s)
      attitudeOverride - the attitude provider to use for the maneuver, or null if the attitude from the propagator should be used
      direction - the acceleration direction in satellite frame.
      name - name of the maneuver, used as a prefix for the parameters drivers
      Since:
      12.0
    • ConstantThrustManeuver

      public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, AttitudeProvider attitudeOverride, Vector3D direction)
      Simple constructor for a constant direction and constant thrust.

      It uses the propulsion model BasicConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      Calling this constructor is equivalent to call ConstantThrustManeuver(date, duration, thrust, isp, direction, ""), hence not using any prefix for the parameters drivers names.

      Parameters:
      date - maneuver date
      duration - the duration of the thrust (s) (if negative, the date is considered to be the stop date)
      thrust - the thrust force (N)
      isp - engine specific impulse (s)
      attitudeOverride - the attitude provider to use for the maneuver, or null if the attitude from the propagator should be used
      direction - the acceleration direction in satellite frame.
      Since:
      9.2
    • ConstantThrustManeuver

      public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction, String name)
      Simple constructor for a constant direction and constant thrust.

      It uses the propulsion model BasicConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      The name of the maneuver is used to distinguish the parameter drivers. A typical use case is to use something like "1A-" or "2B-" as a prefix corresponding to the name of the thruster to use, so separate parameters can be adjusted for the different thrusters involved during an orbit determination where maneuvers parameters are estimated.

      Parameters:
      date - maneuver date
      duration - the duration of the thrust (s) (if negative, the date is considered to be the stop date)
      thrust - the thrust force (N)
      isp - engine specific impulse (s)
      direction - the acceleration direction in satellite frame
      name - name of the maneuver, used as a prefix for the parameters drivers
      Since:
      9.0
    • ConstantThrustManeuver

      public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, AttitudeProvider attitudeOverride, Vector3D direction, Control3DVectorCostType control3DVectorCostType, String name)
      Simple constructor for a constant direction and constant thrust.

      It uses the propulsion model BasicConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      The name of the maneuver is used to distinguish the parameter drivers. A typical use case is to use something like "1A-" or "2B-" as a prefix corresponding to the name of the thruster to use, so separate parameters can be adjusted for the different thrusters involved during an orbit determination where maneuvers parameters are estimated.

      Parameters:
      date - maneuver date
      duration - the duration of the thrust (s) (if negative, the date is considered to be the stop date)
      thrust - the thrust force (N)
      isp - engine specific impulse (s)
      attitudeOverride - the attitude provider to use for the maneuver, or null if the attitude from the propagator should be used
      direction - the acceleration direction in satellite frame
      control3DVectorCostType - control vector's cost type
      name - name of the maneuver, used as a prefix for the parameters drivers
      Since:
      12.0
    • ConstantThrustManeuver

      public ConstantThrustManeuver(AbsoluteDate date, double duration, AttitudeProvider attitudeOverride, AbstractConstantThrustPropulsionModel constantThrustPropulsionModel)
      Simple constructor for a constant direction and constant thrust.

      It uses an AbstractConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      The names of the maneuver (and thus its parameter drivers) are extracted from the propulsion model.

      Parameters:
      date - maneuver date
      duration - the duration of the thrust (s) (if negative, the date is considered to be the stop date)
      attitudeOverride - the attitude provider to use for the maneuver, or null if the attitude from the propagator should be used
      constantThrustPropulsionModel - user-defined constant thrust propulsion model
    • ConstantThrustManeuver

      public ConstantThrustManeuver(AttitudeProvider attitudeOverride, DateBasedManeuverTriggers dateBasedManeuverTriggers, AbstractConstantThrustPropulsionModel constantThrustPropulsionModel)
      Simple constructor for a constant direction and constant thrust.

      It uses an AbstractConstantThrustPropulsionModel and the maneuver triggers DateBasedManeuverTriggers

      The names of the maneuver (and thus its parameter drivers) are extracted from the propulsion model or the maneuver triggers. Propulsion model name is evaluated first, if it isn't empty, it becomes the name of the maneuver. In that case the name in the maneuver triggers should be the same or empty, otherwise this could be misleading when retrieving estimated parameters by their names.

      Parameters:
      attitudeOverride - the attitude provider to use for the maneuver, or null if the attitude from the propagator should be used
      dateBasedManeuverTriggers - user-defined maneuver triggers object based on a start and end date
      constantThrustPropulsionModel - user-defined constant thrust propulsion model
  • Method Details

    • getThrustVector

      public Vector3D getThrustVector(AbsoluteDate date)
      Get the thrust vector (N) in S/C frame.
      Parameters:
      date - date at which the thrust vector wants to be known, often the date parameter will not be important and can be whatever if the thrust parameter driver as only value estimated over the all orbit determination interval
      Returns:
      thrust vector (N) in S/C frame.
    • getThrustVector

      public Vector3D getThrustVector()
      Get the thrust vector (N) in S/C frame.
      Returns:
      thrust vector (N) in S/C frame.
    • getThrustMagnitude

      public double getThrustMagnitude(AbsoluteDate date)
      Get the thrust magnitude.
      Parameters:
      date - date at which the thrust vector wants to be known, often the date parameter will not be important and can be whatever if the thrust parameter driver as only value estimated over the all orbit determination interval
      Returns:
      thrust force (N).
    • getThrustMagnitude

      public double getThrustMagnitude()
      Get the thrust magnitude.
      Returns:
      thrust force (N).
    • getIsp

      public double getIsp(AbsoluteDate date)
      Get the specific impulse at given date.
      Parameters:
      date - date at which the thrust vector wants to be known, often the date parameter will not be important and can be whatever if the thrust parameter driver as only value estimated over the all orbit determination interval
      Returns:
      specific impulse (s).
    • getIsp

      public double getIsp()
      Get the specific impulse.
      Returns:
      specific impulse (s).
    • getFlowRate

      public double getFlowRate(AbsoluteDate date)
      Get the flow rate at given date.
      Parameters:
      date - at which the Thrust wants to be known
      Returns:
      flow rate (negative, kg/s).
    • getFlowRate

      public double getFlowRate()
      Get the flow rate.
      Returns:
      flow rate (negative, kg/s).
    • getDirection

      public Vector3D getDirection(AbsoluteDate date)
      Get the direction.
      Parameters:
      date - at which the Thrust wants to be known
      Returns:
      the direction
      Since:
      9.2
    • getDirection

      public Vector3D getDirection()
      Get the direction.
      Returns:
      the direction
      Since:
      9.2
    • getStartDate

      public AbsoluteDate getStartDate()
      Get the start date.
      Returns:
      the start date
      Since:
      9.2
    • getEndDate

      public AbsoluteDate getEndDate()
      Get the end date.
      Returns:
      the end date
      Since:
      9.2
    • getDuration

      public double getDuration()
      Get the duration of the maneuver (s). duration = endDate - startDate
      Returns:
      the duration of the maneuver (s)
      Since:
      9.2
    • isFiring

      public boolean isFiring(SpacecraftState s)
      Check if maneuvering is on.
      Parameters:
      s - current state
      Returns:
      true if maneuver is on at this state
      Since:
      10.1
    • isFiring

      public <T extends CalculusFieldElement<T>> boolean isFiring(FieldSpacecraftState<T> s)
      Check if maneuvering is on.
      Type Parameters:
      T - type of the field elements
      Parameters:
      s - current state
      Returns:
      true if maneuver is on at this state
      Since:
      10.1
    • isFiring

      public boolean isFiring(AbsoluteDate date)
      Check if maneuvering is on.
      Parameters:
      date - current date
      Returns:
      true if maneuver is on at this date
      Since:
      10.1