public interface ForceModel extends ParameterDriversProvider, EventDetectorsProvider
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 getEventDetectors()
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.
DATATION_ACCURACY
Modifier and Type | Method and Description |
---|---|
<T extends org.hipparchus.CalculusFieldElement<T>> |
acceleration(FieldSpacecraftState<T> s,
T[] parameters)
Compute acceleration.
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
acceleration(SpacecraftState s,
double[] parameters)
Compute acceleration.
|
default <T extends org.hipparchus.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.
|
default Stream<EventDetector> |
getEventDetectors()
Get the discrete events related to the model.
|
default <T extends org.hipparchus.CalculusFieldElement<T>> |
getFieldEventDetectors(org.hipparchus.Field<T> field)
Get the discrete events related to the model.
|
default <T extends org.hipparchus.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.
|
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, getParametersDrivers, isSupported
getEventDetectors, getFieldEventDetectors
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 org.hipparchus.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 Stream<EventDetector> getEventDetectors()
This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
getEventDetectors
in interface EventDetectorsProvider
default <T extends org.hipparchus.CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors(org.hipparchus.Field<T> field)
This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.
getFieldEventDetectors
in interface EventDetectorsProvider
T
- extends CalculusFieldElement<T>field
- field to which the state belongsdefault 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 org.hipparchus.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 addedboolean dependsOnPositionOnly()
org.hipparchus.geometry.euclidean.threed.Vector3D acceleration(SpacecraftState s, double[] parameters)
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date,
only 1 value for each parameterDriver<T extends org.hipparchus.CalculusFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
T
- type of the elementss
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date,
only 1 value for each parameterDriverCopyright © 2002-2023 CS GROUP. All rights reserved.