6. 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.
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.StateArrayRepresents state vectors with origins and reference frames.
scarabaeus.SpacecraftDefines spacecraft properties including mass and area.
scarabaeus.PropagatorUses this model when
nPlate_SRP = True.scarabaues.CannonballSRPLower 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 SRP scale factor.
The reference frame in which SRP calculations are performed.
The celestial body that serves as the origin for the state vector.
The name of the origin body.
The associated nPlateModel used to calculate SRP.
The reflectivity coefficient of the spacecraft.
The spacecraft associated with the SRP model.
Methods
angle_between(vec_1, vec_2)Compute the angle between two vectors
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.
- angle_between(vec_1: ndarray, vec_2: ndarray) float#
Compute the angle between two vectors
- Parameters:
vec_1 (
np.ndarray) – First vector.vec_2 (
np.ndarray) – Second vector.
- Returns:
angle – Angle between the two vectors in radians
- Return type:
- 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
- compute_partial_by_eta(position: ndarray, current_state: dict, epoch: float, body: Spacecraft) ndarray#
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 (
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:
partial_by_eta – 3x1 vector describing the partial derivative of SRP acceleration with respect to
eta_srp. Assumed in units of \(\frac{km}{s^2}\).- Return type:
np.ndarray
- compute_partial_by_position(position: ndarray, current_state: dict, epoch: float, body: Spacecraft) ndarray#
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 (
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:
partial_a_by_pos – The 3x3 Jacobian matrix of SRP acceleration with respect to position. Assumed in units of \(\frac{1}{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.