dragdisturbance#

namespace saltro
namespace disturbances#
class DragDisturbance : public Disturbance#
#include <dragdisturbance.h>

Aerodynamic drag disturbance model.

Computes torque due to aerodynamic drag acting on the spacecraft’s surfaces. The drag force depends on atmospheric density (which varies along the orbit) and the spacecraft’s velocity relative to the atmosphere.

The total drag torque is computed as the sum of torques from all surface faces:

\[ \boldsymbol{\tau}_{\text{drag}} = \sum_i C_D^i \rho A_i (\mathbf{v} \cdot \mathbf{n}_i) \mathbf{r}_i \times \mathbf{v} \]
where:
  • \(C_D^i\) is the drag coefficient of face \(i\)

  • \(A_i\) is the surface area

  • \(\mathbf{n}_i\) is the surface normal

  • \(\mathbf{r}_i\) is the centroid position relative to center of mass

See also

GeometryConfig for satellite geometry definition

Public Types

using Vec3 = Eigen::Vector3d#
using BaseState = ::Disturbance::BaseState#
using Mat34 = ::Disturbance::Mat34#
using Mat44 = ::Disturbance::Mat44#
using T443 = ::Disturbance::T443#

Public Functions

DragDisturbance() = default#

Default constructor; creates disturbance with empty geometry.

explicit DragDisturbance(const GeometryConfig &config)#

Construct a drag disturbance with specified geometry.

Parameters:

configSatellite geometry configuration (faces and their properties).

inline void setGeometryConfig(const GeometryConfig &config)#

Set the satellite geometry configuration.

Parameters:

config – New geometry.

inline const GeometryConfig &geometryConfig() const#

Get the geometry configuration.

Returns:

Const reference to geometry.

virtual Vec3 torque(const BaseState &x, const DisturbanceConfig &dist_cfg) const override#

Compute drag torque.

Evaluates drag disturbance given the state and configuration. The velocity vector must be provided separately.

Parameters:
  • x – Base state (primarily for quaternion).

  • dist_cfgDisturbance configuration (drag coefficient scaling).

Returns:

3D drag torque in body frame.

Vec3 torque(const BaseState &x, const DisturbanceConfig &dist_cfg, const Vec3 &v_body) const#

Compute drag torque with explicit velocity.

Extended interface allowing direct velocity input.

Parameters:
  • x – Base state.

  • dist_cfgDisturbance configuration.

  • v_body – Velocity vector in body frame (m/s).

Returns:

3D drag torque.

Mat34 dtorque_dq(const BaseState &x, const DisturbanceConfig &dist_cfg, const Vec3 &v_body, const Mat34 &dV_dq) const#

Jacobian of drag torque with respect to quaternion.

Parameters:
  • x – Base state.

  • dist_cfgDisturbance configuration.

  • v_body – Velocity in body frame.

  • dV_dq – Jacobian of velocity with respect to quaternion (4×3).

Returns:

3×4 Jacobian matrix.

T443 ddtorque_dqdq(const BaseState &x, const DisturbanceConfig &dist_cfg, const Vec3 &v_body, const Mat34 &dV_dq, const std::array<Mat44, 3> &d2V_dq2) const#

Hessian of drag torque with respect to quaternion.

Parameters:
  • x – Base state.

  • dist_cfgDisturbance configuration.

  • v_body – Velocity in body frame.

  • dV_dq – Jacobian of velocity with respect to quaternion.

  • d2V_dq2 – Array of three 4×4 Hessian matrices for velocity.

Returns:

Tensor3 with 3 slices of 4×4 matrices.

Private Members

GeometryConfig config_#

Satellite geometry.