public class CunninghamGravityModel extends AbstractHarmonicGravityModel
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).
The implementation of this class enables the computation of partial derivatives by finite differences with respect to the central attraction coefficient.
Warning: using a 0x0 Earth potential model is equivalent to a simple Newtonian attraction. However computation times will be much slower since this case is not particularized and hence conversion from body frame (often ITRF) to integration frame is necessary.
Modifier and Type | Field and Description |
---|---|
static String |
RADIUS
Parameter name for equatorial radius.
|
bodyFrame, centralTermContribution, MU, paramMu
Constructor and Description |
---|
CunninghamGravityModel(Frame centralBodyFrame,
double equatorialRadius,
double mu,
double[][] cIn,
double[][] sIn)
Creates a new instance.
|
CunninghamGravityModel(Frame centralBodyFrame,
double equatorialRadius,
double mu,
double[][] cIn,
double[][] sIn,
int degreePD,
int orderPD)
Creates a new instance.
|
CunninghamGravityModel(Frame centralBodyFrame,
Parameter equatorialRadius,
Parameter mu,
double[][] cIn,
double[][] sIn)
Creates a new instance using
Parameter . |
CunninghamGravityModel(Frame centralBodyFrame,
Parameter equatorialRadius,
Parameter mu,
double[][] cIn,
double[][] sIn,
int degreePD,
int orderPD)
Creates a new instance using
Parameter . |
CunninghamGravityModel(Frame centralBodyFrame,
Parameter equatorialRadius,
Parameter mu,
double[][] cIn,
double[][] sIn,
int degreePD,
int orderPD,
boolean centralTermContributionIn)
Creates a new instance using
Parameter . |
Modifier and Type | Method and Description |
---|---|
void |
checkData(AbsoluteDate start,
AbsoluteDate end)
This methods throws an exception if the user did not provide all the required data to perform model call on
provided range [start; end].
|
Vector3D |
computeNonCentralTermsAcceleration(Vector3D pos,
AbsoluteDate date,
Transform bodyFrameToPositionFrame)
Compute the acceleration due to the non-central terms of the gravitational attraction.
|
double[][] |
computeNonCentralTermsDAccDPos(Vector3D pos,
Frame frame,
AbsoluteDate date)
Compute acceleration derivatives with respect to the state parameters for the non-central terms.
|
double |
getAe()
Get the equatorial radius.
|
double[][] |
getC() |
double[][] |
getS() |
void |
setAe(double aeIn)
Set the equatorial radius.
|
computeAcceleration, computeCentralTermAcceleration, computeCentralTermDAccDPos, computeDAccDPos, isCentralTermContributionApplied, setCentralTermContribution
getBodyFrame, getMu, setMu
public static final String RADIUS
public CunninghamGravityModel(Frame centralBodyFrame, double equatorialRadius, double mu, double[][] cIn, double[][] sIn)
centralBodyFrame
- rotating body frameequatorialRadius
- reference equatorial radius of the potentialmu
- central body attraction coefficient (m3/s2)cIn
- un-normalized coefficients array (cosine part)sIn
- un-normalized coefficients array (sine part)IllegalArgumentException
- if coefficients array do not matchpublic CunninghamGravityModel(Frame centralBodyFrame, double equatorialRadius, double mu, double[][] cIn, double[][] sIn, int degreePD, int orderPD)
centralBodyFrame
- rotating body frameequatorialRadius
- reference equatorial radius of the potentialmu
- central body attraction coefficient (m3/s2)cIn
- un-normalized coefficients array (cosine part)sIn
- un-normalized coefficients array (sine part)degreePD
- degree for partial derivativesorderPD
- order for partial derivativesIllegalArgumentException
- if coefficients array do not match or degree and/or order
for partial derivatives is higher than degree and/or order for accelerationpublic CunninghamGravityModel(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, double[][] cIn, double[][] sIn)
Parameter
.centralBodyFrame
- rotating body frameequatorialRadius
- reference equatorial radius of the potentialmu
- parameter representing central body attraction coefficient
(m3/s2)cIn
- parameter representing un-normalized coefficients array (cosine part)sIn
- un-normalized coefficients array (sine part)IllegalArgumentException
- if coefficients array do not matchpublic CunninghamGravityModel(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, double[][] cIn, double[][] sIn, int degreePD, int orderPD)
Parameter
.centralBodyFrame
- rotating body frameequatorialRadius
- reference equatorial radius of the potentialmu
- parameter representing central body attraction coefficient
(m3/s2)cIn
- parameter representing un-normalized coefficients array (cosine part)sIn
- un-normalized coefficients array (sine part)degreePD
- degree for partial derivativesorderPD
- order for partial derivativesIllegalArgumentException
- if coefficients array do not match or degree and/or order
for partial derivatives is higher than degree and/or order for accelerationpublic CunninghamGravityModel(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, double[][] cIn, double[][] sIn, int degreePD, int orderPD, boolean centralTermContributionIn)
Parameter
.centralBodyFrame
- rotating body frameequatorialRadius
- reference equatorial radius of the potentialmu
- parameter representing central body attraction coefficient
(m3/s2)cIn
- parameter representing un-normalized coefficients array (cosine part)sIn
- un-normalized coefficients array (sine part)degreePD
- degree for partial derivativesorderPD
- order for partial derivativescentralTermContributionIn
- true if central term contribution should be considered (by default), false if
notIllegalArgumentException
- if coefficients array do not match or degree and/or order
for partial derivatives is higher than degree and/or order for accelerationpublic Vector3D computeNonCentralTermsAcceleration(Vector3D pos, AbsoluteDate date, Transform bodyFrameToPositionFrame)
computeNonCentralTermsAcceleration
in class AbstractHarmonicGravityModel
pos
- position of the spacecraftdate
- datebodyFrameToPositionFrame
- body frame to frame in which position is provided transformation (used for
computation times speed-up)public final double[][] computeNonCentralTermsDAccDPos(Vector3D pos, Frame frame, AbsoluteDate date) throws PatriusException
computeNonCentralTermsDAccDPos
in class AbstractHarmonicGravityModel
pos
- position of the spacecraftframe
- frame in which the acceleration derivatives are computeddate
- datePatriusException
- if derivatives cannot be computedpublic void checkData(AbsoluteDate start, AbsoluteDate end) throws PatriusException
start
- range start dateend
- range end datePatriusException
- thrown if some data is missingpublic double getAe()
public void setAe(double aeIn)
aeIn
- the equatorial radius.public double[][] getC()
public double[][] getS()
Copyright © 2023 CNES. All rights reserved.