org.orekit.forces.maneuvers
Class ConstantThrustManeuver

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by org.orekit.parameter.JacobiansParameterizable
          extended by org.orekit.forces.maneuvers.ConstantThrustManeuver
All Implemented Interfaces:
Serializable, ForceModel, GradientModel, IJacobiansParameterizable, IParameterizable

public class ConstantThrustManeuver
extends JacobiansParameterizable
implements ForceModel, GradientModel

This class implements a simple maneuver with constant thrust.

The maneuver is defined by a direction in satellite frame or in a frame defined by user or in a LOF with type defined by user. In first case, the current attitude of the spacecraft, defined by the current spacecraft state, will be used to convert the thrust direction in satellite frame into inertial frame when direction is defined in satellite 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.

The implementation of this class enables the computation of partial derivatives by finite differences with respect to thrust and flow rate.

The maneuver is associated to two triggering EventDetector (one to start the thrust, the other one to stop the thrust): the maneuver is triggered only if the underlying event generates a STOP event, in which case this class will generate a RESET_STATE event (the stop event from the underlying object is therefore filtered out).

Note: including this force in a numerical propagator with adaptive step-size integrator may require to set up a small lower bound for step-size (such as 1E-8s) since force discontinuity may cause difficulties to the integrator when the maneuver stops.

Author:
Fabien Maussion, Véronique Pommier-Maurussane, Luc Maisonobe
See Also:
Serialized Form

Field Summary
static String FLOW_RATE
          Parameter name for flow rate.
static String THRUST
          Parameter name for thrust.
 
Constructor Summary
ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction, MassProvider massProvider, String partName)
          Constructor for a constant direction in satellite frame and constant thrust.
ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction, MassProvider massProvider, String partName, Frame frame)
          Constructor for a constant direction in provided frame and constant thrust.
ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction, MassProvider massProvider, String partName, LOFType lofType)
          Constructor for a constant direction in provided local orbital frame and constant thrust.
ConstantThrustManeuver(AbsoluteDate date, double duration, Parameter thrust, Parameter flowRate, Vector3D direction, MassProvider massProvider, String partName)
          Constructor for a constant direction in satellite frame and constant thrust using Parameter.
ConstantThrustManeuver(AbsoluteDate date, double duration, Parameter thrust, Parameter flowRate, Vector3D direction, MassProvider massProvider, String partName, Frame frame)
          Constructor for a constant direction in provided frame and constant thrust using Parameter.
ConstantThrustManeuver(AbsoluteDate date, double duration, Parameter thrust, Parameter flowRate, Vector3D direction, MassProvider massProvider, String partName, LOFType lofType)
          Constructor for a constant direction in provided local orbital frame and constant thrust using Parameter with a local orbital frame defined by its type.
ConstantThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, double thrust, double isp, Vector3D direction, MassProvider massProvider, String partName)
          Constructor for a constant direction in satellite frame and constant thrust.
ConstantThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, double thrust, double isp, Vector3D direction, MassProvider massProvider, String partName, Frame frame)
          Constructor for a constant direction in provided frame and constant thrust.
ConstantThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, double thrust, double isp, Vector3D direction, MassProvider massProvider, String partName, LOFType lofType)
          Constructor for a constant direction in provided local orbital frame and constant thrust.
 
Method Summary
 void addContribution(SpacecraftState s, TimeDerivativesEquations adder)
          Compute the contribution of the force model to the perturbing acceleration.
 void addDAccDParam(SpacecraftState s, Parameter param, double[] dAccdParam)
          Compute acceleration derivatives with respect to additional parameters.
 void addDAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel)
          Compute acceleration derivatives with respect to state parameters.
 Vector3D computeAcceleration(SpacecraftState s)
          Compute the acceleration due to the force.
 boolean computeGradientPosition()
          This method returns true if the acceleration partial derivatives with respect to position have to be computed.
 boolean computeGradientVelocity()
          This method returns true if the acceleration partial derivatives with respect to velocity have to be computed.
 AbsoluteDate getEndDate()
          Return the maneuver stop date (if a date or a DateDetector as been provided).
 EventDetector[] getEventsDetectors()
          Get the discrete events related to the model.
 Frame getFrame()
          Get the frame of the acceleration direction.
 double getISP()
          Get the specific impulse.
 AbsoluteDate getStartDate()
          Return the maneuver start date (if a date or a DateDetector as been provided).
 boolean isFiring()
          Returns maneuver status (firing or not).
 void setFiring(boolean isFiring)
          Set maneuver status.
 
