6. nPlateSRP#
- class nPlateSRP(state_vector: StateArray, spacecraft: Spacecraft, base_frame: Frame)#
Bases:
DynamicModel
Models the acceleration due to Solar Radiation Pressure (SRP) using an N-plate model.
Assumes that the spacecraft is composed of N plates whith material properties. The interaction of each plate with solar radiation pressure is evaluated based on geometric consideration and material properties to generate the total acceleration imparted on the spacecraft.
- 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.StateArray
Represents state vectors with origins and reference frames.
scarabaeus.Spacecraft
Defines spacecraft properties including mass and area.
scarabaeus.Propagator
Uses this model when
nPlate_SRP = True
.scarabaues.CannonballSRP
Lower fidelity model for calculating SRP.
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
The precomputed SRP constant for scaling factors.
The total surface area of the spacecraft.
The reference frame in which SRP calculations are performed.
The mass of the spacecraft.
The celestial body that serves as the origin for the state vector.
The name of the origin body.
The absorption coefficients of the plates.
The areas of the plates.
The coefficients of reflection for the plates.
The diffuse reflectivity coefficients of the plates.
The names of the plates.
The specular reflectivity coefficients of the plates.
The types of the plates.
The unit vectors of the plates.
The reflectivity coefficient of the spacecraft.
The 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.
compute_partial_by_eta
(position, ...)Computes the partial derivative of SRP acceleration with respect to the SRP scale factor (eta_srp).
compute_partial_by_position
(position, ...)Computes the partial derivatives of the SRP acceleration with respect to position.
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: ArrayWUnits, current_state: dict, epoch: float, body: Spacecraft) ArrayWUnits #
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 (
ArrayWUnits
) – 3x1 vector describing the spacecraft’s position. Expressed 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. Expressed in units of \(\frac{km}{s^2}\).
- Return type:
- compute_partial_by_eta(position: ArrayWUnits, current_state: dict, epoch: float, body: Spacecraft) ArrayWUnits #
Computes the partial derivative of SRP acceleration with respect to the SRP scale factor (eta_srp).
This method determines how changes in the SRP scale factor affect the acceleration.
- Parameters:
position (
ArrayWUnits
) – 3x1 vector describing the spacecraft’s position. Expressed 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:
partial_by_eta – 3x1 vector describing the partial derivative of SRP acceleration with respect to
eta_srp
. Expressed in units of \(\frac{km}{s^2}\).- Return type:
- compute_partial_by_position(position: ArrayWUnits, current_state: dict, epoch: float, body: Spacecraft) ArrayWUnits #
Computes the partial derivatives of the SRP acceleration with respect to position.
Determines how the SRP acceleration varies as a function of the spacecraft’s position relative to the Sun.
- Parameters:
position (
ArrayWUnits
) – 3x1 vector describing the spacecraft’s position. Expressed 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:
jacobian – The 3x3 Jacobian matrix of SRP acceleration with respect to position. Expressed in units of \(\frac{1}{s^2}\).
- Return type:
- inertial_to_body_DCM(epoch: EpochArray, tol: int = 50) ArrayWUnits #
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:
Notes
The
epoch
parameter 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: ArrayWUnits#
The precomputed SRP constant for scaling factors. Expressed in units of \(\frac{N}{m^2}\).
- property area: ArrayWUnits#
The total surface area of the spacecraft. Expressed in units of square meters.
- property mass: ArrayWUnits#
The mass of the spacecraft. Expressed in units of kilograms.
- property plates_abs: list[ArrayWUnits]#
The absorption coefficients of the plates. Unitless.
- property plates_areas: list[ArrayWUnits]#
The areas of the plates. Expressed in units of square meters.
- property plates_crs: list[ArrayWUnits]#
The coefficients of reflection for the plates. Unitless.
- property plates_dref: list[ArrayWUnits]#
The diffuse reflectivity coefficients of the plates. Unitless.
- property plates_sref: list[ArrayWUnits]#
The specular reflectivity coefficients of the plates. Unitless.
- property plates_u_vectors: list[ArrayWUnits]#
The unit vectors of the plates. Unitless.
- property ref_coeff: ArrayWUnits#
The reflectivity coefficient of the spacecraft. Unitless.
- property spacecraft: Spacecraft#
The spacecraft associated with the SRP model.