Solar Radiation Pressure¶
Solar radiation pressure acceleration and eclipse modeling.
Note
For conceptual explanations and examples, see Solar Radiation Pressure in the Learn section.
SRP Acceleration¶
accel_solar_radiation_pressure builtin ¶
accel_solar_radiation_pressure(r_object: ndarray, r_sun: ndarray, mass: float, cr: float, area: float, p0: float) -> ndarray
Calculate acceleration due to solar radiation pressure.
Accepts either a 3D position vector or a 6D state vector for r_object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r_object | ndarray | Position (length 3) or state (length 6) of the object. Units: (m) | required |
r_sun | ndarray | Position vector of the sun. Units: (m) | required |
mass | float | Mass of the object. Units: (kg) | required |
cr | float | Coefficient of reflectivity (dimensionless) | required |
area | float | Cross-sectional area of the object. Units: (m²) | required |
p0 | float | Solar radiation pressure at 1 AU. Units: (N/m²) | required |
Returns:
| Type | Description |
|---|---|
ndarray | np.ndarray: Acceleration due to solar radiation pressure. Units: (m/s²) |
Eclipse Modeling¶
eclipse_conical builtin ¶
Calculate the fraction of the object illuminated by the sun using a conical (penumbral) shadow model.
The conical shadow model accounts for the finite size of both the Sun and Earth, modeling the penumbra region where the satellite receives partial sunlight. This is more accurate than the cylindrical model but computationally more expensive.
Accepts either a 3D position vector or a 6D state vector for r_object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r_object | ndarray | Position (length 3) or state (length 6) of the object in ECI frame. Units: (m) | required |
r_sun | ndarray | Position vector of the sun in ECI frame. Units: (m) | required |
Returns:
| Name | Type | Description |
|---|---|---|
float | float | Illumination fraction between 0.0 and 1.0. Values: 0.0 (full shadow/umbra), 0.0-1.0 (partial shadow/penumbra), 1.0 (full sunlight) |
eclipse_cylindrical builtin ¶
Calculate the fraction of the object illuminated by the sun using a cylindrical shadow model.
The cylindrical shadow model is a simplified approach that assumes Earth casts a cylindrical shadow parallel to the Sun-Earth line. This model is computationally efficient and provides binary shadow determination (fully lit or fully shadowed, no penumbra).
Accepts either a 3D position vector or a 6D state vector for r_object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r_object | ndarray | Position (length 3) or state (length 6) of the object in ECI frame. Units: (m) | required |
r_sun | ndarray | Position vector of the sun in ECI frame. Units: (m) | required |
Returns:
| Name | Type | Description |
|---|---|---|
float | float | Illumination fraction, either 0.0 (full shadow) or 1.0 (full sunlight). No partial illumination is returned by this model. |
Example
Arbitrary Occulting Body¶
eclipse_conical_for_body builtin ¶
eclipse_conical_for_body(r_object: ndarray, r_sun: ndarray, r_occulter: ndarray, radius_occulter: float) -> float
Calculate the fraction of the object illuminated by the sun using a conical model for shadowing by an arbitrary occulting body.
Generalizes eclipse_conical to shadowing by a body other than Earth (e.g. the Moon or Mars). eclipse_conical is equivalent to calling this with the occulter at the origin and radius_occulter = R_EARTH.
Accepts either a 3D position vector or a 6D state vector for r_object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r_object | ndarray | Position (length 3) or state (length 6) of the object. Units: (m) | required |
r_sun | ndarray | Position vector of the sun. Units: (m) | required |
r_occulter | ndarray | Position vector of the occulting body. Units: (m) | required |
radius_occulter | float | Mean physical radius of the occulting body. Units: (m) | required |
Returns:
| Name | Type | Description |
|---|---|---|
float | float | Illumination fraction of the object (0.0 = fully shadowed, 1.0 = fully illuminated). |
Example
eclipse_cylindrical_for_body builtin ¶
eclipse_cylindrical_for_body(r_object: ndarray, r_sun: ndarray, r_occulter: ndarray, radius_occulter: float) -> float
Calculate the fraction of the object illuminated by the sun using a cylindrical model for shadowing by an arbitrary occulting body.
Generalizes eclipse_cylindrical to shadowing by a body other than Earth (e.g. the Moon or Mars). eclipse_cylindrical is equivalent to calling this with the occulter at the origin and radius_occulter = R_EARTH.
Accepts either a 3D position vector or a 6D state vector for r_object.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
r_object | ndarray | Position (length 3) or state (length 6) of the object. Units: (m) | required |
r_sun | ndarray | Position vector of the sun. Units: (m) | required |
r_occulter | ndarray | Position vector of the occulting body. Units: (m) | required |
radius_occulter | float | Mean physical radius of the occulting body. Units: (m) | required |
Returns:
| Name | Type | Description |
|---|---|---|
float | float | Illumination fraction, either 0.0 (full shadow) or 1.0 (full sunlight). |
Example
See Also¶
- Solar Radiation Pressure (Learn) - Conceptual explanation and examples
- Propagation Around Other Central Bodies -
OccultingBodyand non-Earth propagation - Orbital Dynamics Module - Complete orbit dynamics API reference