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,
AttitudeProvider attitudeOverride,
Vector3D direction)
Simple constructor for a constant direction and constant thrust.
|
ConstantThrustManeuver(AbsoluteDate date,
double duration,
double thrust,
double isp,
AttitudeProvider attitudeOverride,
Vector3D direction,
String name)
Simple constructor for a constant direction and constant thrust.
|
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 name)
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.
|
AttitudeProvider |
getAttitudeOverride()
Get the attitude override used for the maneuver.
|
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 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.
|
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.
|
boolean |
isFiring(AbsoluteDate date)
Check if maneuvering is on.
|
<T extends RealFieldElement<T>> |
isFiring(FieldSpacecraftState<T> s)
Check if maneuvering is on.
|
boolean |
isFiring(SpacecraftState s)
Check if maneuvering is on.
|
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, AttitudeProvider attitudeOverride, 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)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.public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, Vector3D direction, String name)
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 framename
- name of the maneuver, used as a prefix for the parameters drivers
public ConstantThrustManeuver(AbsoluteDate date, double duration, double thrust, double isp, AttitudeProvider attitudeOverride, Vector3D direction, String name)
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)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 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 Vector3D getDirection()
public String getName()
public AbsoluteDate getStartDate()
public AbsoluteDate getEndDate()
public double getDuration()
public AttitudeProvider getAttitudeOverride()
public void addContribution(SpacecraftState s, TimeDerivativesEquations adder)
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 addedpublic <T extends RealFieldElement<T>> void addContribution(FieldSpacecraftState<T> s, FieldTimeDerivativesEquations<T> adder)
T
- type of the elementss
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedpublic 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 RealFieldElement<T>field
- field to which the state belongspublic boolean isFiring(SpacecraftState s)
s
- current statepublic <T extends RealFieldElement<T>> boolean isFiring(FieldSpacecraftState<T> s)
T
- type of the field elementss
- current statepublic boolean isFiring(AbsoluteDate date)
date
- current dateCopyright © 2002-2020 CS Group. All rights reserved.