nPlateModel#

class nPlateModel(plates_config_path: str)#

Bases: object

Defines a flat plate model used to represent the spacecraft structure for calculating solar radiation pressure acting on it.

The SRP force on a single plate of area \(A\) with reflectivity coefficient \(C_r\), illuminated at angle of incidence \(\theta\) from the sun, is

\[\mathbf{F}_{SRP} = \frac{P_{sun}\,A\cos\theta}{c} \bigl[(1 - C_r)\,\hat{\ell} + 2C_r\cos\theta\,\hat{n}\bigr]\]

where \(P_{sun}\) is the solar radiation pressure at 1 AU, \(c\) is the speed of light, \(\hat{\ell}\) is the unit sun-direction vector, and \(\hat{n}\) is the outward plate normal. The total SRP force on the spacecraft is the vector sum over all illuminated plates.

Parameters:

plates_config_path (str) – Path to a JSON file containing all necessary information to configure the N-plate model. See Notes section for more information on configuration file formatting.

See also

scarabaeus.Spacecraft

Assign an nPlateModel to a craft.

scarabaeus.nPlateSRP

Calculate solar radiation pressure.

Notes

The N-plate model requires a JSON file with the following properties:

  • names: an array of strings defining the name of each plate in the configuration.

  • areas: an array of numbers defining the area, in square kilometers, of each plate in the configuration.

  • ref coeffs: an array of numbers defining the reflectivity coefficient of each plate in the configuration.

  • abs coeffs: an array of numbers defining the absorption coefficient of each plate in the configuration.

  • dref coeffs: an array of numbers defining the diffuse reflection coefficient of each plate in the configuration.

  • sref coeffs: an array of numbers defining the specular reflection coefficient of each plate in the configuration.

  • normal vectors: an array of numerical 3-element arrays defining the components of the normal vector (u vector) for each plate in the configuration. For CK frames, the array defines the normal vector to be rotated by the quaternion derived from its respective C-kernel.

  • types: an array of strings where
    • "Fixed" defines a static plate.

    • "CK" defines a time-variant plate with associated reference frame defined by a SPICE C-matrix kernel.

  • ids: an array of integers and/or nulls, where
    • a null defines a Fixed plate — it has no NAIF integer code.

    • an integer defines the NAIF ID of a CK plate.

Note

The abs, dref, and sref must sum to unity for each plate.

Following this format, an example plate configuration file looks like:
{
    "names"          : ["plusX"  , "minusX"  , "SA1"    ],
    "areas"          : [10       , 10        , 10       ],
    "ref coeffs"     : [1.5      , 1.5       , 1.1      ],
    "abs coeffs"     : [0.33     , 0.33      , 0.33     ],
    "dref coeffs"    : [0.33     , 0.33      , 0.33     ],
    "sref coeffs"    : [0.34     , 0.34      , 0.34     ],
    "normal vectors" : [[1, 0, 0], [-1, 0, 0], [1, 0, 0]],
    "types"          : ["Fixed"  , "Fixed"   , "CK"     ],
    "ids"            : [null     , null      , -64001   ]
}

References

Attributes:
abs_ref_coeffs

The absorption coefficients of each plate in the N-plate model.

areas

The surface are of each plate in the N-plate model.

diff_ref_coeffs

The diffuse reflection coefficients of each plate in the N-plate model.

names

The names of each panel defined in the N-plate model.

normals

The normal vectors of each plate in the N-plate model.

plate_ids

The NAIF integer code for each plate in the N-plate model.

plate_types

The type of each plate in the N-plate model.

ref_coeffs

The reflectivity coefficients of each plate in the N-plate model.

spec_ref_coeffs

The specular reflection coefficients of each plate in the N-plate model.

Methods

get_all_normals(epoch, sc_id)

Queries the normal vectors of each panel in the N-plate model at a given epoch.

get_all_normals(epoch, sc_id: int)#

Queries the normal vectors of each panel in the N-plate model at a given epoch.

Parameters:
  • epoch (EpochArray) – The epoch at which to query the C-kernel in ephemeris time (TDB) for all CK type panels in the model.

  • sc_id (int) – NAIF spacecraft ID code for the craft C-kernel plates are attached to. Required to convert to encoded SCLK ticks.

Returns:

normals – A list of normals for each panel in the model.

Return type:

list

property abs_ref_coeffs: list[float]#

The absorption coefficients of each plate in the N-plate model.

property areas: list[ArrayWUnits]#

The surface are of each plate in the N-plate model. Expressed in units of \(km^2\).

property diff_ref_coeffs: list[float]#

The diffuse reflection coefficients of each plate in the N-plate model.

property names: list[str]#

The names of each panel defined in the N-plate model.

property normals: list[ndarray]#

The normal vectors of each plate in the N-plate model.

property plate_ids: list[int | None]#

The NAIF integer code for each plate in the N-plate model. Fixed type plates have no associated ID, therefore all plate ID’s of the respective type are None. All CK type plate ID’s are given as int.

property plate_types: list[str]#

The type of each plate in the N-plate model. Either:

  • 'Fixed', representing a static plate.

  • 'CK', representing a time-variant plate, with reference frame defined by a SPICE C-matrix kernel.

property ref_coeffs: list[float]#

The reflectivity coefficients of each plate in the N-plate model.

property spec_ref_coeffs: list[float]#

The specular reflection coefficients of each plate in the N-plate model.