org.orekit.forces.gravity.variations
Class VariablePotentialAttractionModel

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by org.orekit.parameter.JacobiansParameterizable
          extended by org.orekit.forces.gravity.variations.VariablePotentialAttractionModel
All Implemented Interfaces:
Serializable, ForceModel, GradientModel, PotentialTimeVariations, IJacobiansParameterizable, IParameterizable

public class VariablePotentialAttractionModel
extends JacobiansParameterizable
implements ForceModel, GradientModel, PotentialTimeVariations

This class represents a variable gravity field. It computes a static potential and a time variable potential. The C and S coefficients array are computed according to the algorithm given by

Since:
1.3
Version:
$Id: VariablePotentialAttractionModel.java 17582 2017-05-10 12:58:16Z bignon $
Author:
Rami Houdroge
See Also:
GRACE / LAGEOS variable model, Serialized Form
Concurrency :
not thread-safe
Concurrency comment :
not thread-safe because of global arrays

Field Summary
static String RADIUS
          Parameter name for equatorial radius.
 
Constructor Summary
VariablePotentialAttractionModel(Frame centralBodyFrame, VariablePotentialCoefficientsProvider provider, int degree, int order)
          Variable gravity field force model constructor (static part only).
VariablePotentialAttractionModel(Frame centralBodyFrame, VariablePotentialCoefficientsProvider provider, int degree, int order, int degreePD, int orderPD)
          Variable gravity field force model constructor (static part only).
VariablePotentialAttractionModel(Frame centralBodyFrame, VariablePotentialCoefficientsProvider provider, int degree, int order, int degreeOptional, int orderOptional, boolean computeOptionalOnce)
          Variable gravity field force model constructor.
VariablePotentialAttractionModel(Frame centralBodyFrame, VariablePotentialCoefficientsProvider provider, int degree, int order, int degreePD, int orderPD, int degreeOptional, int orderOptional, int degreeOptionalPD, int orderOptionalPD, boolean computeOptionalOnce)
          Variable gravity field force model constructor.
 
Method Summary
 void addContribution(SpacecraftState s, TimeDerivativesEquations adder)
          Compute the contribution of the force model to the perturbing acceleration.
 void addDAccDParam(SpacecraftState s, Parameter param, double[] dAccdParam)
          Compute acceleration derivatives with respect to additional parameters.
 void addDAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel)
          Compute acceleration derivatives with respect to state parameters.
 Vector3D computeAcceleration(AbsoluteDate date, PVCoordinates pv)
          Compute acceleration in rotating frame
 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.
 double getAe()
           
 EventDetector[] getEventsDetectors()
          Get the discrete events related to the model.
 double getMu()
           
 void updateCoefficientsCandS(AbsoluteDate date)
          Update the C and the S coefficients for acceleration computation.
 void updateCoefficientsCandSPD(AbsoluteDate date)
          Update the C and the S coefficients for partial derivatives computation.
 
Methods inherited from class org.orekit.parameter.JacobiansParameterizable
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
 
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

VariablePotentialAttractionModel

public VariablePotentialAttractionModel(Frame centralBodyFrame,
                                        VariablePotentialCoefficientsProvider provider,
                                        int degree,
                                        int order,
                                        int degreePD,
                                        int orderPD)
                                 throws OrekitException
Variable gravity field force model constructor (static part only).

Parameters:
centralBodyFrame - central rotating body frame
provider - normalized variable coefficients provider
degree - degree for acceleration computation
order - order for acceleration computation
degreePD - degree for partial derivatives computation
orderPD - order for partial derivatives computation
Throws:
OrekitException - if degree too large

VariablePotentialAttractionModel

public VariablePotentialAttractionModel(Frame centralBodyFrame,
                                        VariablePotentialCoefficientsProvider provider,
                                        int degree,
                                        int order)
                                 throws OrekitException
Variable gravity field force model constructor (static part only).

Parameters:
centralBodyFrame - central rotating body frame
provider - normalized variable coefficients provider
degree - degree
order - order
Throws:
OrekitException - if degree too large

VariablePotentialAttractionModel

