public class ConstantThrustManeuver extends AbstractForceModel
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.
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 |
---|
ConstantThrustManeuver(AbsoluteDate date,
double duration,
double thrust,
double isp,
Vector3D direction)
Simple constructor for a constant direction and constant thrust.
|
ConstantThrustManeuver(AbsoluteDate date,
double duration,
double thrust,
double isp,
Vector3D direction,
String driversNamePrefix)
Simple constructor for a constant direction and constant thrust.
|
Modifier and Type | Method and Description |
---|---|
<T extends RealFieldElement<T>> |
acceleration(FieldSpacecraftState<T> s,
T[] parameters)
Compute acceleration.
|
Vector3D |
acceleration(SpacecraftState state,
double[] parameters)
Compute acceleration.
|
<T extends RealFieldElement<T>> |
addContribution(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.
|
Stream<EventDetector> |
getEventsDetectors()
Get the discrete events related to the model.
|
<T extends RealFieldElement<T>> |
getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.
|
double |
getFlowRate()
Get the flow rate.
|
double |
getISP()
Get the specific impulse.
|
ParameterDriver[] |
getParametersDrivers()
Get the drivers for force model parameters.
|
double |
getThrust()
Get the thrust.
|
void |
init(SpacecraftState s0,
AbsoluteDate t)
Initialize the force model at the start of propagation.
|
complainIfNotSupported, getParameterDriver, isSupported
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getParameters, getParameters
public static final String THRUST
public static final String FLOW_RATE
public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction)
Calling this constructor is equivalent to call ConstantThrustManeuver(date, duration, thrust, isp, direction, "")
,
hence not using any prefix for the parameters drivers names.
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.public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction, String driversNamePrefix)
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.
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 framedriversNamePrefix
- prefix for the parameters drivers
public boolean dependsOnPositionOnly()
public void init(SpacecraftState s0, AbsoluteDate t)
ForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,
ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
ForceModel.acceleration(SpacecraftState, double[])
or ForceModel.acceleration(FieldSpacecraftState, RealFieldElement[])
The default implementation of this method does nothing.
s0
- spacecraft state at the start of propagation.t
- date of propagation. Not equal to initialState.getDate()
.public double getThrust()
public double getISP()
public double getFlowRate()
public void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws OrekitException
The default implementation simply adds the acceleration
as a non-Keplerian acceleration.
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedOrekitException
- if some specific error occurspublic <T extends RealFieldElement<T>> void addContribution(FieldSpacecraftState<T> s, FieldTimeDerivativesEquations<T> adder) throws OrekitException
T
- type of the elementss
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedOrekitException
- if some specific error occurspublic Vector3D acceleration(SpacecraftState state, double[] parameters)
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameterspublic <T extends RealFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
T
- type of the elementss
- current state information: date, kinematics, attitudeparameters
- values of the force model parameterspublic Stream<EventDetector> getEventsDetectors()
public ParameterDriver[] getParametersDrivers()
public <T extends RealFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
T
- extends RealFieldElementfield
- field to which the state belongsCopyright © 2002-2017 CS Systèmes d'information. All rights reserved.