public class ContinuousThrustManeuver extends JacobiansParameterizable implements ForceModel, GradientModel, Maneuver
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 inDirection in satellite frame
into inertial frame when inDirection 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 if they have been defined as constant (partial derivatives are not available if parameters are not constant).
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.
Warning: if variable ISP and thrust are used (using PropulsiveProperty
), ISP and thrust
parameters cannot be used (set as NaN) and partial derivatives cannot be computed.
Modifier and Type | Field and Description |
---|---|
static String |
FLOW_RATE
Parameter name for flow rate.
|
static String |
THRUST
Parameter name for thrust.
|
Constructor and Description |
---|
ContinuousThrustManeuver(AbsoluteDate date,
double duration,
PropulsiveProperty engine,
IDependentVectorVariable<SpacecraftState> inDirection,
MassProvider massProvider,
TankProperty tank)
Constructor for a variable direction in satellite frame.
|
ContinuousThrustManeuver(AbsoluteDate date,
double duration,
PropulsiveProperty engine,
IDependentVectorVariable<SpacecraftState> inDirection,
MassProvider massProvider,
TankProperty tank,
Frame frameIn)
Constructor for a variable direction in provided frame.
|
ContinuousThrustManeuver(AbsoluteDate date,
double duration,
PropulsiveProperty engine,
IDependentVectorVariable<SpacecraftState> inDirection,
MassProvider massProvider,
TankProperty tank,
LOFType lofTyp)
Constructor for a variable direction in provided local orbital frame.
|
ContinuousThrustManeuver(AbsoluteDate date,
double duration,
PropulsiveProperty engine,
Vector3D inDirection,
MassProvider massProvider,
TankProperty tank)
Constructor for a constant direction in satellite frame.
|
ContinuousThrustManeuver(AbsoluteDate date,
double duration,
PropulsiveProperty engine,
Vector3D inDirection,
MassProvider massProvider,
TankProperty tank,
Frame frameIn)
Constructor for a constant direction in provided frame.
|
ContinuousThrustManeuver(AbsoluteDate date,
double duration,
PropulsiveProperty engine,
Vector3D inDirection,
MassProvider massProvider,
TankProperty tank,
LOFType lofTyp)
Constructor for a constant direction in provided local orbital frame.
|
ContinuousThrustManeuver(EventDetector startEventDetector,
EventDetector stopEventDetector,
PropulsiveProperty engine,
IDependentVectorVariable<SpacecraftState> inDirection,
MassProvider massProvider,
TankProperty tank)
Constructor for a variable direction in satellite frame.
|
ContinuousThrustManeuver(EventDetector startEventDetector,
EventDetector stopEventDetector,
PropulsiveProperty engine,
IDependentVectorVariable<SpacecraftState> inDirection,
MassProvider massProvider,
TankProperty tank,
Frame frameIn)
Constructor for a variable direction in provided frame.
|
ContinuousThrustManeuver(EventDetector startEventDetector,
EventDetector stopEventDetector,
PropulsiveProperty engine,
IDependentVectorVariable<SpacecraftState> inDirection,
MassProvider massProvider,
TankProperty tank,
LOFType lofTyp)
Constructor for a variable direction in local orbital frame.
|
ContinuousThrustManeuver(EventDetector startEventDetector,
EventDetector stopEventDetector,
PropulsiveProperty engine,
Vector3D inDirection,
MassProvider massProvider,
TankProperty tank)
Constructor for a constant direction in satellite frame.
|
ContinuousThrustManeuver(EventDetector startEventDetector,
EventDetector stopEventDetector,
PropulsiveProperty engine,
Vector3D inDirection,
MassProvider massProvider,
TankProperty tank,
Frame frameIn)
Constructor for a constant direction in provided frame.
|
ContinuousThrustManeuver(EventDetector startEventDetector,
EventDetector stopEventDetector,
PropulsiveProperty engine,
Vector3D inDirection,
MassProvider massProvider,
TankProperty tank,
LOFType lofTyp)
Constructor for a constant direction in local orbital frame.
|
Modifier and Type | Method and Description |
---|---|
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.
|
Vector3D |
getDirection(SpacecraftState s)
Get the thrust direction.
|
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.
|
double |
getFlowRate(SpacecraftState s)
Get the flow rate.
|
Frame |
getFrame()
Get the frame of the acceleration inDirection.
|
double |
getISP()
Get the specific impulse.
|
double |
getISP(SpacecraftState s)
Get the specific impulse.
|
LOFType |
getLofType() |
MassProvider |
getMassModel() |
PropulsiveProperty |
getPropulsiveProperty()
Get the propulsive property.
|
AbsoluteDate |
getStartDate()
Return the maneuver start date (if a date or a
DateDetector as been provided). |
TankProperty |
getTankProperty()
Get the tank property.
|
double |
getThrust(SpacecraftState s)
Get the thrust.
|
boolean |
isFiring()
Returns maneuver status (firing or not).
|
void |
setFiring(boolean isFiring)
Set maneuver status.
|
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
addParameter, getParameters, supportsParameter
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getParameters, supportsParameter
public static final String THRUST
public static final String FLOW_RATE
public ContinuousThrustManeuver(AbsoluteDate date, double duration, PropulsiveProperty engine, Vector3D inDirection, MassProvider massProvider, TankProperty tank)
date
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the
stop date)engine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the constant thrust direction in satellite framemassProvider
- the mass providertank
- tank property gathering mass and part name informationpublic ContinuousThrustManeuver(AbsoluteDate date, double duration, PropulsiveProperty engine, IDependentVectorVariable<SpacecraftState> inDirection, MassProvider massProvider, TankProperty tank)
date
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the
stop date)engine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the variable thrust direction in satellite framemassProvider
- the mass providertank
- tank property gathering mass and part name informationpublic ContinuousThrustManeuver(AbsoluteDate date, double duration, PropulsiveProperty engine, Vector3D inDirection, MassProvider massProvider, TankProperty tank, Frame frameIn)
date
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the
stop date)engine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the constant thrust direction in provided framemassProvider
- the mass providertank
- tank property gathering mass and part name informationframeIn
- the frame of the acceleration direction.public ContinuousThrustManeuver(AbsoluteDate date, double duration, PropulsiveProperty engine, IDependentVectorVariable<SpacecraftState> inDirection, MassProvider massProvider, TankProperty tank, Frame frameIn)
date
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the
stop date)engine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the variable thrust direction in provided framemassProvider
- the mass providertank
- tank property gathering mass and part name informationframeIn
- the frame of the acceleration direction.public ContinuousThrustManeuver(AbsoluteDate date, double duration, PropulsiveProperty engine, Vector3D inDirection, MassProvider massProvider, TankProperty tank, LOFType lofTyp)
date
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the
stop date)engine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the constant thrust direction in LOFmassProvider
- the mass providertank
- tank property gathering mass and part name informationlofTyp
- the LOF type of the acceleration inDirectionpublic ContinuousThrustManeuver(AbsoluteDate date, double duration, PropulsiveProperty engine, IDependentVectorVariable<SpacecraftState> inDirection, MassProvider massProvider, TankProperty tank, LOFType lofTyp)
date
- maneuver dateduration
- the duration of the thrust (s) (if negative, the date is considered to be the
stop date)engine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the variable thrust direction in LOFmassProvider
- the mass providertank
- tank property gathering mass and part name informationlofTyp
- the LOF type of the acceleration inDirectionpublic ContinuousThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, PropulsiveProperty engine, Vector3D inDirection, MassProvider massProvider, TankProperty tank) throws PatriusException
startEventDetector
- event detector upon which maneuver should startsstopEventDetector
- event detector upon which maneuver should stopsengine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the constant thrust direction in satellite framemassProvider
- the mass providertank
- tank property gathering mass and part name informationPatriusException
- if mass from mass provider is negativepublic ContinuousThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, PropulsiveProperty engine, IDependentVectorVariable<SpacecraftState> inDirection, MassProvider massProvider, TankProperty tank) throws PatriusException
startEventDetector
- event detector upon which maneuver should startsstopEventDetector
- event detector upon which maneuver should stopsengine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the variable thrust direction in satellite framemassProvider
- the mass providertank
- tank property gathering mass and part name informationPatriusException
- if mass from mass provider is negativepublic ContinuousThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, PropulsiveProperty engine, Vector3D inDirection, MassProvider massProvider, TankProperty tank, Frame frameIn) throws PatriusException
startEventDetector
- event detector upon which maneuver should startsstopEventDetector
- event detector upon which maneuver should stopsengine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the constant thrust direction in provided framemassProvider
- the mass providertank
- tank property gathering mass and part name informationframeIn
- the frame of the acceleration inDirectionPatriusException
- if mass from mass provider is negativepublic ContinuousThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, PropulsiveProperty engine, IDependentVectorVariable<SpacecraftState> inDirection, MassProvider massProvider, TankProperty tank, Frame frameIn) throws PatriusException
startEventDetector
- event detector upon which maneuver should startsstopEventDetector
- event detector upon which maneuver should stopsengine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the variable thrust direction in provided framemassProvider
- the mass providertank
- tank property gathering mass and part name informationframeIn
- the frame of the acceleration inDirectionPatriusException
- if mass from mass provider is negativepublic ContinuousThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, PropulsiveProperty engine, Vector3D inDirection, MassProvider massProvider, TankProperty tank, LOFType lofTyp) throws PatriusException
startEventDetector
- event detector upon which maneuver should startsstopEventDetector
- event detector upon which maneuver should stopsengine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the constant thrust direction in LOFmassProvider
- the mass providertank
- tank property gathering mass and part name informationlofTyp
- the LOF type of the acceleration directionPatriusException
- if mass from mass provider is negativepublic ContinuousThrustManeuver(EventDetector startEventDetector, EventDetector stopEventDetector, PropulsiveProperty engine, IDependentVectorVariable<SpacecraftState> inDirection, MassProvider massProvider, TankProperty tank, LOFType lofTyp) throws PatriusException
startEventDetector
- event detector upon which maneuver should startsstopEventDetector
- event detector upon which maneuver should stopsengine
- engine property gathering thrust force (N) and isp (s) informationinDirection
- the variable thrust direction in LOFmassProvider
- the mass providertank
- tank property gathering mass and part name informationlofTyp
- the LOF type of the acceleration directionPatriusException
- if mass from mass provider is negativepublic double getThrust(SpacecraftState s)
s
- the current state information: date, kinematics, attitude.
Unused in case of constant maneuver.public Vector3D getDirection(SpacecraftState s)
s
- the current state information: date, kinematics, attitude.
Unused in case of constant maneuver.public double getISP(SpacecraftState s)
s
- the current state information: date, kinematics, attitude.
Unused in case of constant maneuver.public double getFlowRate(SpacecraftState s)
s
- the current state information: date, kinematics, attitudepublic double getISP()
Warning: if a variable ISP has been used, NaN will be returned.
public TankProperty getTankProperty()
public PropulsiveProperty getPropulsiveProperty()
public AbsoluteDate getStartDate()
DateDetector
as been provided).DateDetector
as been provided, null
otherwise.public AbsoluteDate getEndDate()
DateDetector
as been provided).DateDetector
as been provided, null
otherwise.public Frame getFrame()
public void setFiring(boolean isFiring)
Used in conjunction with isFiring()
, the user can stop/restart a propagation during
a maneuver.
isFiring
- true if propagation should start during the maneuverpublic boolean isFiring()
Used in conjunction with setFiring(boolean)
, the user can stop/restart a propagation
during a maneuver.
public LOFType getLofType()
public MassProvider getMassModel()
public void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws PatriusException
addContribution
in interface ForceModel
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedPatriusException
- if some specific error occurspublic Vector3D computeAcceleration(SpacecraftState s) throws PatriusException
computeAcceleration
in interface ForceModel
s
- current state information: date, kinematics, attitudeSpacecraftState frame
PatriusException
- if some specific error occurspublic void addDAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel) throws PatriusException
addDAccDState
in interface IJacobiansParameterizable
s
- spacecraft statedAccdPos
- acceleration derivatives with respect to positiondAccdVel
- acceleration derivatives with respect to velocityPatriusException
- if derivatives cannot be computedpublic void addDAccDParam(SpacecraftState s, Parameter param, double[] dAccdParam) throws PatriusException
PropulsiveProperty
has been defined with thrust and isp as constants/parameters.addDAccDParam
in interface IJacobiansParameterizable
s
- spacecraft stateparam
- the parameter with respect to which derivatives are requireddAccdParam
- acceleration derivatives with respect to specified parametersPatriusException
- if derivatives cannot be computedpublic EventDetector[] getEventsDetectors()
getEventsDetectors
in interface ForceModel
public boolean computeGradientPosition()
computeGradientPosition
in interface GradientModel
public boolean computeGradientVelocity()
computeGradientVelocity
in interface GradientModel
Copyright © 2019 CNES. All Rights Reserved.