I'm using GMAT to analyze the orbits. There is a Spherical model for Solar Radiation Pressure. Which equation does GMAT use to calculate it?

I've already searched in the documentation, however, there is no information/equations.

I wrote a program to calculate the solar pressure, accordingly to Vallado and taking the same values for the variables as in GMAT (area, reflectivity, mass). Due to the slightly different result, I suppose, GMAT uses a different algorithm.

$$ \huge\overset{\rightharpoonup}{F}_{srp}=-p_{srp}c_R A_\bigodot \frac{\overset{\rightharpoonup}{r}_{\bigoplus\bigodot}}{\left|\overset{\rightharpoonup}{r}_{\bigoplus\bigodot}\right|} $$

The code to calculate the acceleration (Julia language):

function solar_pressure(y,date)
  st_bar_sun = state(spk, 0, 10, date) 
  st_bar_moon_earth = state(spk, 0, 3, date) 
  st_bar_me_earth = state(spk, 3, 399, date)
  sun_cord  = (st_bar_sun - (st_bar_moon_earth + st_bar_me_earth))*1000
  r_sat_sun = [sun_cord[1] - y[1], sun_cord[2] - y[2], sun_cord[3] - y[3]]
  r_sat_sun_scalar = sqrt(r_sat_sun[1]^2 + r_sat_sun[2]^2 + r_sat_sun[3]^2)

  return -(r_sat_sun/r_sat_sun_scalar)*p_srp*C_r*A_sr/sat_mass

1 Answer 1


You can find a ton of information by looking in the "General Mission Analysis Tool (GMAT) Mathematical Specifications" (located at <GMAT installation directory>\<version>\docs\GMATMathSpec.pdf, or find the latest version here)

You can look at section "4.2.4 Solar Radiation Pressure", here is the R2018a version:

4.2.4 Solar Radiation Pressure

$$\mathbf{a}_s = -P_{SR}\displaystyle\frac{C_R > A}{m_s}\hat{\mathbf{s}}$$

where $\hat{\mathbf{s}}$ is a unitized vector pointing from the spacecraft to the sun

$$\mathbf{s} = \mathbf{r}_s - \mathbf{r}$$

where $\mathbf{r}_s$ is the Sun's position vector and $\mathbf{r}$ is the spacecrafts position vector.

$$\mathbf{A}_{s} = \mathbf{D}_{s} = \mathbf{0}_{3\times3}$$

$$\mathbf{B}_{s} = \mathbf{I}_{3\times3}$$

$$\mathbf{C}_{s} = P_{SR}\displaystyle\frac{ C_R A > }{m_s}\left( \frac{1}{s^3}\mathbf{I}_3 - 3 \frac{ \mathbf{s}\mathbf{s}^T}{s^5}\right)$$


$$s = \| \mathbf{s} \|$$

Additionally in "Table 4.1: Force Models Available in GMAT" they note the following equation for Solar Radiation Pressure:

$$ \frac{ P_{SR}C_R A_{\odot} }{m_s}\hat{\mathbf{r}}_{s\odot} $$

In order to find $P_{SR}$ we need to look at src/base/forcemodel/SolarRadiationPressure.cpp

157:   flux                (1367.0),                  // W/m^2, IERS 1996
158:   fluxPressure        (flux / GmatPhysicalConstants::c),   // converted to N/m^2

and TAT-C/cpp/GMATsrc/util/GmatConstants.hpp

114:   const Real c                                = 299792458.0;  // m/s

We can then calculate $P_{SR}$ as:

$$ \frac{1367.0 \frac{W}{m^2}}{299792458.0 \frac{m}{s}} = 4.5598 \cdot 10^{-6} \frac{N}{m^2}$$

  • $\begingroup$ Thank you! That's the same equation as I used, from Vallado. However, can't obtain the same result. For reflectivity, area and mass I got the same values, but for Psr I got the value from Vallado. What value does GMAT use for Psr? $\endgroup$
    – Leeloo
    Oct 10, 2018 at 21:49
  • 1
    $\begingroup$ @Leeloo I updated my answer to include GMATs formula for $P_{SR}$ $\endgroup$
    – Mark Omo
    Oct 10, 2018 at 22:44
  • $\begingroup$ What are As, Bs and Cs? Do I need them to calculate the acceleration? $\endgroup$
    – Leeloo
    Oct 11, 2018 at 8:38
  • $\begingroup$ I added the code to the question. I can't get similar result, but use the same equation and values.. However, for Newtonian gravity (sun and moon) the result is OK! $\endgroup$
    – Leeloo
    Oct 11, 2018 at 9:42
  • $\begingroup$ @Leeloo your equation looks fine debugging your specific implementation would really be a different question, I don't have much experience with Julia. Your new question should at a minimum show your code, your actual output and your expected output (and how you came to expect that output) $\endgroup$
    – Mark Omo
    Oct 12, 2018 at 21:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.