Class 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 Detail

      • 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 Detail

      • 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