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

P_SRP

The precomputed SRP constant for scaling factors.

area

The total surface area of the spacecraft.

eta_srp

The SRP scale factor.

frame

The reference frame in which SRP calculations are performed.

origin

The celestial body that serves as the origin for the state vector.

origin_name

The name of the origin body.

plate_model

The associated nPlateModel used to calculate SRP.

ref_coeff

The reflectivity coefficient of the spacecraft.

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:

float

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 to 50.

Returns:

dcm – The DCM for transforming inertial vectors to spacecraft-fixed coordinates.

Return type:

np.ndarray

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: 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 eta_srp: float#

The SRP scale factor. Unitless.

property frame: str#

The reference frame in which SRP calculations are performed.

property origin: Body#

The celestial body that serves as the origin for the state vector.

property origin_name: str#

The name of the origin body.

property plate_model: nPlateModel#

The associated nPlateModel used to calculate SRP.

property ref_coeff: float#

The reflectivity coefficient of the spacecraft. Unitless.

property spacecraft: Spacecraft#

The spacecraft associated with the SRP model.