nPlateSRP#
- class nPlateSRP(state_vector: StateArray, spacecraft: Spacecraft, base_frame: Frame)#
Bases:
DynamicModelModels the acceleration due to Solar Radiation Pressure (SRP) using an N-plate model.
The spacecraft is decomposed into \(N\) flat plates, each with its own area, surface normal, specular reflectivity \(\rho_s\), and diffuse reflectivity \(\rho_d\). For each illuminated plate \(i\) (i.e., \(\hat{\mathbf{n}}_i \cdot \hat{\mathbf{s}} > 0\)), the SRP acceleration contribution is:
\[\mathbf{a}_i = -\frac{\nu\, P_\odot}{m} \left(\frac{r_\odot}{r}\right)^2 A_i \left(\hat{\mathbf{n}}_i \cdot \hat{\mathbf{r}}_\odot\right) \left[ (1 - \rho_s)\,\hat{\mathbf{r}}_\odot + 2\rho_s \left(\hat{\mathbf{n}}_i \cdot \hat{\mathbf{r}}_\odot\right) \hat{\mathbf{n}}_i + \tfrac{2}{3}\rho_d\,\hat{\mathbf{n}}_i \right]\]where \(\nu\) is the shadow factor (0 in eclipse, 1 in full Sun), \(P_\odot\) is the solar radiation pressure at 1 AU, \(r_\odot / r\) is the inverse-square scaling with heliocentric distance, and \(\hat{\mathbf{r}}_\odot\) is the unit vector from the spacecraft to the Sun (direction of incoming radiation); the dot product \(\hat{\mathbf{n}}_i \cdot \hat{\mathbf{r}}_\odot > 0\) selects illuminated plates, and the leading minus sign yields acceleration directed away from the Sun. The total acceleration is:
\[\mathbf{a}_\text{SRP} = \eta_\text{SRP} \sum_{i=1}^{N} \mathbf{a}_i\]where \(\eta_\text{SRP}\) is an estimable scale factor (default 1) retrieved from the state vector via a
("eta_srp", spice_id)entry and can be solved for in the OD process.- Parameters:
state_vector (
StateArray) – The state vector of the spacecraft containing position, velocity, and other estimated parameters.spacecraft (
Spacecraft) – The spacecraft containing physical and plate model properties.
See also
scarabaeus.StateArrayRepresents state vectors with origins and reference frames.
scarabaeus.SpacecraftDefines spacecraft properties including mass and area.
scarabaeus.PropagatorUses this model when
nPlate_SRP = True.scarabaeus.CannonballSRPLower fidelity model for calculating SRP. Raises —— ValueError If any plate area in the n-plate model is not expressed in km². Notes —– The Sun’s position is retrieved dynamically from SPICE data.
References
P. W. Kenneally, “High geometric fidelity solar radiation pressure modeling via graphics processing unit,” Master’s thesis, Colorado Boulder, 2016.
- Attributes:
P_SRPThe precomputed SRP constant for scaling factors.
areaThe total surface area of the spacecraft.
eta_srpThe SRP scale factor.
frameThe reference frame in which SRP calculations are performed.
originThe celestial body that serves as the origin for the state vector.
origin_nameThe name of the origin body.
plate_modelThe associated nPlateModel used to calculate SRP.
ref_coeffThe reflectivity coefficient of the spacecraft.
spacecraftThe spacecraft associated with the SRP model.
Methods
compute_acceleration(position, ...)Computes the acceleration due to solar radiation pressure (SRP) based on the n-plate model.
inertial_to_body_DCM(epoch[, tol])Computes the Direction Cosine Matrix (DCM) to transform vectors from the inertial frame to the spacecraft-fixed frame.
- compute_acceleration(position: ndarray, current_state: dict, epoch: float, body: Spacecraft) ndarray#
Computes the acceleration due to solar radiation pressure (SRP) based on the n-plate model.
Calculates the contribution of each spacecraft plate to the total acceleration, considering reflection, absorption, and the relative orientation of the spacecraft with respect to the Sun.
- Parameters:
position (
np.ndarray) – 3x1 vector describing the spacecraft’s position. Assumed in units of kilometers.current_state (
dict) – Dictionary containing the current state parameters.epoch (
float) – Current simulation epoch in seconds.body (
Spacecraft) – The spacecraft for which SRP acceleration is calculated.
- Returns:
total_srp_acc – 3x1 vector describing the total SRP acceleration. Assumed in units of \(\frac{km}{s^2}\).
- Return type:
np.ndarrays
- inertial_to_body_DCM(epoch: EpochArray, tol: int = 50) float#
Computes the Direction Cosine Matrix (DCM) to transform vectors from the inertial frame to the spacecraft-fixed frame.
- Parameters:
epoch (
EpochArray) – The current epoch given in ephemeris time (seconds past J2000).tol (
int, optional) – The time tolerance for retrieving attitude and angular velocity from the specified spacecraft clock time. Defaults to50.
- Returns:
dcm – The DCM for transforming inertial vectors to spacecraft-fixed coordinates.
- Return type:
np.ndarray
Notes
The
epochparameter is converted from ephemeris time to continuous encoded spacecraft clock “ticks”. Due to this, the time tolerance should be given as sclock ticks and not seconds.
- property P_SRP: float#
The precomputed SRP constant for scaling factors. Expressed in units of \(\frac{N}{m^2}\).
- property area: float#
The total surface area of the spacecraft. Expressed in units of square meters.
- property plate_model: nPlateModel#
The associated nPlateModel used to calculate SRP.
- property spacecraft: Spacecraft#
The spacecraft associated with the SRP model.