org.orekit.forces.drag
Class DragForce

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by org.orekit.parameter.JacobiansParameterizable
          extended by org.orekit.forces.drag.DragForce
All Implemented Interfaces:
Serializable, ForceModel, GradientModel, IJacobiansParameterizable, IParameterizable

public class DragForce
extends JacobiansParameterizable
implements ForceModel, GradientModel

Atmospheric drag force model.

The drag acceleration is computed as follows : γ = (1/2 * k * ρ * V2 * S / Mass) * DragCoefVector
With:

The implementation of this class enables the computation of partial derivatives with respect to normal and tangential ballistic coefficients.

Author:
Édouard Delente, Fabien Maussion, Véronique Pommier-Maurussane, Pascal Parraud
See Also:
Serialized Form

Field Summary
static String K_COEFFICIENT
          Parameter name for k coefficient.
 
Constructor Summary
DragForce(Atmosphere atmosphere, DragSensitive spacecraft)
          Constructor with multiplicative factor k = 1.0.
DragForce(Atmosphere atmosphere, DragSensitive spacecraft, boolean computePDPos, boolean computePDVel)
          Constructor with multiplicative factor k = 1.0.
DragForce(double k, Atmosphere atmosphere, DragSensitive spacecraft)
          Constructor with multiplicative factor k.
DragForce(double k, Atmosphere atmosphere, DragSensitive spacecraft, boolean computePDPos, boolean computePDVel)
          Constructor with multiplicative factor k.
DragForce(IParamDiffFunction k, Atmosphere atmosphere, DragSensitive spacecraft)
          Constructor with multiplicative factor k.
DragForce(IParamDiffFunction k, Atmosphere atmosphere, DragSensitive spacecraft, boolean computePDPos, boolean computePDVel)
          Constructor with multiplicative factor k.
DragForce(Parameter k, Atmosphere atmosphere, DragSensitive spacecraft)
          Constructor with multiplicative factor k.
DragForce(Parameter k, Atmosphere atmosphere, DragSensitive spacecraft, boolean computePDPos, boolean computePDVel)
          Constructor with multiplicative factor k.
 
Method Summary
 void addContribution(SpacecraftState s, TimeDerivativesEquations adder)
          Compute the contribution of the drag 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.
static Vector3D computeAcceleration(PVCoordinates pv, Frame frame, Atmosphere atm, AbsoluteDate date, double kD, double mass)
           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()
          There are no discrete events for this model.
 
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

K_COEFFICIENT

public static final String K_COEFFICIENT
Parameter name for k coefficient.

See Also:
Constant Field Values
Constructor Detail

DragForce

public DragForce(Atmosphere atmosphere,
                 DragSensitive spacecraft)
Constructor with multiplicative factor k = 1.0.

Parameters:
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information

DragForce

public DragForce(Atmosphere atmosphere,
                 DragSensitive spacecraft,
                 boolean computePDPos,
                 boolean computePDVel)
Constructor with multiplicative factor k = 1.0.

Parameters:
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information
computePDPos - if partial derivatives wrt position have to be computed
computePDVel - if partial derivatives wrt velocity have to be computed

DragForce

public DragForce(double k,
                 Atmosphere atmosphere,
                 DragSensitive spacecraft)
Constructor with multiplicative factor k.

Parameters:
k - drag multiplicative factor
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information

DragForce

public DragForce(double k,
                 Atmosphere atmosphere,
                 DragSensitive spacecraft,
                 boolean computePDPos,
                 boolean computePDVel)
Constructor with multiplicative factor k.

Parameters:
k - multiplicative factor
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information
computePDPos - if partial derivatives wrt position have to be computed
computePDVel - if partial derivatives wrt velocity have to be computed

DragForce

public DragForce(Parameter k,
                 Atmosphere atmosphere,
                 DragSensitive spacecraft)
Constructor with multiplicative factor k.

Parameters:
k - parameter representing the multiplicative factor
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information

DragForce

public DragForce(Parameter k,
                 Atmosphere atmosphere,
                 DragSensitive spacecraft,
                 boolean computePDPos,
                 boolean computePDVel)
Constructor with multiplicative factor k.

Parameters:
k - parameter representing the multiplicative factor
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information
computePDPos - if partial derivatives wrt position have to be computed
computePDVel - if partial derivatives wrt velocity have to be computed

DragForce

public DragForce(IParamDiffFunction k,
                 Atmosphere atmosphere,
                 DragSensitive spacecraft)
Constructor with multiplicative factor k.

Parameters:
k - parameterizable function representing the multiplicative factor
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information

DragForce

public DragForce(IParamDiffFunction k,
                 Atmosphere atmosphere,
                 DragSensitive spacecraft,
                 boolean computePDPos,
                 boolean computePDVel)
Constructor with multiplicative factor k.

Parameters:
k - parameterizable function representing the multiplicative factor
atmosphere - atmospheric model
spacecraft - the object physical and geometrical information
computePDPos - if partial derivatives wrt position have to be computed
computePDVel - if partial derivatives wrt velocity have to be computed
Method Detail

addContribution

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

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

getEventsDetectors

public EventDetector[] getEventsDetectors()
There are no discrete events for this model.

Specified by:
getEventsDetectors in interface ForceModel
Returns:
an empty array

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 static Vector3D computeAcceleration(PVCoordinates pv,
                                           Frame frame,
                                           Atmosphere atm,
                                           AbsoluteDate date,
                                           double kD,
                                           double mass)
                                    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 #V84 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)

In the validation context, we assume that the multiplicative factor is equal to 1.

Parameters:
pv - PV coordinates of the spacecraft (spherical spacecraft only for the validation)
frame - frame in which the PV coordinates are given
atm - atmosphere
date - date
kD - Composite drag coefficient (S.Cd/2).
mass - mass of the spacecraft
Returns:
acceleration
Throws:
OrekitException - if an Orekit error occurs

addDAccDState

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

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.