public VariablePotentialAttractionModel(Frame centralBodyFrame,
                                        VariablePotentialCoefficientsProvider provider,
                                        int degree,
                                        int order,
                                        int degreePD,
                                        int orderPD,
                                        int degreeOptional,
                                        int orderOptional,
                                        int degreeOptionalPD,
                                        int orderOptionalPD,
                                        boolean computeOptionalOnce)
                                 throws OrekitException
Variable gravity field force model constructor. Takes into account optional terms.

Parameters:
centralBodyFrame - central rotating body frame
provider - normalized variable coefficients provider
degree - degree for acceleration computation
order - order for acceleration computation
degreePD - degree for partial derivatives computation
orderPD - order for partial derivatives computation
degreeOptional - max degree of optional terms to take into account for acceleration computation
orderOptional - max order of optional terms to take into account for acceleration computation
degreeOptionalPD - max degree of optional terms to take into account for partial derivatives computation
orderOptionalPD - max order of optional terms to take into account for partial derivatives computation
computeOptionalOnce - true to indicate that coefficients should be computed just once at instantiation. false if coefficients are to be computed every time
Throws:
OrekitException - if degree too large

VariablePotentialAttractionModel

public VariablePotentialAttractionModel(Frame centralBodyFrame,
                                        VariablePotentialCoefficientsProvider provider,
                                        int degree,
                                        int order,
                                        int degreeOptional,
                                        int orderOptional,
                                        boolean computeOptionalOnce)
                                 throws OrekitException
Variable gravity field force model constructor. Takes into account optional terms.

Parameters:
centralBodyFrame - central rotating body frame
provider - normalized variable coefficients provider
degree - degree
order - order
degreeOptional - max degree of optional terms to take into account
orderOptional - max order of optional terms to take into account
computeOptionalOnce - true to indicate that coefficients should be computed just once at instanciation. false if coefficients are to be computed every time.
Throws:
OrekitException - if degree too large
Method Detail

updateCoefficientsCandS

public void updateCoefficientsCandS(AbsoluteDate date)
                             throws OrekitException
Update the C and the S coefficients for acceleration computation.

Specified by:
updateCoefficientsCandS in interface PotentialTimeVariations
Parameters:
date - : date
Throws:
OrekitException - if position cannot be computed in given frame

updateCoefficientsCandSPD

public void updateCoefficientsCandSPD(AbsoluteDate date)
                               throws OrekitException
Update the C and the S coefficients for partial derivatives computation.

Specified by:
updateCoefficientsCandSPD in interface PotentialTimeVariations
Parameters:
date - : date
Throws:
OrekitException - if position cannot be computed in given frame

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

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 Vector3D computeAcceleration(AbsoluteDate date,
                                    PVCoordinates pv)
                             throws OrekitException
Compute acceleration in rotating frame

Parameters:
date - date at which to compute acceleration
pv - pv of spacecraft
Returns:
the acceleration in the rotating frame
Throws:
OrekitException - if acceleration cannot be computed

getEventsDetectors

public 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

getMu

public double getMu()
Returns:
the mu

getAe

public double getAe()
Returns:
the ae

addDAccDState

public void addDAccDState(SpacecraftState s,
                          double[][] dAccdPos,
                          double[][] dAccdVel)
                   throws OrekitException
Description copied from interface: IJacobiansParameterizable
Compute acceleration derivatives with respect to state parameters.

Specified by:
addDAccDState in interface IJacobiansParameterizable
Parameters:
s - spacecraft state
dAccdPos - acceleration derivatives with respect to position
dAccdVel - acceleration derivatives with respect to velocity
Throws:
OrekitException - if derivatives cannot be computed

addDAccDParam

public void addDAccDParam(SpacecraftState s,
                          Parameter param,
                          double[] dAccdParam)
                   throws OrekitException
Compute acceleration derivatives with respect to additional parameters.. No parameter is supported by this force model.

Specified by:
addDAccDParam in interface IJacobiansParameterizable
Parameters:
s - spacecraft state
param - the parameter with respect to which derivatives are required
dAccdParam - acceleration derivatives with respect to specified parameters
Throws:
OrekitException - if derivatives cannot be computed


Copyright © 2017 CNES. All Rights Reserved.