org.orekit.forces.gravity
Class DrozinerAttractionModel

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by org.orekit.forces.gravity.DrozinerAttractionModel
All Implemented Interfaces:
Serializable, ForceModel, GradientModel, AttractionModel, IParameterizable

public class DrozinerAttractionModel
extends Parameterizable
implements ForceModel, GradientModel, AttractionModel

This class represents the gravitational field of a celestial body.

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.

Author:
Fabien Maussion, Luc Maisonobe, Véronique Pommier-Maurussane
See Also:
Serialized Form

Field Summary
static String RADIUS
          Parameter name for equatorial radius.
 
Fields inherited from interface org.orekit.forces.gravity.AttractionModel
MU
 
Constructor Summary
DrozinerAttractionModel(Frame centralBodyFrame, double equatorialRadius, double mu, double[][] C, double[][] S)
          Creates a new instance.
DrozinerAttractionModel(Frame centralBodyFrame, double equatorialRadius, double mu, double[][] C, double[][] S, boolean computePDPos, boolean computePDVel)
          Creates a new instance.
DrozinerAttractionModel(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, double[][] C, double[][] S)
          Creates a new instance using Parameter.
DrozinerAttractionModel(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, double[][] C, double[][] S, boolean computePDPos, boolean computePDVel)
          Creates a new instance using Parameter.
 
Method Summary
 void addContribution(SpacecraftState s, TimeDerivativesEquations adder)
          Compute the contribution of the force model to the perturbing acceleration.
 Vector3D computeAcceleration(PVCoordinates pv, AbsoluteDate date)
           Method to compute the acceleration.
 Vector3D computeAcceleration(SpacecraftState s)
          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.
 EventDetector[] getEventsDetectors()
          Get the discrete events related to the model.
 double getMu()
          Get the central attraction coefficient &mu.
 
Methods inherited from class org.orekit.parameter.Parameterizable
addParameter, getParameters, supportsParameter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.orekit.parameter.IParameterizable
getParameters, supportsParameter
 

Field Detail

RADIUS

public static final String RADIUS
Parameter name for equatorial radius.

See Also:
Constant Field Values
Constructor Detail

DrozinerAttractionModel

public DrozinerAttractionModel(Frame centralBodyFrame,
                               double equatorialRadius,
                               double mu,
                               double[][] C,
                               double[][] S)
                        throws IllegalArgumentException
Creates a new instance.

Parameters:
centralBodyFrame - rotating body frame
equatorialRadius - reference equatorial radius of the potential
mu - central body attraction coefficient (m3/s2)
C - un-normalized coefficients array (cosine part)
S - un-normalized coefficients array (sine part)
Throws:
IllegalArgumentException - if coefficients array do not match

DrozinerAttractionModel

public DrozinerAttractionModel(Frame centralBodyFrame,
                               double equatorialRadius,
                               double mu,
                               double[][] C,
                               double[][] S,
                               boolean computePDPos,
                               boolean computePDVel)
                        throws IllegalArgumentException
Creates a new instance.

Parameters:
centralBodyFrame - rotating body frame
equatorialRadius - reference equatorial radius of the potential
mu - central body attraction coefficient (m3/s2)
C - un-normalized coefficients array (cosine part)
S - un-normalized coefficients array (sine part)
computePDPos - true if partial derivatives wrt position have to be computed
computePDVel - true if partial derivatives wrt velocity have to be computed
Throws:
IllegalArgumentException - if coefficients array do not match

DrozinerAttractionModel

public DrozinerAttractionModel(Frame centralBodyFrame,
                               Parameter equatorialRadius,
                               Parameter mu,
                               double[][] C,
                               double[][] S)
                        throws IllegalArgumentException
Creates a new instance using Parameter.

Parameters:
centralBodyFrame - rotating body frame
equatorialRadius - parameter representing reference equatorial radius of the potential
mu - parameter representing central body attraction coefficient (m3/s2)
C - un-normalized coefficients array (cosine part)
S - un-normalized coefficients array (sine part)
Throws:
IllegalArgumentException - if coefficients array do not match

DrozinerAttractionModel

public DrozinerAttractionModel(Frame centralBodyFrame,
                               Parameter equatorialRadius,
                               Parameter mu,
                               double[][] C,
                               double[][] S,
                               boolean computePDPos,
                               boolean computePDVel)
                        throws IllegalArgumentException
Creates a new instance using Parameter.

Parameters:
centralBodyFrame - rotating body frame
equatorialRadius - parameter representing reference equatorial radius of the potential
mu - parameter representing central body attraction coefficient (m3/s2)
C - un-normalized coefficients array (cosine part)
S - un-normalized coefficients array (sine part)
computePDPos - true if partial derivatives wrt position have to be computed
computePDVel - true if partial derivatives wrt velocity have to be computed
Throws:
IllegalArgumentException - if coefficients array do not match
Method Detail

addContribution

public void addContribution(SpacecraftState s,
                            TimeDerivativesEquations adder)
                     throws OrekitException
Compute the contribution of the force model to the perturbing acceleration.

Specified by:
addContribution in interface ForceModel
Parameters:
s - current state information: date, kinematics, attitude
adder - object where the contribution should be added
Throws:
OrekitException - if some specific error occurs

getEventsDetectors

public final EventDetector[] getEventsDetectors()
Get the discrete events related to the model.

Specified by:
getEventsDetectors in interface ForceModel
Returns:
array of events detectors or null if the model is not related to any discrete events

computeGradientPosition

public boolean computeGradientPosition()
This method returns true if the acceleration partial derivatives with respect to position have to be computed..

Specified by:
computeGradientPosition in interface GradientModel
Returns:
true if the derivatives have to be computed, false otherwise

computeGradientVelocity

public boolean computeGradientVelocity()
This method returns true if the acceleration partial derivatives with respect to velocity have to be computed..

Specified by:
computeGradientVelocity in interface GradientModel
Returns:
true if the derivatives have to be computed, false otherwise

computeAcceleration

public Vector3D computeAcceleration(SpacecraftState s)
                             throws OrekitException
Compute the acceleration due to the force..

Specified by:
computeAcceleration in interface ForceModel
Parameters:
s - current state information: date, kinematics, attitude
Returns:
acceleration in the SpacecraftState frame
Throws:
OrekitException - if some specific error occurs

computeAcceleration

public final Vector3D computeAcceleration(PVCoordinates pv,
                                          AbsoluteDate date)
                                   throws OrekitException

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)

Parameters:
pv - PV coordinates of the spacecraft
date - date
Returns:
acceleration vector
Throws:
OrekitException - if an Orekit error occurs

getMu

public double getMu()
Get the central attraction coefficient &mu..

Specified by:
getMu in interface AttractionModel
Returns:
mu central attraction coefficient (m3/s2)


Copyright © 2017 CNES. All Rights Reserved.