Class Maneuver

  • All Implemented Interfaces:
    ForceModel, EventDetectorsProvider, ParameterDriversProvider
    Direct Known Subclasses:
    ConfigurableLowThrustManeuver, 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). The convention here is that the propulsion model drivers are given before the maneuver triggers when calling the method getParametersDrivers()
    Since:
    10.2
    Author:
    Maxime Journot
    • Constructor Detail

      • Maneuver

        public Maneuver​(AttitudeProvider 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 Detail

      • 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 AttitudeProvider getAttitudeOverride()
        Get the attitude override used for the maneuver.
        Returns:
        the attitude override
      • 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 velocity, either directly or due to a dependency on attitude
      • 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
      • acceleration

        public Vector3D acceleration​(SpacecraftState s,
                                     double[] parameters)
        Description copied from interface: ForceModel
        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)
        Description copied from interface: ForceModel
        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
      • 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