Class ConstantThrustManeuver

  • All Implemented Interfaces:
    ForceModel

    public class ConstantThrustManeuver
    extends AbstractForceModel
    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
    • Constructor Detail

      • ConstantThrustManeuver

        public ConstantThrustManeuver​(AbsoluteDate date,
                                      double duration,
                                      double thrust,
                                      double isp,
                                      org.hipparchus.geometry.euclidean.threed.Vector3D direction)
        Simple constructor for a constant direction and constant thrust.

        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,
                                      org.hipparchus.geometry.euclidean.threed.Vector3D direction)
        Simple constructor for a constant direction and constant thrust.

        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,
                                      org.hipparchus.geometry.euclidean.threed.Vector3D direction,
                                      String name)
        Simple constructor for a constant direction and constant thrust.

        If the driversNamePrefix is empty, the names will be "thrust" and "flow rate", otherwise the prefix is prepended to these fixed strings. 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,
                                      org.hipparchus.geometry.euclidean.threed.Vector3D direction,
                                      String name)
        Simple constructor for a constant direction and constant thrust.

        If the driversNamePrefix is empty, the names will be "thrust" and "flow rate", otherwise the prefix is prepended to these fixed strings. 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
        name - name of the maneuver, used as a prefix for the parameters drivers
        Since:
        9.2
    • Method Detail

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

        public double getThrust()
        Get the thrust.
        Returns:
        thrust force (N).
      • getISP

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

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

        public org.hipparchus.geometry.euclidean.threed.Vector3D getDirection()
        Get the direction.
        Returns:
        the direction
        Since:
        9.2
      • getName

        public String getName()
        Get the name.
        Returns:
        the name
        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
      • getAttitudeOverride

        public AttitudeProvider getAttitudeOverride()
        Get the attitude override used for the maneuver.
        Returns:
        the attitude override
        Since:
        9.2
      • 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, attitude
        adder - object where the contribution should be added
      • addContribution

        public <T extends org.hipparchus.RealFieldElement<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, attitude
        adder - object where the contribution should be added
      • acceleration

        public org.hipparchus.geometry.euclidean.threed.Vector3D acceleration​(SpacecraftState state,
                                                                              double[] parameters)
        Compute acceleration.
        Parameters:
        state - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        acceleration in same frame as state
      • acceleration

        public <T extends org.hipparchus.RealFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration​(FieldSpacecraftState<T> s,
                                                                                                                                     T[] parameters)
        Compute acceleration.
        Type Parameters:
        T - type of the elements
        Parameters:
        s - current state information: date, kinematics, attitude
        parameters - 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
      • getParametersDrivers

        public ParameterDriver[] getParametersDrivers()
        Get the drivers for force model parameters.
        Returns:
        drivers for force model parameters
      • getFieldEventsDetectors

        public <T extends org.hipparchus.RealFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors​(org.hipparchus.Field<T> field)
        Get the discrete events related to the model.
        Type Parameters:
        T - extends RealFieldElement
        Parameters:
        field - field to which the state belongs
        Returns:
        stream of events detectors