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:
config – Satellite 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_cfg – Disturbance 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_cfg – Disturbance 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_cfg – Disturbance 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_cfg – Disturbance 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.
-
class DragDisturbance : public Disturbance#
-
namespace disturbances#