Skip to content

SRP

Solar radiation pressure and eclipse shadow models.

Provides the acceleration due to solar radiation pressure (SRP) and two shadow models — conical and cylindrical — for determining whether a spacecraft is illuminated by the Sun.

All inputs and outputs use SI base units (metres, metres/second squared, N/m^2).

References
  1. O. Montenbruck and E. Gill, Satellite Orbits: Models, Methods and Applications, 2012.

accel_srp(r_object, r_sun, mass, cr, area, p0)

Acceleration due to solar radiation pressure.

Parameters:

Name Type Description Default
r_object ArrayLike

Position of the object [m]. Shape (3,) or (6,) (only first 3 elements used).

required
r_sun ArrayLike

Position of the Sun [m]. Shape (3,).

required
mass float

Spacecraft mass [kg].

required
cr float

Coefficient of reflectivity [dimensionless].

required
area float

Sun-facing cross-sectional area [m^2].

required
p0 float

Solar radiation pressure at 1 AU [N/m^2].

required

Returns:

Type Description
Array

SRP acceleration [m/s^2], shape (3,).

Examples:

import jax.numpy as jnp
from astrojax.constants import AU
from astrojax.orbit_dynamics import accel_srp
r = jnp.array([AU, 0.0, 0.0])
r_sun = jnp.zeros(3)
a = accel_srp(r, r_sun, 1.0, 1.0, 1.0, 4.5e-6)

eclipse_conical(r_object, r_sun)

Illumination fraction using the conical shadow model.

Computes the fraction of the Sun's disk visible to the spacecraft, accounting for partial eclipses (penumbra).

Parameters:

Name Type Description Default
r_object ArrayLike

Position of the object in ECI [m]. Shape (3,) or (6,) (only first 3 elements used).

required
r_sun ArrayLike

Position of the Sun in ECI [m]. Shape (3,).

required

Returns:

Type Description
Array

Illumination fraction (scalar). 0.0 = full shadow, 1.0 = full illumination.

Examples:

import jax.numpy as jnp
from astrojax.constants import R_EARTH, AU
from astrojax.orbit_dynamics import eclipse_conical
r_sun = jnp.array([AU, 0.0, 0.0])
r_shadow = jnp.array([-R_EARTH - 100e3, 0.0, 0.0])
nu = eclipse_conical(r_shadow, r_sun)

eclipse_cylindrical(r_object, r_sun)

Illumination fraction using the cylindrical shadow model.

A simpler shadow model that treats Earth's shadow as a cylinder aligned with the Sun direction. Returns 0.0 (shadow) or 1.0 (illuminated) with no penumbra.

Parameters:

Name Type Description Default
r_object ArrayLike

Position of the object in ECI [m]. Shape (3,) or (6,) (only first 3 elements used).

required
r_sun ArrayLike

Position of the Sun in ECI [m]. Shape (3,).

required

Returns:

Type Description
Array

Illumination fraction (scalar), 0.0 or 1.0.

Examples:

import jax.numpy as jnp
from astrojax.constants import R_EARTH, AU
from astrojax.orbit_dynamics import eclipse_cylindrical
r_sun = jnp.array([AU, 0.0, 0.0])
r_shadow = jnp.array([-R_EARTH - 100e3, 0.0, 0.0])
nu = eclipse_cylindrical(r_shadow, r_sun)