Class HarmonicParametricAcceleration
- java.lang.Object
-
- org.orekit.forces.AbstractForceModel
-
- org.orekit.forces.AbstractParametricAcceleration
-
- org.orekit.forces.HarmonicParametricAcceleration
-
- All Implemented Interfaces:
ForceModel
public class HarmonicParametricAcceleration extends AbstractParametricAcceleration
This class implements aparametric acceleration
with harmonic signed amplitude.- Since:
- 9.0
- Author:
- Luc Maisonobe
-
-
Constructor Summary
Constructors Constructor Description HarmonicParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, boolean isInertial, String prefix, AbsoluteDate referenceDate, double fundamentalPeriod, int harmonicMultiplier)
Simple constructor.HarmonicParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, AttitudeProvider attitudeOverride, String prefix, AbsoluteDate referenceDate, double fundamentalPeriod, int harmonicMultiplier)
Simple constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods 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 org.hipparchus.RealFieldElement<T>>
TsignedAmplitude(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.-
Methods inherited from class org.orekit.forces.AbstractParametricAcceleration
acceleration, acceleration, getEventsDetectors, getFieldEventsDetectors, isInertial
-
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
-
-
-
-
Constructor Detail
-
HarmonicParametricAcceleration
public HarmonicParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, boolean isInertial, String prefix, AbsoluteDate referenceDate, double fundamentalPeriod, int harmonicMultiplier)
Simple constructor.The signed amplitude of the acceleration is γ sin[2kπ(t-t₀)/T + φ], where γ is parameter
0
and represents the full amplitude, t is current date, t₀ is reference date,T
is fundamental period,k
is harmonic multiplier, and φ is parameter1
and represents phase at t₀. The value t-t₀ is in seconds.The fundamental period
T
is often set to the Keplerian period of the orbit and the harmonic multiplierk
is often set to 1 or 2. The model has two parameters, one for the full amplitude and one for the phase at reference date.The two parameters for this model are the full amplitude (parameter 0) and the phase at reference date (parameter 1). Their reference values (used also as the initial values) are both set to 0. User can change them before starting the propagation (or orbit determination) by calling
getParametersDrivers()
andParameterDriver.setValue(double)
.- Parameters:
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 propagationattitude law
)prefix
- prefix to use for parameter driversreferenceDate
- reference date for computing phase, if null the reference date will be automatically set at propagation startfundamentalPeriod
- fundamental period (typically set to initial orbitKeplerian period
)harmonicMultiplier
- multiplier to compute harmonic period from fundamental period)
-
HarmonicParametricAcceleration
public HarmonicParametricAcceleration(org.hipparchus.geometry.euclidean.threed.Vector3D direction, AttitudeProvider attitudeOverride, String prefix, AbsoluteDate referenceDate, double fundamentalPeriod, int harmonicMultiplier)
Simple constructor.The signed amplitude of the acceleration is γ sin[2kπ(t-t₀)/T + φ], where γ is parameter
0
and represents the full amplitude, t is current date, t₀ is reference date,T
is fundamental period,k
is harmonic multiplier, and φ is parameter1
and represents phase at t₀. The value t-t₀ is in seconds.The fundamental period
T
is often set to the Keplerian period of the orbit and the harmonic multiplierk
is often set to 1 or 2. The model has two parameters, one for the full amplitude and one for the phase at reference date.The two parameters for this model are the full amplitude (parameter 0) and the phase at reference date (parameter 1). Their reference values (used also as the initial values) are both set to 0. User can change them before starting the propagation (or orbit determination) by calling
getParametersDrivers()
andParameterDriver.setValue(double)
.- Parameters:
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 phase, if null the reference date will be automatically set at propagation startfundamentalPeriod
- fundamental period (typically set to initial orbitKeplerian period
)harmonicMultiplier
- multiplier to compute harmonic period from fundamental period)
-
-
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
-
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, RealFieldElement[])
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()
.
-
signedAmplitude
protected 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.
. The signed amplitude of the acceleration is γ sin[2kπ(t-t₀)/T + φ], where γ is parameter0
and represents the full amplitude, t is current date, t₀ is reference date,T
is fundamental period,k
is harmonic multiplier, and φ is parameter1
and represents phase at t₀. The value t-t₀ is in seconds.- Specified by:
signedAmplitude
in classAbstractParametricAcceleration
- Parameters:
state
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters- Returns:
- norm of the acceleration
-
signedAmplitude
protected <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.
The signed amplitude of the acceleration is γ sin[2kπ(t-t₀)/T + φ], where γ is parameter0
and represents the full amplitude, t is current date, t₀ is reference date,T
is fundamental period,k
is harmonic multiplier, and φ is parameter1
and represents phase at t₀. The value t-t₀ is in seconds.- Specified by:
signedAmplitude
in classAbstractParametricAcceleration
- 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
-
getParametersDrivers
public ParameterDriver[] getParametersDrivers()
Get the drivers for force model parameters.- Returns:
- drivers for force model parameters
-
-