public class HolmesFeatherstoneAttractionModel extends AbstractForceModel implements TideSystemProvider
The algorithm implemented in this class has been designed by S. A. Holmes and W. E. Featherstone from Department of Spatial Sciences, Curtin University of Technology, Perth, Australia. It is described in their 2002 paper: A unified approach to he Clenshaw summation and the recursive computation of very high degree and order normalised associated Legendre functions (Journal of Geodesy (2002) 76: 279–299).
This model directly uses normalized coefficients and stable recursion algorithms so it is more suited to high degree gravity fields than the classical Cunningham Droziner models which use un-normalized coefficients.
Among the different algorithms presented in Holmes and Featherstone paper, this class implements the modified forward row method. All recursion coefficients are precomputed and stored for greater performance. This caching was suggested in the paper but not used due to the large memory requirements. Since 2002, even low end computers and mobile devices do have sufficient memory so this caching has become feasible nowadays.
| Constructor and Description |
|---|
HolmesFeatherstoneAttractionModel(Frame centralBodyFrame,
NormalizedSphericalHarmonicsProvider provider)
Creates a new instance.
|
| Modifier and Type | Method and Description |
|---|---|
<T extends RealFieldElement<T>> |
acceleration(FieldSpacecraftState<T> s,
T[] parameters)
Compute acceleration.
|
Vector3D |
acceleration(SpacecraftState s,
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 RealFieldElement<T>> |
getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.
|
double |
getMu()
Get the central attraction coefficient μ.
|
ParameterDriver[] |
getParametersDrivers()
Get the drivers for force model parameters.
|
TideSystem |
getTideSystem()
Get the
TideSystem used in the gravity field. |
double[] |
gradient(AbsoluteDate date,
Vector3D position,
double mu)
Compute the gradient of the non-central part of the gravity field.
|
<T extends RealFieldElement<T>> |
gradient(FieldAbsoluteDate<T> date,
FieldVector3D<T> position,
T mu)
Compute the gradient of the non-central part of the gravity field.
|
double |
nonCentralPart(AbsoluteDate date,
Vector3D position,
double mu)
Compute the non-central part of the gravity field.
|
double |
value(AbsoluteDate date,
Vector3D position,
double mu)
Compute the value of the gravity field.
|
complainIfNotSupported, getParameterDriver, isSupportedclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitaddContribution, addContribution, getParameters, getParameters, initpublic HolmesFeatherstoneAttractionModel(Frame centralBodyFrame, NormalizedSphericalHarmonicsProvider provider)
centralBodyFrame - rotating body frameprovider - provider for spherical harmonicspublic boolean dependsOnPositionOnly()
dependsOnPositionOnly in interface ForceModelpublic TideSystem getTideSystem()
TideSystem used in the gravity field.getTideSystem in interface TideSystemProviderpublic double getMu()
public double value(AbsoluteDate date, Vector3D position, double mu)
date - current dateposition - position at which gravity field is desired in body framemu - central attraction coefficient to usepublic double nonCentralPart(AbsoluteDate date, Vector3D position, double mu)
date - current dateposition - position at which gravity field is desired in body framemu - central attraction coefficient to usepublic double[] gradient(AbsoluteDate date, Vector3D position, double mu)
date - current dateposition - position at which gravity field is desired in body framemu - central attraction coefficient to usepublic <T extends RealFieldElement<T>> T[] gradient(FieldAbsoluteDate<T> date, FieldVector3D<T> position, T mu)
T - type of field useddate - current dateposition - position at which gravity field is desired in body framemu - central attraction coefficient to usepublic Vector3D acceleration(SpacecraftState s, double[] parameters)
acceleration in interface ForceModels - current state information: date, kinematics, attitudeparameters - values of the force model parameterspublic <T extends RealFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
acceleration in interface ForceModelT - type of the elementss - current state information: date, kinematics, attitudeparameters - values of the force model parameterspublic Stream<EventDetector> getEventsDetectors()
getEventsDetectors in interface ForceModelpublic <T extends RealFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
ForceModelgetFieldEventsDetectors in interface ForceModelT - extends RealFieldElement<T>field - field to which the state belongspublic ParameterDriver[] getParametersDrivers()
getParametersDrivers in interface ForceModelCopyright © 2002-2021 CS GROUP. All rights reserved.