public interface ForceModel extends ParameterizedODE
Objects implementing this interface are intended to be added to a
numerical propagator
before the propagation is started.
The propagator will call at each step the addContribution(SpacecraftState,
TimeDerivativesEquations)
method. The force model instance will extract all the
state data it needs (date,position, velocity, frame, attitude, mass) from the first
parameter. From these state data, it will compute the perturbing acceleration. It
will then add this acceleration to the second parameter which will take thins
contribution into account and will use the Gauss equations to evaluate its impact
on the global state derivative.
Force models which create discontinuous acceleration patterns (typically for maneuvers
start/stop or solar eclipses entry/exit) must provide one or more events detectors
to the
propagator thanks to their getEventsDetectors()
method. This method
is called once just before propagation starts. The events states will be checked by
the propagator to ensure accurate propagation and proper events handling.
Modifier and Type | Method and Description |
---|---|
FieldVector3D<DerivativeStructure> |
accelerationDerivatives(AbsoluteDate date,
Frame frame,
FieldVector3D<DerivativeStructure> position,
FieldVector3D<DerivativeStructure> velocity,
FieldRotation<DerivativeStructure> rotation,
DerivativeStructure mass)
Compute acceleration derivatives with respect to state parameters.
|
FieldVector3D<DerivativeStructure> |
accelerationDerivatives(SpacecraftState s,
String paramName)
Compute acceleration derivatives with respect to additional parameters.
|
void |
addContribution(SpacecraftState s,
TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing
acceleration.
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
getParameter, setParameter
getParametersNames, isSupported
void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws OrekitException
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedOrekitException
- if some specific error occursFieldVector3D<DerivativeStructure> accelerationDerivatives(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position, FieldVector3D<DerivativeStructure> velocity, FieldRotation<DerivativeStructure> rotation, DerivativeStructure mass) throws OrekitException
The derivatives should be computed with respect to position, velocity and optionnaly mass. The input parameters already take into account the free parameters (6 or 7 depending on derivation with respect to mass being considered or not) and order (always 1). Free parameters at indices 0, 1 and 2 correspond to derivatives with respect to position. Free parameters at indices 3, 4 and 5 correspond to derivatives with respect to velocity. Free parameter at index 6 (if present) corresponds to to derivatives with respect to mass.
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framevelocity
- velocity of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- spacecraft massOrekitException
- if derivatives cannot be computedFieldVector3D<DerivativeStructure> accelerationDerivatives(SpacecraftState s, String paramName) throws OrekitException
s
- spacecraft stateparamName
- name of the parameter with respect to which derivatives are requiredOrekitException
- if derivatives cannot be computedEventDetector[] getEventsDetectors()
Copyright © 2002-2015 CS Systèmes d'information. All rights reserved.