AbstractForceModel
, AbstractParametricAcceleration
, ConstantThrustManeuver
, DragForce
, HarmonicParametricAcceleration
, HolmesFeatherstoneAttractionModel
, NewtonianAttraction
, OceanTides
, PolynomialParametricAcceleration
, Relativity
, SolarRadiationPressure
, SolidTides
, ThirdBodyAttraction
public interface ForceModel
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 | Description |
---|---|---|
<T extends RealFieldElement<T>> |
acceleration(FieldSpacecraftState<T> s,
T[] parameters) |
Compute acceleration.
|
Vector3D |
acceleration(SpacecraftState s,
double[] parameters) |
Compute acceleration.
|
default <T extends RealFieldElement<T>> |
addContribution(FieldSpacecraftState<T> s,
FieldTimeDerivativesEquations<T> adder) |
Compute the contribution of the force model to the perturbing
acceleration.
|
default 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.
|
ParameterDriver |
getParameterDriver(String name) |
Get parameter value from its name.
|
default double[] |
getParameters() |
Get force model parameters.
|
default <T extends RealFieldElement<T>> |
getParameters(Field<T> field) |
Get force model parameters.
|
ParameterDriver[] |
getParametersDrivers() |
Get the drivers for force model parameters.
|
default void |
init(SpacecraftState initialState,
AbsoluteDate target) |
Initialize the force model at the start of propagation.
|
boolean |
isSupported(String name) |
Check if a parameter is supported.
|
default void init(SpacecraftState initialState, AbsoluteDate target) throws OrekitException
addContribution(SpacecraftState, TimeDerivativesEquations)
,
addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
acceleration(SpacecraftState, double[])
or acceleration(FieldSpacecraftState, RealFieldElement[])
The default implementation of this method does nothing.
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal to initialState.getDate()
.OrekitException
- if an implementing class overrides the default behavior and
takes some action that throws an OrekitException
.default 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 occursdefault <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 occursdefault double[] getParameters()
default <T extends RealFieldElement<T>> T[] getParameters(Field<T> field)
T
- type of the elementsfield
- field to which the elements belongboolean dependsOnPositionOnly()
Vector3D acceleration(SpacecraftState s, double[] parameters) throws OrekitException
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parametersOrekitException
- if some specific error occurs<T extends RealFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters) throws OrekitException
T
- type of the elementss
- current state information: date, kinematics, attitudeparameters
- values of the force model parametersOrekitException
- if some specific error occursStream<EventDetector> getEventsDetectors()
<T extends RealFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
T
- extends RealFieldElementfield
- field to which the state belongsParameterDriver[] getParametersDrivers()
ParameterDriver getParameterDriver(String name) throws OrekitException
name
- parameter nameOrekitException
- if parameter is not supportedboolean isSupported(String name)
Supported parameters are those listed by getParametersDrivers()
.
name
- parameter name to checkgetParametersDrivers()
Copyright © 2002-2018 CS Systèmes d'information. All rights reserved.