public class DrozinerAttractionModel extends Parameterizable implements ForceModel, GradientModel, AttractionModel
The algorithm implemented in this class has been designed by Andrzej Droziner (Institute of Mathematical Machines, Warsaw) in his 1976 paper: An algorithm for recurrent calculation of gravitational acceleration (artificial satellites, Vol. 12, No 2, June 1977).
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.
|
MU| Constructor and Description |
|---|
DrozinerAttractionModel(Frame centralBodyFrameIn,
double equatorialRadius,
double mu,
double[][] cCoefs,
double[][] sCoefs)
Creates a new instance.
|
DrozinerAttractionModel(Frame centralBodyFrameIn,
double equatorialRadius,
double mu,
double[][] cCoefs,
double[][] sCoefs,
boolean computePDPos,
boolean computePDVel)
Creates a new instance.
|
DrozinerAttractionModel(Frame centralBodyFrameIn,
Parameter equatorialRadius,
Parameter mu,
double[][] cCoefs,
double[][] sCoefs)
Creates a new instance using
Parameter. |
DrozinerAttractionModel(Frame centralBodyFrameIn,
Parameter equatorialRadius,
Parameter mu,
double[][] cCoefs,
double[][] sCoefs,
boolean computePDPos,
boolean computePDVel)
Creates a new instance using
Parameter. |
| Modifier and Type | Method and Description |
|---|---|
void |
addContribution(SpacecraftState state,
TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing
acceleration.
|
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 |
computeAcceleration(PVCoordinates pv,
AbsoluteDate date)
Method to compute the acceleration.
|
Vector3D |
computeAcceleration(SpacecraftState state)
Compute the acceleration due to the force.
|
boolean |
computeGradientPosition()
This method returns true if the acceleration partial derivatives with
respect to position have to be computed.
|
boolean |
computeGradientVelocity()
This method returns true if the acceleration partial derivatives with
respect to velocity have to be computed.
|
double[][] |
getC() |
Frame |
getCentralBodyFrame()
Get the central body frame
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
double |
getMu()
Get the central attraction coefficient &mu.
|
double[][] |
getS() |
addParameter, getParameters, supportsParameterclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetParameters, supportsParameterpublic static final String RADIUS
public DrozinerAttractionModel(Frame centralBodyFrameIn, double equatorialRadius, double mu, double[][] cCoefs, double[][] sCoefs)
centralBodyFrameIn - rotating body frameequatorialRadius - reference equatorial radius of the potentialmu - central body attraction coefficient (m3/s2)cCoefs - un-normalized coefficients array (cosine part)sCoefs - un-normalized coefficients array (sine part)IllegalArgumentException - if coefficients array do not matchpublic DrozinerAttractionModel(Frame centralBodyFrameIn, double equatorialRadius, double mu, double[][] cCoefs, double[][] sCoefs, boolean computePDPos, boolean computePDVel)
centralBodyFrameIn - rotating body frameequatorialRadius - reference equatorial radius of the potentialmu - central body attraction coefficient (m3/s2)cCoefs - un-normalized coefficients array (cosine part)sCoefs - un-normalized coefficients array (sine part)computePDPos - true if partial derivatives wrt position have to be computedcomputePDVel - true if partial derivatives wrt velocity have to be computedIllegalArgumentException - if coefficients array do not matchpublic DrozinerAttractionModel(Frame centralBodyFrameIn, Parameter equatorialRadius, Parameter mu, double[][] cCoefs, double[][] sCoefs)
Parameter.centralBodyFrameIn - rotating body frameequatorialRadius - parameter representing reference equatorial radius of the potentialmu - parameter representing central body attraction coefficient
(m3/s2)cCoefs - un-normalized coefficients array (cosine part)sCoefs - un-normalized coefficients array (sine part)IllegalArgumentException - if coefficients array do not matchpublic DrozinerAttractionModel(Frame centralBodyFrameIn, Parameter equatorialRadius, Parameter mu, double[][] cCoefs, double[][] sCoefs, boolean computePDPos, boolean computePDVel)
Parameter.centralBodyFrameIn - rotating body frameequatorialRadius - parameter representing reference equatorial radius of the potentialmu - parameter representing central body attraction coefficient
(m3/s2)cCoefs - un-normalized coefficients array (cosine part)sCoefs - un-normalized coefficients array (sine part)computePDPos - true if partial derivatives wrt position have to be computedcomputePDVel - true if partial derivatives wrt velocity have to be computedIllegalArgumentException - if coefficients array do not matchpublic void addContribution(SpacecraftState state, TimeDerivativesEquations adder) throws PatriusException
addContribution in interface ForceModelstate - current state information: date, kinematics, attitudeadder - object where the contribution should be addedPatriusException - if some specific error occurspublic final EventDetector[] getEventsDetectors()
getEventsDetectors in interface ForceModelpublic boolean computeGradientPosition()
computeGradientPosition in interface GradientModelpublic boolean computeGradientVelocity()
computeGradientVelocity in interface GradientModelpublic Vector3D computeAcceleration(SpacecraftState state) throws PatriusException
computeAcceleration in interface ForceModelstate - current state information: date, kinematics, attitudeSpacecraftState framePatriusException - if some specific error occurspublic final Vector3D computeAcceleration(PVCoordinates pv, AbsoluteDate date) throws PatriusException
Method to compute the acceleration. This method has been implemented in order to validate the force model only. The reason is that for the validation context, we do not want to set up an instance of the SpacecraftState object to avoid the inertial frame of the spacecraft orbit.
(see Story #V82 and Feature #34 on https://www.orekit.org/forge/issues/34)
Out of the validation context, one must use the method Vector3D computeAcceleration(final SpacecraftState s)
pv - PV coordinates of the spacecraftdate - datePatriusException - if an Orekit error occurspublic double getMu()
getMu in interface AttractionModelpublic double[][] getC()
public double[][] getS()
public Frame getCentralBodyFrame()
public void checkData(AbsoluteDate start, AbsoluteDate end) throws PatriusException
checkData in interface ForceModelstart - range start dateend - range end datePatriusException - thrown if some data is missingCopyright © 2020 CNES. All rights reserved.