ForceModel
public class PolynomialParametricAcceleration extends AbstractParametricAcceleration
parametric acceleration
with polynomial signed amplitude.Constructor | Description |
---|---|
PolynomialParametricAcceleration(Vector3D direction,
boolean isInertial,
String prefix,
AbsoluteDate referenceDate,
int degree) |
Simple constructor.
|
PolynomialParametricAcceleration(Vector3D direction,
AttitudeProvider attitudeOverride,
String prefix,
AbsoluteDate referenceDate,
int degree) |
Simple constructor.
|
Modifier and Type | Method | Description |
---|---|---|
boolean |
dependsOnPositionOnly() |
Check if force models depends on position only.
|
ParameterDriver[] |
getParametersDrivers() |
Get the drivers for force model parameters.
|
void |
init(SpacecraftState initialState,
AbsoluteDate target) |
Initialize the force model at the start of propagation.
|
protected <T extends RealFieldElement<T>> |
signedAmplitude(FieldSpacecraftState<T> state,
T[] parameters) |
Compute the signed amplitude of the acceleration.
|
protected double |
signedAmplitude(SpacecraftState state,
double[] parameters) |
Compute the signed amplitude of the acceleration.
|
complainIfNotSupported, getParameterDriver, isSupported
acceleration, acceleration, getEventsDetectors, getFieldEventsDetectors, isInertial
addContribution, addContribution, getParameters, getParameters
public PolynomialParametricAcceleration(Vector3D direction, boolean isInertial, String prefix, AbsoluteDate referenceDate, int degree)
The signed amplitude of the acceleration is ∑pₙ(t-t₀)ⁿ, where
pₙ is parameter n
, t is current date and t₀ is reference date.
The value t-t₀ is in seconds.
The degree + 1
parameters for this model are the polynomial
coefficients in increasing degree order. Their reference values (used
also as the initial values) are all set to 0. User can change them before
starting the propagation (or orbit determination) by calling getParametersDrivers()
and ParameterDriver.setValue(double)
.
direction
- acceleration direction in defining 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
)prefix
- prefix to use for parameter driversreferenceDate
- reference date for computing polynomials, if null
the reference date will be automatically set at propagation startdegree
- polynomial degree (i.e. a value of 0 corresponds to a constant acceleration)public PolynomialParametricAcceleration(Vector3D direction, AttitudeProvider attitudeOverride, String prefix, AbsoluteDate referenceDate, int degree)
The signed amplitude of the acceleration is ∑pₙ(t-t₀)ⁿ, where
pₙ is parameter n
, t is current date and t₀ is reference date.
The value t-t₀ is in seconds.
The degree + 1
parameters for this model are the polynomial
coefficients in increasing degree order. Their reference values (used
also as the initial values) are all set to 0. User can change them before
starting the propagation (or orbit determination) by calling getParametersDrivers()
and ParameterDriver.setValue(double)
.
direction
- acceleration direction in overridden spacecraft frameattitudeOverride
- provider for attitude used to compute acceleration
directionprefix
- prefix to use for parameter driversreferenceDate
- reference date for computing polynomials, if null
the reference date will be automatically set at propagation startdegree
- polynomial degree (i.e. a value of 0 corresponds to a constant acceleration)public boolean dependsOnPositionOnly()
public void init(SpacecraftState initialState, AbsoluteDate target) throws OrekitException
ForceModel.addContribution(SpacecraftState, TimeDerivativesEquations)
,
ForceModel.addContribution(FieldSpacecraftState, FieldTimeDerivativesEquations)
,
ForceModel.acceleration(SpacecraftState, double[])
or ForceModel.acceleration(FieldSpacecraftState, RealFieldElement[])
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()
.OrekitException
- if an implementing class overrides the default behavior and
takes some action that throws an OrekitException
.protected double signedAmplitude(SpacecraftState state, double[] parameters)
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.
signedAmplitude
in class AbstractParametricAcceleration
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parametersprotected <T extends RealFieldElement<T>> T signedAmplitude(FieldSpacecraftState<T> state, T[] parameters)
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.
signedAmplitude
in class AbstractParametricAcceleration
T
- type of the elementsstate
- current state information: date, kinematics, attitudeparameters
- values of the force model parameterspublic ParameterDriver[] getParametersDrivers()
Copyright © 2002-2018 CS Systèmes d'information. All rights reserved.