org.orekit.forces.gravity.tides
Class AbstractTides

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by org.orekit.parameter.JacobiansParameterizable
          extended by org.orekit.forces.gravity.tides.AbstractTides
All Implemented Interfaces:
Serializable, ForceModel, GradientModel, PotentialTimeVariations, IJacobiansParameterizable, IParameterizable
Direct Known Subclasses:
OceanTides, TerrestrialTides

public abstract class AbstractTides
extends JacobiansParameterizable
implements ForceModel, GradientModel, PotentialTimeVariations

Common handling of ForceModel methods for tides models.

This abstract class allows to provide easily the full set of ForceModel methods to tides models. Only one method must be implemented by derived classes: updateCoefficientsCandS(org.orekit.time.AbsoluteDate).

Since:
2.3
Version:
$Id: AbstractTides.java 15713 2016-04-01 08:55:06Z bignon $
Author:
Charlotte Maggiorani
See Also:
Serialized Form
Concurrency :
not thread-safe
Concurrency comment :
not thread safe because of the method updateCoefficientsCandS().

Field Summary
protected  Frame bodyFrame
          Frame for the central body.
protected  double[][] coefficientsC
          First normalized potential tesseral coefficients array.
protected  double[][] coefficientsCPD
          First normalized potential tesseral coefficients array for partial derivatives computation.
protected  double[][] coefficientsS
          Second normalized potential tesseral coefficients array.
protected  double[][] coefficientsSPD
          Second normalized potential tesseral coefficients array for partial derivatives computation.
static String MU
          Parameter name for central attraction coefficient.
protected  Parameter paramAe
          Equatorial radius parameter.
protected  Parameter paramMu
          Central attraction coefficient parameter.
static String RADIUS
          Parameter name for equatorial radius.
 
Constructor Summary
protected AbstractTides(Frame centralBodyFrame, double equatorialRadius, double mu, int degree, int order)
          Build a new instance.
protected AbstractTides(Frame centralBodyFrame, double equatorialRadius, double mu, int degree, int order, int degreePD, int orderPD)
          Build a new instance.
protected AbstractTides(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, int degree, int order)
          Build a new instance using Parameter.
protected AbstractTides(Frame centralBodyFrame, Parameter equatorialRadius, Parameter mu, int degree, int order, int degreePD, int orderPD)
          Build a new instance using Parameter.
 
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(PVCoordinates pv, Frame frame, AbsoluteDate date)
           Method to compute the acceleration, from Balmino algorithm (see BalminoAttractionModel class).
 Vector3D computeAcceleration(SpacecraftState s)
          Compute the acceleration due to the force.
 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.
abstract  void updateCoefficientsCandS(AbsoluteDate date)
          Update the C and the S coefficients for acceleration computation.
abstract  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
 
Methods inherited from interface org.orekit.forces.GradientModel
computeGradientPosition
 

Field Detail

MU

public static final String MU
Parameter name for central attraction coefficient.

See Also:
Constant Field Values

RADIUS

public static final String RADIUS
Parameter name for equatorial radius.

See Also:
Constant Field Values

paramMu

protected Parameter paramMu
Central attraction coefficient parameter.


paramAe

protected Parameter paramAe
Equatorial radius parameter.


coefficientsC

protected double[][] coefficientsC
First normalized potential tesseral coefficients array.


coefficientsS

protected double[][] coefficientsS
Second normalized potential tesseral coefficients array.


coefficientsCPD

protected double[][] coefficientsCPD
First normalized potential tesseral coefficients array for partial derivatives computation.


coefficientsSPD

protected double[][] coefficientsSPD
Second normalized potential tesseral coefficients array for partial derivatives computation.


bodyFrame

protected final Frame bodyFrame
Frame for the central body.

Constructor Detail

AbstractTides

protected AbstractTides(Frame centralBodyFrame,
                        double equatorialRadius,
                        double mu,
                        int degree,
                        int order)
Build a new instance.

Parameters:
centralBodyFrame - rotating central body frame
equatorialRadius - equatorial radius
mu - central body attraction coefficient (m3/s2)
degree - degree
order - order

AbstractTides

protected AbstractTides(Frame centralBodyFrame,
                        double equatorialRadius,
                        double mu,
                        int degree,
                        int order,
                        int degreePD,
                        int orderPD)
Build a new instance.

Parameters:
centralBodyFrame - rotating central body frame
equatorialRadius - equatorial radius
mu - central body attraction coefficient (m3/s2)
degree - degree for acceleration computation
order - order for acceleration computation
degreePD - degree for partial derivatives computation
orderPD - order for partial derivatives computation

AbstractTides

protected AbstractTides(Frame centralBodyFrame,
                        Parameter equatorialRadius,
                        Parameter mu,
                        int degree,
                        int order)
Build a new instance using Parameter.

Parameters:
centralBodyFrame - rotating central body frame
equatorialRadius - equatorial radius parameter
mu - central body attraction coefficient (m3/s2) parameter
degree - degree
order - order

AbstractTides

protected AbstractTides(Frame centralBodyFrame,
                        Parameter equatorialRadius,
                        Parameter mu,
                        int degree,
                        int order,
                        int degreePD,
                        int orderPD)
Build a new instance using Parameter.

Parameters:
centralBodyFrame - rotating central body frame
equatorialRadius - equatorial radius parameter
mu - central body attraction coefficient (m3/s2) parameter
degree - degree for acceleration computation
order - order for acceleration computation
degreePD - degree for partial derivatives computation
orderPD - order for partial derivatives computation
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

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(PVCoordinates pv,
                                    Frame frame,
                                    AbsoluteDate date)
                             throws OrekitException

Method to compute the acceleration, from Balmino algorithm (see BalminoAttractionModel class). 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 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
frame - frame in which the acceleration is computed
date - date
Returns:
acceleration vector
Throws:
OrekitException - if an Orekit error occurs

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

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

updateCoefficientsCandS

public abstract 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 abstract 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

addDAccDState

public final void addDAccDState(SpacecraftState s,
                                double[][] dAccdPos,
                                double[][] dAccdVel)
                         throws OrekitException
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 © 2016 CNES. All Rights Reserved.