public class DragForce extends JacobiansParameterizable implements ForceModel, GradientModel
The drag acceleration is computed as follows :
γ = (1/2 * k * ρ * V2 * S / Mass) * DragCoefVector
With:
DragSensitive
.The implementation of this class enables the computation of partial derivatives with respect to normal and tangential ballistic coefficients.
Modifier and Type | Field and Description |
---|---|
static String |
K_COEFFICIENT
Parameter name for k coefficient.
|
Constructor and Description |
---|
DragForce(Atmosphere atmosphereIn,
DragSensitive spacecraftIn)
Constructor with multiplicative factor k = 1.0.
|
DragForce(Atmosphere atmosphereIn,
DragSensitive spacecraftIn,
boolean computePDPos,
boolean computePDVel)
Constructor with multiplicative factor k = 1.0.
|
DragForce(double kIn,
Atmosphere atmosphereIn,
Assembly assembly)
Creates a new instance.
|
DragForce(double kIn,
Atmosphere atmosphereIn,
DragSensitive spacecraftIn)
Constructor with multiplicative factor k.
|
DragForce(double kIn,
Atmosphere atmosphereIn,
DragSensitive spacecraftIn,
boolean computePDPos,
boolean computePDVel)
Constructor with multiplicative factor k.
|
DragForce(DragForce otherDragForce,
Assembly assembly)
Creates a new instance from the data in another one but with a different assembly.
|
DragForce(IParamDiffFunction kIn,
Atmosphere atmosphereIn,
DragSensitive spacecraftIn)
Constructor with multiplicative factor k.
|
DragForce(IParamDiffFunction kIn,
Atmosphere atmosphereIn,
DragSensitive spacecraftIn,
boolean computePDPos,
boolean computePDVel)
Constructor with multiplicative factor k.
|
DragForce(Parameter kIn,
Atmosphere atmosphereIn,
DragSensitive spacecraftIn)
Constructor with multiplicative factor k.
|
DragForce(Parameter kIn,
Atmosphere atmosphereIn,
DragSensitive spacecraftIn,
boolean computePDPos,
boolean computePDVel)
Constructor with multiplicative factor k.
|
Modifier and Type | Method and Description |
---|---|
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.
|
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].
|
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.
|
Atmosphere |
getAtmosphere()
Get the atmosphere model.
|
EventDetector[] |
getEventsDetectors()
There are no discrete events for this model.
|
IParamDiffFunction |
getMultiplicativeFactor()
Getter for the multiplicative factor.
|
double |
getMultiplicativeFactor(SpacecraftState state)
Getter for the multiplicative factor used at construction.
|
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
addParameter, getParameters, supportsParameter
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getParameters, supportsParameter
public static final String K_COEFFICIENT
public DragForce(Atmosphere atmosphereIn, DragSensitive spacecraftIn)
atmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationpublic DragForce(Atmosphere atmosphereIn, DragSensitive spacecraftIn, boolean computePDPos, boolean computePDVel)
atmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationcomputePDPos
- if partial derivatives wrt position have to be computedcomputePDVel
- if partial derivatives wrt velocity have to be computedpublic DragForce(double kIn, Atmosphere atmosphereIn, DragSensitive spacecraftIn)
kIn
- drag multiplicative factoratmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationpublic DragForce(double kIn, Atmosphere atmosphereIn, DragSensitive spacecraftIn, boolean computePDPos, boolean computePDVel)
kIn
- multiplicative factoratmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationcomputePDPos
- if partial derivatives wrt position have to be computedcomputePDVel
- if partial derivatives wrt velocity have to be computedpublic DragForce(Parameter kIn, Atmosphere atmosphereIn, DragSensitive spacecraftIn)
kIn
- parameter representing the multiplicative factoratmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationpublic DragForce(Parameter kIn, Atmosphere atmosphereIn, DragSensitive spacecraftIn, boolean computePDPos, boolean computePDVel)
kIn
- parameter representing the multiplicative factoratmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationcomputePDPos
- if partial derivatives wrt position have to be computedcomputePDVel
- if partial derivatives wrt velocity have to be computedpublic DragForce(IParamDiffFunction kIn, Atmosphere atmosphereIn, DragSensitive spacecraftIn)
kIn
- parameterizable function representing the multiplicative factoratmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationpublic DragForce(IParamDiffFunction kIn, Atmosphere atmosphereIn, DragSensitive spacecraftIn, boolean computePDPos, boolean computePDVel)
kIn
- parameterizable function representing the multiplicative factoratmosphereIn
- atmospheric modelspacecraftIn
- the object physical and geometrical informationcomputePDPos
- if partial derivatives wrt position have to be computedcomputePDVel
- if partial derivatives wrt velocity have to be computedpublic DragForce(double kIn, Atmosphere atmosphereIn, Assembly assembly) throws PatriusException
kIn
- multiplicative factoratmosphereIn
- atmosphere modelassembly
- assembly with aerodynamic propertiesPatriusException
- if the assembly does not have only one valid aerodynamic property.public DragForce(DragForce otherDragForce, Assembly assembly) throws PatriusException
otherDragForce
- the other instanceassembly
- the new assemblyPatriusException
- if the assembly does not have only one valid aerodynamic property.public void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws PatriusException
addContribution
in interface ForceModel
s
- the current state information : date, kinematics, attitudeadder
- object where the contribution should be addedPatriusException
- if some specific error occurspublic EventDetector[] getEventsDetectors()
getEventsDetectors
in interface ForceModel
public boolean computeGradientPosition()
computeGradientPosition
in interface GradientModel
public boolean computeGradientVelocity()
computeGradientVelocity
in interface GradientModel
public Vector3D computeAcceleration(SpacecraftState s) throws PatriusException
computeAcceleration
in interface ForceModel
s
- current state information: date, kinematics, attitudeSpacecraftState frame
PatriusException
- if some specific error occurspublic static Vector3D computeAcceleration(PVCoordinates pv, Frame frame, Atmosphere atm, AbsoluteDate date, double kD, double mass) 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 #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.
pv
- PV coordinates of the spacecraft (spherical spacecraft only for the validation)frame
- frame in which the PV coordinates are givenatm
- atmospheredate
- datekD
- Composite drag coefficient (S.Cd/2).mass
- mass of the spacecraftPatriusException
- if an Orekit error occurspublic void addDAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel) throws PatriusException
addDAccDState
in interface IJacobiansParameterizable
s
- spacecraft statedAccdPos
- acceleration derivatives with respect to positiondAccdVel
- acceleration derivatives with respect to velocityPatriusException
- if derivatives cannot be computedpublic void addDAccDParam(SpacecraftState s, Parameter param, double[] dAccdParam) throws PatriusException
addDAccDParam
in interface IJacobiansParameterizable
s
- spacecraft stateparam
- the parameter with respect to which derivatives are requireddAccdParam
- acceleration derivatives with respect to specified parametersPatriusException
- if derivatives cannot be computedpublic IParamDiffFunction getMultiplicativeFactor()
public double getMultiplicativeFactor(SpacecraftState state)
state
- statepublic Atmosphere getAtmosphere()
public void checkData(AbsoluteDate start, AbsoluteDate end) throws PatriusException
checkData
in interface ForceModel
start
- range start dateend
- range end datePatriusException
- thrown if some data is missingCopyright © 2021 CNES. All rights reserved.