Compute the solar radiation pressure force vector on a spacecraft.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | area |
cross-sectional area of spacecraft [m^2] |
||
| real(kind=wp), | intent(in) | :: | cr |
coefficient of reflectivity |
||
| real(kind=wp), | intent(in), | dimension(3) | :: | r_sc_sun |
vector from spacecraft to sun [km] |
|
| real(kind=wp), | intent(in) | :: | sunfrac |
sun fraction [0=total eclipse, 1=no eclipse] |
solar radiation pressure force vector [N]
function solar_radiation_pressure(area, cr, r_sc_sun, sunfrac) result (srp) real(wp),intent(in) :: area !! cross-sectional area of spacecraft [m^2] real(wp),intent(in) :: cr !! coefficient of reflectivity real(wp),dimension(3),intent(in) :: r_sc_sun !! vector from spacecraft to sun [km] real(wp),intent(in) :: sunfrac !! sun fraction [0=total eclipse, 1=no eclipse] real(wp),dimension(3) :: srp !! solar radiation pressure force vector [N] real(wp) :: mag !! srp magnitude real(wp) :: r_mag !! magnitude of `r_sc_sun` if (sunfrac==zero) then srp = zero else r_mag = norm2(r_sc_sun) * km2m ! (m) mag = sunfrac * cr * solar_luminosity * area / (c_light * km2m * fourpi * r_mag**2) srp = -mag * r_sc_sun * km2m / r_mag ! (N) end if end function solar_radiation_pressure