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.

frame

The reference frame in which SRP calculations are performed.

mass

The mass of the spacecraft.

origin

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

origin_name

The name of the origin body.

plates_abs

The absorption coefficients of the plates.

plates_areas

The areas of the plates.

plates_crs

The coefficients of reflection for the plates.

plates_dref

The diffuse reflectivity coefficients of the plates.

plates_names

The names of the plates.

plates_sref

The specular reflectivity coefficients of the plates.

plates_types

The types of the plates.

plates_u_vectors

The unit vectors of the plates.

ref_coeff

The reflectivity coefficient of the spacecraft.

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:

ArrayWUnits

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:

ArrayWUnits

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:

ArrayWUnits

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

Returns:

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

Return type:

ArrayWUnits

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 frame: str#

The reference frame in which SRP calculations are performed.

property mass: ArrayWUnits#

The mass of the spacecraft. Expressed in units of kilograms.

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 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_names: list[str]#

The names of the plates.

property plates_sref: list[ArrayWUnits]#

The specular reflectivity coefficients of the plates. Unitless.

property plates_types: list[str]#

The types of the plates. Either 'specular' or 'diffuse'.

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.