Class AbstractParametricAcceleration
- java.lang.Object
-
- org.orekit.forces.AbstractForceModel
-
- org.orekit.forces.AbstractParametricAcceleration
-
- All Implemented Interfaces:
ForceModel
- Direct Known Subclasses:
HarmonicParametricAcceleration
,PolynomialParametricAcceleration
public abstract class AbstractParametricAcceleration extends AbstractForceModel
This class implements a parametric acceleration.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:
- inertial frame
- spacecraft frame
- a dedicated attitude frame overriding spacecraft attitude (this could for example be used to model solar arrays orientation if the force is related to solar arrays)
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.
- Since:
- 9.0
- Author:
- Luc Maisonobe
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, boolean isInertial, AttitudeProvider attitudeOverride)
Simple constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description <T extends org.hipparchus.RealFieldElement<T>>
org.hipparchus.geometry.euclidean.threed.FieldVector3D<T>acceleration(FieldSpacecraftState<T> state, T[] parameters)
Compute acceleration.org.hipparchus.geometry.euclidean.threed.Vector3D
acceleration(SpacecraftState state, double[] parameters)
Compute acceleration.Stream<EventDetector>
getEventsDetectors()
Get the discrete events related to the model.<T extends org.hipparchus.RealFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventsDetectors(org.hipparchus.Field<T> field)
Get the discrete events related to the model.protected boolean
isInertial()
Check if direction is inertial.protected abstract <T extends org.hipparchus.RealFieldElement<T>>
TsignedAmplitude(FieldSpacecraftState<T> state, T[] parameters)
Compute the signed amplitude of the acceleration.protected abstract double
signedAmplitude(SpacecraftState state, double[] parameters)
Compute the signed amplitude of the acceleration.-
Methods inherited from class org.orekit.forces.AbstractForceModel
complainIfNotSupported, getParameterDriver, isSupported
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.forces.ForceModel
addContribution, addContribution, dependsOnPositionOnly, getParameters, getParameters, getParametersDrivers, init
-
-
-
-
Constructor Detail
-
AbstractParametricAcceleration
protected AbstractParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, boolean isInertial, AttitudeProvider attitudeOverride)
Simple constructor.- Parameters:
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 propagationattitude law
)attitudeOverride
- provider for attitude used to compute acceleration direction
-
-
Method Detail
-
isInertial
protected boolean isInertial()
Check if direction is inertial.- Returns:
- true if direction is inertial
-
signedAmplitude
protected abstract double signedAmplitude(SpacecraftState state, double[] parameters)
Compute the signed amplitude of the acceleration.The acceleration is the direction multiplied by the signed amplitude. So if signed amplitude is negative, the acceleratin is towards the opposite of the direction specified at construction.
- Parameters:
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- norm of the acceleration
-
signedAmplitude
protected abstract <T extends org.hipparchus.RealFieldElement<T>> T signedAmplitude(FieldSpacecraftState<T> state, T[] parameters)
Compute the signed amplitude of the acceleration.The acceleration is the direction multiplied by the signed amplitude. So if signed amplitude is negative, the acceleratin is towards the opposite of the direction specified at construction.
- Type Parameters:
T
- type of the elements- Parameters:
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- norm of the acceleration
-
acceleration
public org.hipparchus.geometry.euclidean.threed.Vector3D acceleration(SpacecraftState state, double[] parameters)
Compute acceleration.- Parameters:
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- acceleration in same frame as state
-
acceleration
public <T extends org.hipparchus.RealFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> acceleration(FieldSpacecraftState<T> state, T[] parameters)
Compute acceleration.- Type Parameters:
T
- type of the elements- Parameters:
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- acceleration in same frame as state
-
getEventsDetectors
public Stream<EventDetector> getEventsDetectors()
Get the discrete events related to the model.- Returns:
- stream of events detectors
-
getFieldEventsDetectors
public <T extends org.hipparchus.RealFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(org.hipparchus.Field<T> field)
Get the discrete events related to the model.- Type Parameters:
T
- extends RealFieldElement- Parameters:
field
- field to which the state belongs- Returns:
- stream of events detectors
-
-