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