Methods inherited from class org.orekit.parameter.JacobiansParameterizable
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
 
Methods inherited from class org.orekit.parameter.Parameterizable
addParameter, getParameters, supportsParameter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.orekit.parameter.IParameterizable
getParameters, supportsParameter
 

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,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName)
Constructor for a constant direction in satellite frame and constant thrust.

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.
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes

ConstantThrustManeuver

public ConstantThrustManeuver(AbsoluteDate date,
                              double duration,
                              double thrust,
                              double isp,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName,
                              Frame frame)
Constructor for a constant direction in provided frame and constant thrust.

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 the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
frame - the frame of the acceleration direction. SpacecraftFrame class is an unsupported frame.
Throws:
IllegalArgumentException - thrown if input frame is SpacecraftFrame.

ConstantThrustManeuver

public ConstantThrustManeuver(AbsoluteDate date,
                              double duration,
                              double thrust,
                              double isp,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName,
                              LOFType lofType)
Constructor for a constant direction in provided local orbital frame and constant thrust.

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 the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
lofType - the LOF type of the acceleration direction

ConstantThrustManeuver

public ConstantThrustManeuver(AbsoluteDate date,
                              double duration,
                              Parameter thrust,
                              Parameter flowRate,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName)
Constructor for a constant direction in satellite frame and constant thrust using Parameter.

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) parameter
flowRate - the flow rate parameter
direction - the acceleration direction in the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
Throws:
IllegalArgumentException - thrown if input frame is SpacecraftFrame.

ConstantThrustManeuver

public ConstantThrustManeuver(AbsoluteDate date,
                              double duration,
                              Parameter thrust,
                              Parameter flowRate,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName,
                              Frame frame)
Constructor for a constant direction in provided frame and constant thrust using Parameter.

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) parameter
flowRate - the flow rate parameter
direction - the acceleration direction in the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
frame - the frame of the acceleration direction. SpacecraftFrame class is an unsupported frame.
Throws:
IllegalArgumentException - thrown if input frame is SpacecraftFrame.

ConstantThrustManeuver

public ConstantThrustManeuver(AbsoluteDate date,
                              double duration,
                              Parameter thrust,
                              Parameter flowRate,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName,
                              LOFType lofType)
Constructor for a constant direction in provided local orbital frame and constant thrust using Parameter with a local orbital frame defined by its type.

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) parameter
flowRate - the flow rate parameter
direction - the acceleration direction in the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
lofType - the LOF type of the acceleration direction

ConstantThrustManeuver

public ConstantThrustManeuver(EventDetector startEventDetector,
                              EventDetector stopEventDetector,
                              double thrust,
                              double isp,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName)
Constructor for a constant direction in satellite frame and constant thrust.

Parameters:
startEventDetector - event detector upon which maneuver should starts
stopEventDetector - event detector upon which maneuver should stops
thrust - the thrust force (N)
isp - engine specific impulse (s)
direction - the acceleration direction in satellite frame.
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes

ConstantThrustManeuver

public ConstantThrustManeuver(EventDetector startEventDetector,
                              EventDetector stopEventDetector,
                              double thrust,
                              double isp,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName,
                              Frame frame)
Constructor for a constant direction in provided frame and constant thrust.

Parameters:
startEventDetector - event detector upon which maneuver should starts
stopEventDetector - event detector upon which maneuver should stops
thrust - the thrust force (N)
isp - engine specific impulse (s)
direction - the acceleration direction in the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
frame - the frame of the acceleration direction. SpacecraftFrame class is an unsupported frame.
Throws:
IllegalArgumentException - thrown if input frame is SpacecraftFrame.

ConstantThrustManeuver

public ConstantThrustManeuver(EventDetector startEventDetector,
                              EventDetector stopEventDetector,
                              double thrust,
                              double isp,
                              Vector3D direction,
                              MassProvider massProvider,
                              String partName,
                              LOFType lofType)
