Class AbstractConstantThrustPropulsionModel

java.lang.Object
org.orekit.forces.maneuvers.propulsion.AbstractConstantThrustPropulsionModel
All Implemented Interfaces:
PropulsionModel, ThrustPropulsionModel, EventDetectorsProvider, ParameterDriversProvider
Direct Known Subclasses:
BasicConstantThrustPropulsionModel, ScaledConstantThrustPropulsionModel, SphericalConstantThrustPropulsionModel

public abstract class AbstractConstantThrustPropulsionModel extends Object implements ThrustPropulsionModel
This abstract class simply serve as a container for a constant thrust maneuver. It re-writes all spacecraft dependent methods from ThrustPropulsionModel and removes their dependencies to current spacecraft state. Indeed since the thrust is constant (i.e. not variable during the maneuver), most of the calculated parameters (thrust vector, flow rate etc.) do not depend on current spacecraft state.
Since:
10.2
Author:
Maxime Journot
  • Constructor Details

    • AbstractConstantThrustPropulsionModel

      protected AbstractConstantThrustPropulsionModel(double thrust, double isp, Vector3D direction, Control3DVectorCostType control3DVectorCostType, String name)
      Generic constructor.
      Parameters:
      thrust - initial thrust value (N)
      isp - initial isp value (s)
      direction - initial thrust direction in S/C frame
      control3DVectorCostType - control cost type
      name - name of the maneuver
      Since:
      12.0
    • AbstractConstantThrustPropulsionModel

      protected AbstractConstantThrustPropulsionModel(double thrust, double isp, Vector3D direction, String name)
      Constructor with default control cost type.
      Parameters:
      thrust - initial thrust value (N)
      isp - initial isp value (s)
      direction - initial thrust direction in S/C frame
      name - name of the maneuver
  • Method Details

    • getInitialThrustVector

      protected Vector3D getInitialThrustVector()
      Get the initial thrust vector.
      Returns:
      the initial thrust vector
    • getInitialFlowRate

      protected double getInitialFlowRate()
      Get the initial flow rate.
      Returns:
      the initial flow rate
    • getName

      public String getName()
      Get the maneuver name.
      Specified by:
      getName in interface PropulsionModel
      Returns:
      the maneuver name
    • getControl3DVectorCostType

      public Control3DVectorCostType getControl3DVectorCostType()
      Get the control vector's cost type.
      Specified by:
      getControl3DVectorCostType in interface PropulsionModel
      Returns:
      control cost type
    • getIsp

      public double getIsp()
      Get the specific impulse.
      Returns:
      specific impulse (s), will throw exception if used on PDriver having several driven values, because in this case a date is needed.
    • getIsp

      public double getIsp(AbsoluteDate date)
      Get the specific impulse at given date.
      Parameters:
      date - date at which the Isp wants to be known
      Returns:
      specific impulse (s).
    • getDirection

      public Vector3D getDirection(AbsoluteDate date)
      Get the thrust direction in S/C frame.
      Parameters:
      date - date at which the direction wants to be known
      Returns:
      the thrust direction in S/C frame
    • getDirection

      public Vector3D getDirection()
      Get the thrust direction in S/C frame.
      Returns:
      the thrust direction in S/C frame, will throw exception if used on PDriver having several driven values, because in this case a date is needed.
    • getThrustMagnitude

      public double getThrustMagnitude()
      Get the thrust magnitude (N).
      Returns:
      the thrust value (N), will throw an exception if called of a driver having several values driven
    • getThrustMagnitude

      public double getThrustMagnitude(AbsoluteDate date)
      Get the thrust magnitude (N) 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:
      the thrust value (N)
    • getThrustVector

      public Vector3D getThrustVector(SpacecraftState s)
      Get the thrust vector in spacecraft frame (N). Here the thrust vector do not depend on current S/C state.
      Specified by:
      getThrustVector in interface ThrustPropulsionModel
      Parameters:
      s - current spacecraft state
      Returns:
      thrust vector in spacecraft frame (N)
    • getFlowRate

      public double getFlowRate(SpacecraftState s)
      Get the flow rate (kg/s). Here the flow rate do not depend on current S/C state
      Specified by:
      getFlowRate in interface ThrustPropulsionModel
      Parameters:
      s - current spacecraft state
      Returns:
      flow rate (kg/s)
    • getThrustVector

      public Vector3D getThrustVector(SpacecraftState s, double[] parameters)
      Get the thrust vector in spacecraft frame (N). Here the thrust vector do not depend on current S/C state.
      Specified by:
      getThrustVector in interface ThrustPropulsionModel
      Parameters:
      s - current spacecraft state
      parameters - propulsion model parameters
      Returns:
      thrust vector in spacecraft frame (N)
    • getFlowRate

      public double getFlowRate(SpacecraftState s, double[] parameters)
      Get the flow rate (kg/s). Here the flow rate do not depend on current S/C state
      Specified by:
      getFlowRate in interface ThrustPropulsionModel
      Parameters:
      s - current spacecraft state
      parameters - propulsion model parameters
      Returns:
      flow rate (kg/s)
    • getThrustVector

      public <T extends CalculusFieldElement<T>> FieldVector3D<T> getThrustVector(FieldSpacecraftState<T> s, T[] parameters)
      Get the thrust vector in spacecraft frame (N). Here the thrust vector do not depend on current S/C state.
      Specified by:
      getThrustVector in interface ThrustPropulsionModel
      Type Parameters:
      T - extends CalculusFieldElement<T>
      Parameters:
      s - current spacecraft state
      parameters - propulsion model parameters
      Returns:
      thrust vector in spacecraft frame (N)
    • getFlowRate

      public <T extends CalculusFieldElement<T>> T getFlowRate(FieldSpacecraftState<T> s, T[] parameters)
      Get the flow rate (kg/s). Here the flow rate do not depend on current S/C state
      Specified by:
      getFlowRate in interface ThrustPropulsionModel
      Type Parameters:
      T - extends CalculusFieldElement<T>
      Parameters:
      s - current spacecraft state
      parameters - propulsion model parameters
      Returns:
      flow rate (kg/s)
    • getThrustVector

      public abstract Vector3D getThrustVector()
      Get the thrust vector in spacecraft frame (N). Here it does not depend on current S/C state.
      Returns:
      thrust vector in spacecraft frame (N), will throw an exception if used on driver containing several value spans
    • getThrustVector

      public abstract Vector3D getThrustVector(AbsoluteDate date)
      Get the thrust vector in spacecraft frame (N). Here it does not depend on current S/C state.
      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 in spacecraft frame (N)
    • getFlowRate

      public abstract double getFlowRate()
      Get the flow rate (kg/s). Here it does not depend on current S/C.
      Returns:
      flow rate (kg/s) will throw an exception if used on driver containing several value spans
    • getFlowRate

      public abstract double getFlowRate(AbsoluteDate date)
      Get the flow rate (kg/s). Here it does not depend on current S/C.
      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:
      flow rate (kg/s)
    • getThrustVector

      public abstract Vector3D getThrustVector(double[] parameters)
      Get the thrust vector in spacecraft frame (N). Here it does not depend on current S/C state.
      Parameters:
      parameters - propulsion model parameters
      Returns:
      thrust vector in spacecraft frame (N)
    • getFlowRate

      public abstract double getFlowRate(double[] parameters)
      Get the flow rate (kg/s). Here it does not depend on current S/C state.
      Parameters:
      parameters - propulsion model parameters
      Returns:
      flow rate (kg/s)
    • getThrustVector

      public abstract <T extends CalculusFieldElement<T>> FieldVector3D<T> getThrustVector(T[] parameters)
      Get the thrust vector in spacecraft frame (N). Here it does not depend on current S/C state.
      Type Parameters:
      T - extends CalculusFieldElement<T>
      Parameters:
      parameters - propulsion model parameters
      Returns:
      thrust vector in spacecraft frame (N)
    • getFlowRate

      public abstract <T extends CalculusFieldElement<T>> T getFlowRate(T[] parameters)
      Get the flow rate (kg/s). Here it does not depend on current S/C state.
      Type Parameters:
      T - extends CalculusFieldElement<T>
      Parameters:
      parameters - propulsion model parameters
      Returns:
      flow rate (kg/s)