Documents

Physics

Solar & Earth radiation pressure

Attitude-dependent radiation force and moment on the same panel table the aerodynamics uses. It covers direct sunlight, Earth albedo and Earth infrared.

Source: cpp/src/srp/panel_srp.cpp; presets in python/arlamx_v2/sail_optics.py; switches under srp: in the physics YAML.

Solar pressure and geometry

\[ P_\odot=P_\mathrm{SR}\left(\frac{1\,\mathrm{AU}}{d}\right)^2\cdot \texttt{srp\_scale},\qquad P_\mathrm{SR}=4.56\times10^{-6}\ \mathrm{N\,m^{-2}} \]
  • d comes from the Sun ephemeris: the Astronomical Almanac low-precision series (measured direction error ≤ 0.008° against astropy over one year), or CSPICE when linked. The Sun is re-evaluated every substep.
  • Eclipse is cylindrical and binary: lit if r·ŝ ≥ 0 or the perpendicular distance is ≥ R_E. There is no penumbra.
  • For each panel, \(\cos\theta=\hat n\cdot\hat s\) (ŝ points toward the Sun in body axes). Only faces with cos θ > 1e-12 contribute, so a two-sided membrane needs both faces in the panel table (the .geom models have them).

Optical plate law (default since v2.7)

\[ \mathbf F_i=-P\,A_i\cos\theta_i\Bigl[(c_a+c_d)\,\hat s+\bigl(2c_s\cos\theta_i+\tfrac23c_d\bigr)\hat n_i\Bigr],\qquad \boldsymbol\tau=\sum_i\mathbf r_{c,i}\times\mathbf F_i,\qquad c_a+c_s+c_d=1 \]

c_a is the absorbed fraction, c_s the specularly reflected fraction and c_d the diffusely (Lambertian) reflected fraction (Montenbruck & Gill §3.4). The code renormalises the three to sum to 1. The normal component is what an SRP sail uses to raise or hold its orbit.

Presets (srp.optics)

Namec_ac_sc_dCannonball-equivalent C_r
absorber1.00001.0
specular01.0002.0
lambert001.001.0
al_mylar (default)0.080.880.041.8
al_kapton0.120.800.081.7
black_kapton0.9200.081.1
white_paint0.200.040.761.4
aged_sail0.350.400.251.5
cannonball_cr18(cannonball law)1.8
One partition for the whole spacecraft The chosen preset applies to every panel, including solar cells, PCB and beams. Per-panel or per-material optics is the main item of the plan.

Cannonball law (srp.optical: false)

\[ \mathbf F=\sum_{\hat n\cdot\hat s>0}P\,C_r\,A\,(\hat n\cdot\hat s)(-\hat s) \]

This is the V1.7 law. The force is along −ŝ only, with no lift component. It is kept for C_r = 1 classroom checks and for comparison with old campaigns (every pre-v2.7 campaign flew cannonball with no moment and no 1/d²).

Earth radiation (srp.earth: true)

\[ P_\mathrm{IR}=P_\mathrm{SR}\frac{e_0}{4}\Bigl(\frac{R_E}{r}\Bigr)^2,\qquad P_\mathrm{alb}=P_\odot\,a_0\Bigl(\frac{R_E}{r}\Bigr)^2\max(0,\hat r\cdot\hat s),\qquad a_0=0.34,\ e_0=0.68 \]
  • Both use the plate law with the source direction at nadir. IR uses the thermal partition srp.ir (default c_a 0.85, c_s 0, c_d 0.15 [ASSUME]). Albedo uses the solar partition.
  • IR is on day and night; albedo only on the day side. Constants are zonal means (Knocke, Ries & Tapley 1988).
  • (R_E/r)² is the view factor of a plate facing the Earth's centre. Tilted plates use the same point-source direction, which is an approximation for plates near edge-on to nadir.

SRP “flashes” (training stressor, not physics)

In variants v5+, the env draws 1–3 events per episode that multiply srp_scale by 2–6 for 3 steps, only above 450 km. They are there to make policies robust and are not a physical SRP model (real solar irradiance varies by about 0.1 %). Turn them off for physics studies by using a variant below v5 or by running the plant directly.

Configuration

YAMLSimParamsDefault (standard)
srp.enableduse_panel_srptrue (required key)
srp.opticalsrp_opticaltrue
srp.opticssrp_ca, srp_cs, srp_cdal_mylar
srp.CrCr1.8 (cannonball only)
srp.earthearth_radtrue
srp.ir: {ca, cs, cd}ir_ca, ir_cs, ir_cd0.85 / 0 / 0.15
—srp_scale / set_srp_scale1.0 (0–20)

What is not modelled

  • Thermal re-emission force. Absorbed power re-radiated from front and back faces with different emissivities produces a normal force \(\propto c_a\frac{\varepsilon_fB_f-\varepsilon_bB_b}{\varepsilon_f+\varepsilon_b}\) (McInnes 1999). For aluminised sail films (ε_f ≈ 0.03, ε_b ≈ 0.6) this is a few percent of the normal force, and it is included in the plan.
  • Penumbra (≈ 8–10 s per LEO shadow crossing). A conical shadow model (Montenbruck & Gill §3.4.2) would remove the step discontinuity.
  • Self-shadowing between panels, multiple reflections, wavelength-dependent optics, and ageing (UV/AO degradation of c_s).
  • Per-panel materials. Each panel should carry its own (c_a, c_s, c_d), front and back, in both the solar and the IR band.

Validation

  • tests/srp/test_srp.py, test_srp_optical.py: 1 m² face-on C_r = 1 gives |F| = P_SR; a 90° plate gives 0; box symmetry.
  • tests/physics/test_disturbances.py: moment = r × F (1 cm offset → 0.01 P), face-on hex mylar 5.692 µN, 1/d² series, IR pushes a nadir plate outward in eclipse, albedo day-side only.

References

  1. Montenbruck, O. & Gill, E. (2000). Satellite Orbits. Springer, §3.4.
  2. Vallado, D. A. (2013). Fundamentals of Astrodynamics and Applications, 4th ed., §8.6.4, Alg. 29.
  3. McInnes, C. R. (1999). Solar Sailing. Springer.
  4. Knocke, P. C., Ries, J. C. & Tapley, B. D. (1988). Earth radiation pressure effects on satellites. AIAA 88-4292.