Class ConstantThrustManeuver
- java.lang.Object
-
- org.orekit.forces.AbstractForceModel
-
- org.orekit.forces.maneuvers.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 Summary
Constructors Constructor Description 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.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.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.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.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends org.hipparchus.RealFieldElement<T>>
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T>acceleration(FieldSpacecraftState<T> s, T[] parameters)
Compute acceleration.org.hipparchus.geometry.euclidean.threed.Vector3D
acceleration(SpacecraftState state, double[] parameters)
Compute acceleration.<T extends org.hipparchus.RealFieldElement<T>>
voidaddContribution(FieldSpacecraftState<T> s, FieldTimeDerivativesEquations<T> adder)
Compute the contribution of the force model to the perturbing acceleration.void
addContribution(SpacecraftState s, TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing acceleration.boolean
dependsOnPositionOnly()
Check if force models depends on position only.AttitudeProvider
getAttitudeOverride()
Get the attitude override used for the maneuver.org.hipparchus.geometry.euclidean.threed.Vector3D
getDirection()
Get the direction.double
getDuration()
Get the duration of the maneuver (s).AbsoluteDate
getEndDate()
Get the end date.Stream<EventDetector>
getEventsDetectors()
Get the discrete events related to the model.<T extends org.hipparchus.RealFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventsDetectors(org.hipparchus.Field<T> field)
Get the discrete events related to the model.double
getFlowRate()
Get the flow rate.double
getISP()
Get the specific impulse.String
getName()
Get the name.ParameterDriver[]
getParametersDrivers()
Get the drivers for force model parameters.AbsoluteDate
getStartDate()
Get the start date.double
getThrust()
Get the thrust.void
init(SpacecraftState s0, AbsoluteDate t)
Initialize the force model at the start of propagation.-
Methods inherited from class org.orekit.forces.AbstractForceModel
complainIfNotSupported, getParameterDriver, isSupported
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.forces.ForceModel
getParameters, getParameters
-
-
-
-
Field Detail
-
THRUST
public static final String THRUST
Parameter name for thrust.- See Also:
- Constant Field Values
-
FLOW_RATE
public static final String FLOW_RATE
Parameter name for flow rate.- See Also:
- Constant Field Values
-
-
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 dateduration
- 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 dateduration
- 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 useddirection
- 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 dateduration
- 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 framename
- name of the maneuver, used as a prefix for theparameters 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 dateduration
- 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 useddirection
- the acceleration direction in satellite framename
- name of the maneuver, used as a prefix for theparameters 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
-
init
public void init(SpacecraftState s0, AbsoluteDate t)
Initialize the force model at the start of propagation. This method will be called before any calls toForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,ForceModel.acceleration(SpacecraftState, double[])
orForceModel.acceleration(FieldSpacecraftState, RealFieldElement[])
The default implementation of this method does nothing.
- Parameters:
s0
- spacecraft state at the start of propagation.t
- date of propagation. Not equal toinitialState.getDate()
.
-
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, attitudeadder
- 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, attitudeadder
- 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, attitudeparameters
- 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, attitudeparameters
- 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
-
-