fr.cnes.sirius.patrius.stela.forces.drag
Class StelaAeroModel

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by fr.cnes.sirius.patrius.stela.forces.drag.StelaAeroModel
All Implemented Interfaces:
Serializable, DragSensitive, IParameterizable, JacobianParametersProvider

public final class StelaAeroModel
extends Parameterizable
implements DragSensitive

This class represents a STELA aero model, based on a spherical spacecraft.

It contains the STELA algorithm for the drag computation, as well as the STELA algorithm for the computation of the partial derivatives with respect to position and velocity, in the TNW frame.
As this class is an implementation of the DragSensitive interface, it is intended to be used in the StelaAtmosphericDrag class.

Since:
1.3
Version:
$Id: StelaAeroModel.java 17584 2017-05-10 13:26:39Z bignon $
Author:
Tiziana Sabatini
See Also:
AeroModel, StelaAtmosphericDrag, Serialized Form
Concurrency :
immutable

Constructor Summary
StelaAeroModel(double inMass, StelaCd inCd, double inSurface)
          Constructor to be used when partial derivatives should not be computed.
StelaAeroModel(double inMass, StelaCd inCd, double inSurface, Atmosphere inAtmosphere, double atmosDX)
          Constructor to be used when partial derivatives are computed using the full finite differences method.
StelaAeroModel(double inMass, StelaCd inCd, double inSurface, Atmosphere inAtmosphere, double atmosDH, GeodPosition inGeodPosition)
          Constructor to be used when partial derivatives are computed using the altitude finite differences method.
 
Method Summary
 void addDDragAccDParam(SpacecraftState s, Parameter param, double density, Vector3D relativeVelocity, double[] dAccdParam)
          Compute acceleration derivatives with respect to additional parameters (the ballistic coefficient).
 void addDDragAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel, double density, Vector3D acceleration, Vector3D relativeVelocity, boolean computeGradientPosition, boolean computeGradientVelocity)
          Compute acceleration derivatives with respect to state parameters (position and velocity).
 Vector3D dragAcceleration(SpacecraftState state, double density, Vector3D relativeVelocity)
          Return the drag acceleration in the CIRF frame.
 ArrayList<Parameter> getJacobianParameters()
          Get the list of all jacobian parameters supported.
 
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
 

Constructor Detail

StelaAeroModel

public StelaAeroModel(double inMass,
                      StelaCd inCd,
                      double inSurface)
               throws OrekitException
Constructor to be used when partial derivatives should not be computed.

Parameters:
inMass - the spacecraft mass.
inCd - the spacecraft drag coefficient.
inSurface - the spacecraft cross section (m2).
Throws:
OrekitException - if the frame factory fails.

StelaAeroModel

public StelaAeroModel(double inMass,
                      StelaCd inCd,
                      double inSurface,
                      Atmosphere inAtmosphere,
                      double atmosDX)
               throws OrekitException
Constructor to be used when partial derivatives are computed using the full finite differences method.

Parameters:
inMass - the spacecraft mass.
inCd - the spacecraft drag coefficient.
inSurface - the spacecraft cross section (m2).
inAtmosphere - the atmospheric model
atmosDX - dX in atmospheric density derivatives full finite differences computation
Throws:
OrekitException - if the frame factory fails.

StelaAeroModel

public StelaAeroModel(double inMass,
                      StelaCd inCd,
                      double inSurface,
                      Atmosphere inAtmosphere,
                      double atmosDH,
                      GeodPosition inGeodPosition)
               throws OrekitException
Constructor to be used when partial derivatives are computed using the altitude finite differences method.

Parameters:
inMass - the spacecraft mass.
inCd - the spacecraft drag coefficient.
inSurface - the spacecraft cross section (m2).
inAtmosphere - the atmospheric model
atmosDH - dH in atmospheric density derivatives altitude finite differences computation
inGeodPosition - the spacecraft geodetic position model
Throws:
OrekitException - if the frame factory fails.
Method Detail

dragAcceleration

public Vector3D dragAcceleration(SpacecraftState state,
                                 double density,
                                 Vector3D relativeVelocity)
                          throws OrekitException
Return the drag acceleration in the CIRF frame.

Specified by:
dragAcceleration in interface DragSensitive
Parameters:
state - current state information: date, kinematics, attitude
density - atmospheric density at spacecraft position
relativeVelocity - relative velocity of atmosphere with respect to spacecraft, in the same inertial frame as spacecraft orbit (m/s)
Returns:
spacecraft acceleration in the celestial mean of date. (m/s2)
Throws:
OrekitException - if acceleration cannot be computed
See Also:
DragSensitive.dragAcceleration(org.orekit.propagation.SpacecraftState, double, org.apache.commons.math3.geometry.euclidean.threed.Vector3D)

addDDragAccDParam

public void addDDragAccDParam(SpacecraftState s,
                              Parameter param,
                              double density,
                              Vector3D relativeVelocity,
                              double[] dAccdParam)
                       throws OrekitException
Description copied from interface: DragSensitive
Compute acceleration derivatives with respect to additional parameters (the ballistic coefficient).

Specified by:
addDDragAccDParam in interface DragSensitive
Parameters:
s - spacecraft state
param - parameter
density - the atmospheric density value
relativeVelocity - relative velocity of atmosphere with respect to spacecraft, in the same inertial frame as spacecraft orbit (m/s)
dAccdParam - acceleration derivatives with respect to ballistic coefficient
Throws:
OrekitException - if derivatives cannot be computed

addDDragAccDState

public void addDDragAccDState(SpacecraftState s,
                              double[][] dAccdPos,
                              double[][] dAccdVel,
                              double density,
                              Vector3D acceleration,
                              Vector3D relativeVelocity,
                              boolean computeGradientPosition,
                              boolean computeGradientVelocity)
                       throws OrekitException
Description copied from interface: DragSensitive
Compute acceleration derivatives with respect to state parameters (position and velocity).

Specified by:
addDDragAccDState in interface DragSensitive
Parameters:
s - spacecraft state
dAccdPos - acceleration derivatives with respect to position parameters
dAccdVel - acceleration derivatives with respect to velocity parameters
density - the atmospheric density value
acceleration - the spacecraft acceleration in the inertial frame
relativeVelocity - relative velocity of atmosphere with respect to spacecraft, in the same inertial frame as spacecraft orbit (m/s)
computeGradientPosition - true if partial derivatives with respect to position should be computed
computeGradientVelocity - true if partial derivatives with respect to position should be computed
Throws:
OrekitException - if derivatives cannot be computed

getJacobianParameters

public ArrayList<Parameter> getJacobianParameters()
Get the list of all jacobian parameters supported.

Specified by:
getJacobianParameters in interface JacobianParametersProvider
Returns:
the list of additional parameters for which the jacobians can be computed.


Copyright © 2017 CNES. All Rights Reserved.