public interface ForceModel extends ParametersDriversProvider
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 |
---|---|
<T extends CalculusFieldElement<T>> |
acceleration(FieldSpacecraftState<T> s,
T[] parameters)
Compute acceleration.
|
Vector3D |
acceleration(SpacecraftState s,
double[] parameters)
Compute acceleration.
|
default <T extends CalculusFieldElement<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 CalculusFieldElement<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 CalculusFieldElement<T>> |
getParameters(Field<T> field)
Get force model parameters.
|
default <T extends CalculusFieldElement<T>> |
init(FieldSpacecraftState<T> initialState,
FieldAbsoluteDate<T> target)
Initialize the force model at the start of propagation.
|
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.
|
getParametersDrivers
default void init(SpacecraftState initialState, AbsoluteDate target)
addContribution(SpacecraftState, TimeDerivativesEquations)
,
addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
acceleration(SpacecraftState, double[])
or acceleration(FieldSpacecraftState, CalculusFieldElement[])
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()
.default <T extends CalculusFieldElement<T>> void init(FieldSpacecraftState<T> initialState, FieldAbsoluteDate<T> target)
addContribution(SpacecraftState, TimeDerivativesEquations)
,
addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
acceleration(SpacecraftState, double[])
or acceleration(FieldSpacecraftState, CalculusFieldElement[])
The default implementation of this method does nothing.
T
- type of the elementsinitialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal to initialState.getDate()
.default 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 addeddefault <T extends CalculusFieldElement<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 addeddefault double[] getParameters()
default <T extends CalculusFieldElement<T>> T[] getParameters(Field<T> field)
T
- type of the elementsfield
- field to which the elements belongboolean dependsOnPositionOnly()
Vector3D acceleration(SpacecraftState s, double[] parameters)
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters<T extends CalculusFieldElement<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 parametersStream<EventDetector> getEventsDetectors()
<T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
T
- extends CalculusFieldElement<T>field
- field to which the state belongsParameterDriver getParameterDriver(String name)
name
- parameter nameboolean isSupported(String name)
Supported parameters are those listed by ParametersDriversProvider.getParametersDrivers()
.
name
- parameter name to checkParametersDriversProvider.getParametersDrivers()
Copyright © 2002-2023 CS GROUP. All rights reserved.