|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.orekit.forces.maneuvers.ImpulseManeuver
public class ImpulseManeuver
Impulse maneuver model.
This class implements an impulse maneuver as a discrete event
that can be provided to any Propagator.
The maneuver is triggered when an 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).
In the simple cases, the underlying event detector may be a basic
date event, but it
can also be a more elaborate apside event for apogee
maneuvers for example.
The maneuver is defined by a single velocity increment in satellite
frame. The current attitude of the spacecraft, defined by the current
spacecraft state, will be used to compute the velocity direction in
inertial frame. A typical case for tangential maneuvers is to use a
LOF aligned attitude law for state propagation and a
velocity increment along the +X satellite axis.
Beware that the triggering event detector must behave properly both before and after maneuver. If for example a node detector is used to trigger an inclination maneuver and the maneuver change the orbit to an equatorial one, the node detector will fail just after the maneuver, being unable to find a node on an equatorial orbit! This is a real case that has been encountered during validation ...
Propagator.addEventDetector(EventDetector),
Serialized Form| Field Summary |
|---|
| Fields inherited from interface org.orekit.propagation.events.EventDetector |
|---|
CONTINUE, RESET_DERIVATIVES, RESET_STATE, STOP |
| Constructor Summary | |
|---|---|
ImpulseManeuver(EventDetector trigger,
org.apache.commons.math.geometry.Vector3D deltaVSat,
double isp)
Build a new instance. |
|
| Method Summary | |
|---|---|
int |
eventOccurred(SpacecraftState s,
boolean increasing)
Handle an event and choose what to do next. |
double |
g(SpacecraftState s)
Compute the value of the switching function. |
double |
getMaxCheckInterval()
Get maximal time interval between switching function checks. |
int |
getMaxIterationCount()
Get maximal number of iterations in the event time search. |
double |
getThreshold()
Get the convergence threshold in the event time search. |
SpacecraftState |
resetState(SpacecraftState oldState)
Reset the state prior to continue propagation. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public ImpulseManeuver(EventDetector trigger,
org.apache.commons.math.geometry.Vector3D deltaVSat,
double isp)
trigger - triggering eventdeltaVSat - velocity increment in satellite frameisp - engine specific impulse (s)| Method Detail |
|---|
public double getMaxCheckInterval()
getMaxCheckInterval in interface EventDetectorpublic int getMaxIterationCount()
getMaxIterationCount in interface EventDetectorpublic double getThreshold()
getThreshold in interface EventDetector
public int eventOccurred(SpacecraftState s,
boolean increasing)
throws OrekitException
The scheduling between this method and the OrekitStepHandler method handleStep(interpolator, isLast) is to call this method first and
handleStep afterwards. This scheduling allows the propagator to
pass true as the isLast parameter to the step
handler to make it aware the step will be the last one if this method
returns EventDetector.STOP. As the interpolator may be used to navigate back
throughout the last step (as OrekitStepNormalizer
does for example), user code called by this method and user
code called by step handlers may experience apparently out of order values
of the independent time variable. As an example, if the same user object
implements both this EventDetector interface and the
OrekitFixedStepHandler
interface, a forward integration may call its
eventOccurred method with a state at 2000-01-01T00:00:10 first
and call its handleStep method with a state at 2000-01-01T00:00:09
afterwards. Such out of order calls are limited to the size of the
integration step for variable step handlers and
to the size of the fixed step for fixed step handlers.
eventOccurred in interface EventDetectors - the current state information : date, kinematics, attitudeincreasing - if true, the value of the switching function increases
when times increases around event (note that increase is measured with respect
to physical time, not with respect to propagation which may go backward in time)
EventDetector.STOP, EventDetector.RESET_STATE, EventDetector.RESET_DERIVATIVES
or EventDetector.CONTINUE
OrekitException - if some specific error occurs
public double g(SpacecraftState s)
throws OrekitException
g in interface EventDetectors - the current state information: date, kinematics, attitude
OrekitException - if some specific error occurs
public SpacecraftState resetState(SpacecraftState oldState)
throws OrekitException
This method is called after the step handler has returned and
before the next step is started, but only when EventDetector.eventOccurred(org.orekit.propagation.SpacecraftState, boolean) has itself returned the EventDetector.RESET_STATE
indicator. It allows the user to reset the state for the next step,
without perturbing the step handler of the finishing step. If the
EventDetector.eventOccurred(org.orekit.propagation.SpacecraftState, boolean) never returns the EventDetector.RESET_STATE indicator,
this function will never be called, and it is safe to simply return null.
resetState in interface EventDetectoroldState - old state
OrekitException - if the state cannot be reseted
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||