srpdisturbance#

namespace saltro
namespace disturbances
class SRPDisturbance : public Disturbance#
#include <srpdisturbance.h>

Solar radiation pressure (SRP) disturbance model.

Computes torque due to solar radiation pressure acting on the spacecraft’s surfaces. The SRP force depends on solar irradiance and the reflective/absorptive properties of each surface element.

For each face, the SRP force is:

\[ \mathbf{F}_i = \frac{I}{c} A_i \left[\eta_a \mathbf{s} + 2(\eta_s + \eta_d \cos\theta) (\mathbf{s} \cdot \mathbf{n}_i) \mathbf{n}_i\right] \]

where:

  • \(I\) is solar irradiance (W/m²)

  • \(c\) is speed of light

  • \(\eta_a, \eta_s, \eta_d\) are absorptivity and reflection coefficients

  • \(\mathbf{s}\) is the unit sun direction

  • \(\theta\) is the incident angle

The torque is the sum of all face torques: \(\boldsymbol{\tau} = \sum_i \mathbf{r}_i \times \mathbf{F}_i\)

See also

GeometryConfig for satellite geometry definition

Public Types

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

Public Functions

SRPDisturbance() = default#

Default constructor; creates disturbance with empty geometry.

explicit SRPDisturbance(const GeometryConfig &config)#

Construct an SRP disturbance with specified geometry.

Parameters:

configSatellite geometry configuration (faces and optical 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 SRP torque.

Evaluates solar radiation pressure disturbance given the state and configuration. The sun direction vector must be provided separately.

Parameters:
  • x – Base state (contains quaternion for frame transformations).

  • dist_cfgDisturbance configuration (SRP coefficient scaling).

Returns:

3D SRP torque in body frame.

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

Compute SRP torque with explicit sun direction.

Extended interface allowing direct sun direction input.

Parameters:
  • x – Base state.

  • dist_cfgDisturbance configuration.

  • v_body – Sun direction vector in body frame (unit vector).

Returns:

3D SRP torque.

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

Jacobian of SRP torque with respect to quaternion.

Parameters:
  • x – Base state.

  • dist_cfgDisturbance configuration.

  • v_body – Sun direction in body frame.

  • dV_dq – Jacobian of sun direction 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 SRP torque with respect to quaternion.

Parameters:
  • x – Base state.

  • dist_cfgDisturbance configuration.

  • v_body – Sun direction in body frame.

  • dV_dq – Jacobian of sun direction with respect to quaternion.

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

Returns:

Tensor3 with 3 slices of 4×4 matrices.

Private Members

GeometryConfig config_#

Satellite geometry.