public class CunninghamAttractionModel extends AbstractForceModel implements TideSystemProvider
The algorithm implemented in this class has been designed by Leland E. Cunningham (Lockheed Missiles and Space Company, Sunnyvale and Astronomy Department University of California, Berkeley) in his 1969 paper: On the computation of the spherical harmonic terms needed during the numerical integration of the orbital motion of an artificial satellite (Celestial Mechanics 2, 1970).
Note that this class can often not be used for high degrees (say
above 90) as most modern gravity fields are provided as normalized
coefficients and the un-normalization process to convert these
coefficients underflows at degree and order 89. This class also
does not provide analytical partial derivatives (it uses finite differences
to compute them) and is much slower than HolmesFeatherstoneAttractionModel
(even when no derivatives are computed). For all these reasons,
it is recommended to use the Holmes-Featherstone model rather than this class.
This class uses finite differences to compute derivatives and the steps for
finite differences are initialized in the constructor.
HolmesFeatherstoneAttractionModel| Constructor and Description |
|---|
CunninghamAttractionModel(Frame centralBodyFrame,
UnnormalizedSphericalHarmonicsProvider provider,
double hPosition)
Creates a new instance.
|
| Modifier and Type | Method and Description |
|---|---|
FieldVector3D<DerivativeStructure> |
accelerationDerivatives(AbsoluteDate date,
Frame frame,
FieldVector3D<DerivativeStructure> position,
FieldVector3D<DerivativeStructure> velocity,
FieldRotation<DerivativeStructure> rotation,
DerivativeStructure mass)
Compute acceleration derivatives with respect to state parameters.
|
FieldVector3D<DerivativeStructure> |
accelerationDerivatives(SpacecraftState s,
String paramName)
Compute acceleration derivatives with respect to additional parameters.
|
void |
addContribution(SpacecraftState s,
TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing
acceleration.
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
ParameterDriver[] |
getParametersDrivers()
Get the drivers for force model parameters.
|
TideSystem |
getTideSystem()
Get the
TideSystem used in the gravity field. |
complainIfNotSupported, getParameter, getParameterDriver, getParametersNames, isSupported, setParameterclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitinitpublic CunninghamAttractionModel(Frame centralBodyFrame, UnnormalizedSphericalHarmonicsProvider provider, double hPosition)
centralBodyFrame - rotating body frameprovider - provider for spherical harmonicshPosition - step used for finite difference computationpublic TideSystem getTideSystem()
TideSystem used in the gravity field.getTideSystem in interface TideSystemProviderpublic void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws OrekitException
addContribution in interface ForceModels - current state information: date, kinematics, attitudeadder - object where the contribution should be addedOrekitException - if some specific error occurspublic FieldVector3D<DerivativeStructure> accelerationDerivatives(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position, FieldVector3D<DerivativeStructure> velocity, FieldRotation<DerivativeStructure> rotation, DerivativeStructure mass) throws OrekitException
The derivatives should be computed with respect to position, velocity and optionnaly mass. The input parameters already take into account the free parameters (6 or 7 depending on derivation with respect to mass being considered or not) and order (always 1). Free parameters at indices 0, 1 and 2 correspond to derivatives with respect to position. Free parameters at indices 3, 4 and 5 correspond to derivatives with respect to velocity. Free parameter at index 6 (if present) corresponds to to derivatives with respect to mass.
accelerationDerivatives in interface ForceModeldate - current dateframe - inertial reference frame for state (both orbit and attitude)position - position of spacecraft in reference framevelocity - velocity of spacecraft in reference framerotation - orientation (attitude) of the spacecraft with respect to reference framemass - spacecraft massOrekitException - if derivatives cannot be computedpublic FieldVector3D<DerivativeStructure> accelerationDerivatives(SpacecraftState s, String paramName) throws OrekitException
accelerationDerivatives in interface ForceModels - spacecraft stateparamName - name of the parameter with respect to which derivatives are requiredOrekitException - if derivatives cannot be computedpublic EventDetector[] getEventsDetectors()
getEventsDetectors in interface ForceModelpublic ParameterDriver[] getParametersDrivers()
getParametersDrivers in interface ForceModelCopyright © 2002-2016 CS Systèmes d'information. All rights reserved.