# Spherical solar radiation model (GMAT)

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
end


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:

$$\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)$$

where

$$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

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}$$

• 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? Oct 10, 2018 at 21:49
• @Leeloo I updated my answer to include GMATs formula for $P_{SR}$ Oct 10, 2018 at 22:44
• What are As, Bs and Cs? Do I need them to calculate the acceleration? Oct 11, 2018 at 8:38
• 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! Oct 11, 2018 at 9:42
• @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) Oct 12, 2018 at 21:13