CannonballSRP#
- class CannonballSRP(state_array: StateArray, spacecraft: Spacecraft, base_frame: Frame)#
Bases:
DynamicModelModels the acceleration due to Solar Radiation Pressure (SRP) using the cannonball model.
The spacecraft is treated as a perfect sphere that reflects solar radiation isotropically. The SRP acceleration is:
\[\mathbf{a}_\text{SRP} = -\frac{\nu\,\eta_\text{SRP}\, C_R\, A}{m} \left(\frac{r_0}{r}\right)^2 P_0\, \hat{\mathbf{r}}_\odot\]where \(\nu\) is the shadow factor (0 in eclipse, 1 in full Sun), \(\eta_\text{SRP}\) is an estimable scale factor (default 1), \(C_R = 1 + \rho_s\) is the reflectivity coefficient, \(A\) is the spacecraft cross-sectional area, \(m\) is the spacecraft mass, \(r_0\) is the reference distance (1 AU), \(r\) is the Sun–spacecraft distance, \(P_0\) is the solar radiation pressure at 1 AU, and \(\hat{\mathbf{r}}_\odot\) is the unit vector from the spacecraft to the Sun (direction of incoming radiation; the leading minus sign means the acceleration is directed away from the Sun). \(\eta_\text{SRP}\) is retrieved from the state vector via a
("eta_srp", spice_id)entry and can be solved for in the OD process.- Parameters:
state_array (
StateArray) – The state vector of the spacecraft containing position, velocity, and other estimated parameters.spacecraft (
Spacecraft) – The spacecraft object with defined mass, cross-sectional area, and reflectivity coefficient.base_frame (
Frame) – Frame of the propagator.
See also
scarabaeus.StateArrayRepresents state vectors with origins and reference frames.
scarabaeus.SpacecraftDefines spacecraft properties including mass and area.
scarabaeus.PropagatorUses this model when cannonball_SRP=True.
Notes
The model assumes uniform reflection across the entire spacecraft surface.
The Sun’s position is retrieved dynamically from SPICE data.
The acceleration follows an inverse-square law based on Sun-spacecraft distance.
References
Montenbruck, O., & Gill, E. (2000). Satellite Orbits: Models, Methods, and Applications.
Examples
# intial setup import scarabaeus as scb # Define spacecraft properties mass = scb.ArrayWUnits(500, "kg") # Spacecraft mass area = scb.ArrayWUnits(20, "m^2") # Cross-sectional area reflectivity = 1.3 # Reflectivity coefficient # Create spacecraft object sc = scb.Spacecraft("Test_Sat", -1000, mass, area, reflectivity) # Define state vector with position, velocity, and SRP coefficient state = [ ( "position", 3, "estimated", "dynamic", sc, scb.ArrayWUnits([7000, 0, 0], "km"), ), ( "velocity", 3, "estimated", "dynamic", sc, scb.ArrayWUnits([0, 7.5, 0], "km/s"), ), ("eta_srp", 1, "estimated", "static", sc, scb.ArrayWUnits(1, None)), ] # Create state vector state_vector = scb.StateArray(epoch = epochs[0], frame = 'J2000', origin = scb.CelestialBody('Earth'), state = state) # Initialize propagator with Cannonball SRP enabled prop = scb.Propagator(sc, state_vector, epochs, cannonball_SRP = True) prop.propagate()
- Attributes:
areaThe cross-sectional area of the spacecraft.
eta_srpThe SRP scale factor.
massThe mass of the spacecraft, typically expressed in units of kilograms.
originThe celestial body that serves as the origin for the state vector.
origin_nameThe name of the origin body.
p_srpSolar radiation pressure constant at 1 AU, in units of kg·km·s⁻².
ref_coeffThe reflectivity coefficient of the spacecraft.
ref_frameThe reference frame in which SRP calculations are performed.
Methods
compute_acceleration(position, ...)Computes the acceleration due to solar radiation pressure (SRP).
- compute_acceleration(position: ndarray, current_state: dict, epoch: float, body: Body) ndarray#
Computes the acceleration due to solar radiation pressure (SRP).
This method calculates the SRP acceleration experienced by the spacecraft based on its distance from the Sun and its physical properties.
- Parameters:
position (
np.ndarray) – Spacecraft position vector in the reference frame (size: 3x1, units: km).current_state (
dict) – Dictionary containing the current state parameters, including eta_srp.epoch (
float) – The current simulation epoch.body (
Body) – The spacecraft for which SRP acceleration is computed.
- Returns:
srp_vec – The SRP acceleration vector (size: 3x1, units: km/s^2).
- Return type:
np.ndarray
- property mass: float#
The mass of the spacecraft, typically expressed in units of kilograms.
- Base:
CannonballSRP
- Type:
- property origin: Body#
The celestial body that serves as the origin for the state vector.
- Base:
CannonballSRP
- Type:
- property p_srp: float#
Solar radiation pressure constant at 1 AU, in units of kg·km·s⁻².
Converted at construction time from the
"srpP_constant"entry inscarabaeus.Constants.CONSTANTS.- Base:
CannonballSRP
- Type: