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, waitaddContribution, addContribution, initgetNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupportedgetEventDetectors, getFieldEventDetectorspublic 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 ForceModelpublic List<ParameterDriver> getParametersDrivers()
getParametersDrivers in interface ParameterDriversProviderpublic 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 ForceModelinitialState - 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 ForceModelstate - 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 ForceModelT - 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 ForceModelgetEventDetectors in interface EventDetectorsProviderpublic <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 ForceModelgetFieldEventDetectors in interface EventDetectorsProviderT - extends CalculusFieldElement<T>field - field to which the state belongsCopyright © 2002-2023 CS GROUP. All rights reserved.