Constructor for a constant direction in provided local orbital frame and constant thrust.

Parameters:
startEventDetector - event detector upon which maneuver should starts
stopEventDetector - event detector upon which maneuver should stops
thrust - the thrust force (N)
isp - engine specific impulse (s)
direction - the acceleration direction in the frame defined by the user
massProvider - the mass provider
partName - the part of the mass provider whose mass diminishes
lofType - the LOF type of the acceleration direction
Method Detail

getISP

public double getISP()
Get the specific impulse.

Returns:
specific impulse (s).

getStartDate

public AbsoluteDate getStartDate()
Return the maneuver start date (if a date or a DateDetector as been provided).

Returns:
the maneuver start date if a date or a DateDetector as been provided, null otherwise.

getEndDate

public AbsoluteDate getEndDate()
Return the maneuver stop date (if a date or a DateDetector as been provided).

Returns:
the maneuver stop date if a date or a DateDetector as been provided, null otherwise.

getFrame

public Frame getFrame()
Get the frame of the acceleration direction. Null if the acceleration is expressed by default in the satellite frame.

Returns:
the frame

setFiring

public void setFiring(boolean isFiring)
Set maneuver status. This method is meant to be used if the propagation starts during a maneuver. As a result thrust will be firing at the beginning of the propagation and stops when crossing stop event.

Used in conjunction with isFiring(), the user can stop/restart a propagation during a maneuver.

Parameters:
isFiring - true if propagation should start during the maneuver

isFiring

public boolean isFiring()
Returns maneuver status (firing or not).

Used in conjunction with setFiring(boolean), the user can stop/restart a propagation during a maneuver.

Returns:
true if maneuver is thrust firing.

addContribution

public void addContribution(SpacecraftState s,
                            TimeDerivativesEquations adder)
                     throws OrekitException
Compute the contribution of the force model to the perturbing acceleration.

Specified by:
addContribution in interface ForceModel
Parameters:
s - current state information: date, kinematics, attitude
adder - object where the contribution should be added
Throws:
OrekitException - if some specific error occurs

computeAcceleration

public Vector3D computeAcceleration(SpacecraftState s)
                             throws OrekitException
Compute the acceleration due to the force.

Specified by:
computeAcceleration in interface ForceModel
Parameters:
s - current state information: date, kinematics, attitude
Returns:
acceleration in the SpacecraftState frame
Throws:
OrekitException - if some specific error occurs

addDAccDState

public void addDAccDState(SpacecraftState s,
                          double[][] dAccdPos,
                          double[][] dAccdVel)
                   throws OrekitException
Compute acceleration derivatives with respect to state parameters.

Specified by:
addDAccDState in interface IJacobiansParameterizable
Parameters:
s - spacecraft state
dAccdPos - acceleration derivatives with respect to position
dAccdVel - acceleration derivatives with respect to velocity
Throws:
OrekitException - if derivatives cannot be computed

addDAccDParam

public void addDAccDParam(SpacecraftState s,
                          Parameter param,
                          double[] dAccdParam)
                   throws OrekitException
Compute acceleration derivatives with respect to additional parameters.. No jacobian parameter is supported by this force model.

Specified by:
addDAccDParam in interface IJacobiansParameterizable
Parameters:
s - spacecraft state
param - the parameter with respect to which derivatives are required
dAccdParam - acceleration derivatives with respect to specified parameters
Throws:
OrekitException - if derivatives cannot be computed

getEventsDetectors

public EventDetector[] getEventsDetectors()
Get the discrete events related to the model.

Specified by:
getEventsDetectors in interface ForceModel
Returns:
array of events detectors or null if the model is not related to any discrete events

computeGradientPosition

public boolean computeGradientPosition()
This method returns true if the acceleration partial derivatives with respect to position have to be computed.

Specified by:
computeGradientPosition in interface GradientModel
Returns:
true if the derivatives have to be computed, false otherwise

computeGradientVelocity

public boolean computeGradientVelocity()
This method returns true if the acceleration partial derivatives with respect to velocity have to be computed.

Specified by:
computeGradientVelocity in interface GradientModel
Returns:
true if the derivatives have to be computed, false otherwise


Copyright © 2016 CNES. All Rights Reserved.