Class AbstractConstantThrustPropulsionModel
- java.lang.Object
-
- org.orekit.forces.maneuvers.propulsion.AbstractConstantThrustPropulsionModel
-
- All Implemented Interfaces:
PropulsionModel
,ThrustPropulsionModel
,EventDetectorsProvider
,ParameterDriversProvider
- Direct Known Subclasses:
BasicConstantThrustPropulsionModel
,ScaledConstantThrustPropulsionModel
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 fromThrustPropulsionModel
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
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Constructor Description AbstractConstantThrustPropulsionModel(double thrust, double isp, Vector3D direction, String name)
Constructor with default control cost type.AbstractConstantThrustPropulsionModel(double thrust, double isp, Vector3D direction, Control3DVectorCostType control3DVectorCostType, String name)
Generic constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Control3DVectorCostType
getControl3DVectorCostType()
Get the control vector's cost type.Vector3D
getDirection()
Get the thrust direction in S/C frame.Vector3D
getDirection(AbsoluteDate date)
Get the thrust direction in S/C frame.abstract double
getFlowRate()
Get the flow rate (kg/s).abstract double
getFlowRate(double[] parameters)
Get the flow rate (kg/s).<T extends CalculusFieldElement<T>>
TgetFlowRate(FieldSpacecraftState<T> s, T[] parameters)
Get the flow rate (kg/s).double
getFlowRate(SpacecraftState s)
Get the flow rate (kg/s).double
getFlowRate(SpacecraftState s, double[] parameters)
Get the flow rate (kg/s).abstract double
getFlowRate(AbsoluteDate date)
Get the flow rate (kg/s).abstract <T extends CalculusFieldElement<T>>
TgetFlowRate(T[] parameters)
Get the flow rate (kg/s).protected double
getInitialFlowRate()
Get the initial flow rate.protected Vector3D
getInitialThrustVector()
Get the initial thrust vector.double
getIsp()
Get the specific impulse.double
getIsp(AbsoluteDate date)
Get the specific impulse at given date.String
getName()
Get the maneuver name.double
getThrustMagnitude()
Get the thrust magnitude (N).double
getThrustMagnitude(AbsoluteDate date)
Get the thrust magnitude (N) at given date.abstract Vector3D
getThrustVector()
Get the thrust vector in spacecraft frame (N).abstract Vector3D
getThrustVector(double[] parameters)
Get the thrust vector in spacecraft frame (N).<T extends CalculusFieldElement<T>>
FieldVector3D<T>getThrustVector(FieldSpacecraftState<T> s, T[] parameters)
Get the thrust vector in spacecraft frame (N).Vector3D
getThrustVector(SpacecraftState s)
Get the thrust vector in spacecraft frame (N).Vector3D
getThrustVector(SpacecraftState s, double[] parameters)
Get the thrust vector in spacecraft frame (N).abstract Vector3D
getThrustVector(AbsoluteDate date)
Get the thrust vector in spacecraft frame (N).abstract <T extends CalculusFieldElement<T>>
FieldVector3D<T>getThrustVector(T[] parameters)
Get the thrust vector in spacecraft frame (N).-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getEventDetectors, getFieldEventDetectors
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, getParametersDrivers, isSupported
-
Methods inherited from interface org.orekit.forces.maneuvers.propulsion.PropulsionModel
getEventDetectors, getFieldEventDetectors, init, init
-
Methods inherited from interface org.orekit.forces.maneuvers.propulsion.ThrustPropulsionModel
getAcceleration, getAcceleration, getDirection, getIsp, getMassDerivatives, getMassDerivatives
-
-
-
-
Constructor Detail
-
AbstractConstantThrustPropulsionModel
public 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 framecontrol3DVectorCostType
- control cost typename
- name of the maneuver- Since:
- 12.0
-
AbstractConstantThrustPropulsionModel
public 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 framename
- name of the maneuver
-
-
Method Detail
-
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 interfacePropulsionModel
- Returns:
- the maneuver name
-
getControl3DVectorCostType
public Control3DVectorCostType getControl3DVectorCostType()
Get the control vector's cost type.- Specified by:
getControl3DVectorCostType
in interfacePropulsionModel
- 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 interfaceThrustPropulsionModel
- 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 interfaceThrustPropulsionModel
- 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 interfaceThrustPropulsionModel
- Parameters:
s
- current spacecraft stateparameters
- 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 interfaceThrustPropulsionModel
- Parameters:
s
- current spacecraft stateparameters
- 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 interfaceThrustPropulsionModel
- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
s
- current spacecraft stateparameters
- 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 interfaceThrustPropulsionModel
- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
s
- current spacecraft stateparameters
- 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)
-
-