Class DragForce

All Implemented Interfaces:
ForceModel, EventDetectorsProvider, ParameterDriversProvider

public class DragForce extends AbstractDragForceModel
Atmospheric drag force model. The drag acceleration is computed as follows : γ = (1/2 * ρ * V² * S / Mass) * DragCoefVector With DragCoefVector = {Cx, Cy, Cz} and S given by the user through the interface DragSensitive
Author:
Édouard Delente, Fabien Maussion, Véronique Pommier-Maurussane, Pascal Parraud, Melina Vanel
  • Constructor Details

    • DragForce

      public DragForce(Atmosphere atmosphere, DragSensitive spacecraft)
      Constructor with default flag for finite differences.
      Parameters:
      atmosphere - atmospheric model
      spacecraft - the object physical and geometrical information
    • DragForce

      public DragForce(Atmosphere atmosphere, DragSensitive spacecraft, boolean useFiniteDifferencesOnDensityWrtPosition)
      Simple constructor.
      Parameters:
      atmosphere - atmospheric model
      spacecraft - the object physical and geometrical information
      useFiniteDifferencesOnDensityWrtPosition - flag to use finite differences to compute density derivatives w.r.t. position (is less accurate but can be faster depending on model)
      Since:
      12.1
    • DragForce

      public DragForce(Atmosphere atmosphere, DragSensitive spacecraft, boolean useFiniteDifferencesOnDensityWrtPosition, Atmosphere atmosphereForDerivatives)
      Constructor.
      Parameters:
      atmosphere - atmospheric model
      spacecraft - the object physical and geometrical information
      useFiniteDifferencesOnDensityWrtPosition - flag to use finite differences to compute density derivatives w.r.t. position (is less accurate but can be faster depending on model)
      atmosphereForDerivatives - atmospheric model used for partial derivatives (use fast one for performance)
      Since:
      14.0
  • Method Details

    • dependsOnAttitudeRate

      public boolean dependsOnAttitudeRate()
      Check if force model depends on attitude's rotation rate or acceleration at a given, fixed date. If false, it essentially means that at most the attitude's rotation is used when computing the acceleration vector. The default implementation returns false as common forces do not.
      Returns:
      true if force model depends on attitude derivatives
    • acceleration

      public Vector3D acceleration(SpacecraftState s, double[] parameters)
      Compute acceleration.
      Parameters:
      s - current state information: date, kinematics, attitude
      parameters - values of the force model parameters at state date, only 1 value for each parameterDriver
      Returns:
      acceleration in same frame as state
    • acceleration

      public <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
      Compute acceleration.
      Type Parameters:
      T - type of the elements
      Parameters:
      s - current state information: date, kinematics, attitude
      parameters - values of the force model parameters at state date, only 1 value for each parameterDriver
      Returns:
      acceleration in same frame as state
    • getParametersDrivers

      public List<ParameterDriver> getParametersDrivers()
      Get the drivers for parameters.
      Returns:
      drivers for parameters
    • getSpacecraft

      public DragSensitive getSpacecraft()
      Get spacecraft that are sensitive to atmospheric drag forces.
      Returns:
      drag sensitive spacecraft model