Class ParametricAcceleration
- java.lang.Object
-
- org.orekit.forces.AbstractForceModel
-
- org.orekit.forces.empirical.ParametricAcceleration
-
- All Implemented Interfaces:
ForceModel
,ParametersDriversProvider
public class ParametricAcceleration 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:
- 10.3
- Author:
- Luc Maisonobe, Bryan Cazabonne
-
-
Constructor Summary
Constructors Constructor Description ParametricAcceleration(Vector3D direction, boolean isInertial, AccelerationModel accelerationModel)
Simple constructor.ParametricAcceleration(Vector3D direction, AttitudeProvider attitudeOverride, AccelerationModel accelerationModel)
Simple constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends CalculusFieldElement<T>>
FieldVector3D<T>acceleration(FieldSpacecraftState<T> state, T[] parameters)
Compute acceleration.Vector3D
acceleration(SpacecraftState state, double[] parameters)
Compute 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>>
Stream<FieldEventDetector<T>>getFieldEventsDetectors(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.-
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, getParameters, getParameters, init
-
-
-
-
Constructor Detail
-
ParametricAcceleration
public ParametricAcceleration(Vector3D direction, boolean isInertial, AccelerationModel accelerationModel)
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
)accelerationModel
- acceleration model used to compute the contribution of the empirical acceleration direction
-
ParametricAcceleration
public ParametricAcceleration(Vector3D direction, AttitudeProvider attitudeOverride, AccelerationModel accelerationModel)
Simple constructor.- Parameters:
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 propagationattitude law
)attitudeOverride
- provider for attitude used to compute accelerationaccelerationModel
- acceleration model used to compute the contribution of the empirical acceleration direction
-
-
Method Detail
-
dependsOnPositionOnly
public boolean dependsOnPositionOnly()
Check if force models depends on position only.- Returns:
- true if force model depends on position only, false if it depends on velocity, either directly or due to a dependency on attitude
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Returns:
- drivers for parameters
-
init
public void init(SpacecraftState initialState, AbsoluteDate target)
Initialize the force model at the start of propagation. This method will be called before any calls toForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,ForceModel.acceleration(SpacecraftState, double[])
orForceModel.acceleration(FieldSpacecraftState, CalculusFieldElement[])
The default implementation of this method does nothing.
- Parameters:
initialState
- spacecraft state at the start of propagation.target
- date of propagation. Not equal toinitialState.getDate()
.
-
acceleration
public 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 CalculusFieldElement<T>> 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 CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
field
- field to which the state belongs- Returns:
- stream of events detectors
-
-