public class ParametricAcceleration extends Object implements ForceModel
Parametric accelerations are intended to model lesser-known forces, estimating a few defining parameters from a parametric function using orbit determination. Typical parametric functions are polynomial (often limited to a constant term) and harmonic (often with either orbital period or half orbital period).
An important operational example is the infamous GPS Y-bias, which is thought to be related to a radiator thermal radiation. Other examples could be to model leaks that produce roughly constant trust in some spacecraft-related direction.
The acceleration direction is considered constant in either:
If the direction of the acceleration is unknown, then three instances of this class should be used, one along the X axis, one along the Y axis and one along the Z axis and their parameters estimated as usual.
DATATION_ACCURACY
Constructor and Description |
---|
ParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction,
AttitudeProvider attitudeOverride,
AccelerationModel accelerationModel)
Simple constructor.
|
ParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction,
boolean isInertial,
AccelerationModel accelerationModel)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
<T extends org.hipparchus.CalculusFieldElement<T>> |
acceleration(FieldSpacecraftState<T> state,
T[] parameters)
Compute acceleration.
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
acceleration(SpacecraftState state,
double[] parameters)
Compute acceleration.
|
boolean |
dependsOnPositionOnly()
Check if force models depends on position only.
|
Stream<EventDetector> |
getEventDetectors()
Get the discrete events related to the model.
|
<T extends org.hipparchus.CalculusFieldElement<T>> |
getFieldEventDetectors(org.hipparchus.Field<T> field)
Get the discrete events related to the model.
|
List<ParameterDriver> |
getParametersDrivers()
Get the drivers for parameters.
|
void |
init(SpacecraftState initialState,
AbsoluteDate target)
Initialize the force model at the start of propagation.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addContribution, addContribution, init
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
getEventDetectors, getFieldEventDetectors
public ParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, boolean isInertial, AccelerationModel accelerationModel)
direction
- acceleration direction in overridden spacecraft frameisInertial
- if true, direction is defined in the same inertial
frame used for propagation (i.e. SpacecraftState.getFrame()
),
otherwise direction is defined in spacecraft frame (i.e. using the
propagation attitude law
)accelerationModel
- acceleration model used to compute the contribution of the empirical acceleration
directionpublic ParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, AttitudeProvider attitudeOverride, AccelerationModel accelerationModel)
direction
- acceleration direction in overridden spacecraft frame
frame used for propagation (i.e. SpacecraftState.getFrame()
),
otherwise direction is defined in spacecraft frame (i.e. using the
propagation attitude law
)attitudeOverride
- provider for attitude used to compute accelerationaccelerationModel
- acceleration model used to compute the contribution of the empirical acceleration
directionpublic boolean dependsOnPositionOnly()
dependsOnPositionOnly
in interface ForceModel
public List<ParameterDriver> getParametersDrivers()
getParametersDrivers
in interface ParameterDriversProvider
public void init(SpacecraftState initialState, AbsoluteDate target)
ForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,
ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
ForceModel.acceleration(SpacecraftState, double[])
or ForceModel.acceleration(FieldSpacecraftState, CalculusFieldElement[])
The default implementation of this method does nothing.
init
in interface ForceModel
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal to initialState.getDate()
.public org.hipparchus.geometry.euclidean.threed.Vector3D acceleration(SpacecraftState state, double[] parameters)
acceleration
in interface ForceModel
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date,
only 1 value for each parameterDriverpublic <T extends org.hipparchus.CalculusFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration(FieldSpacecraftState<T> state, T[] parameters)
acceleration
in interface ForceModel
T
- type of the elementsstate
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date,
only 1 value for each parameterDriverpublic 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 ForceModel
getEventDetectors
in interface EventDetectorsProvider
public <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 ForceModel
getFieldEventDetectors
in interface EventDetectorsProvider
T
- extends CalculusFieldElement<T>field
- field to which the state belongsCopyright © 2002-2023 CS GROUP. All rights reserved.