solar_radiation_pressure Function

public function solar_radiation_pressure(area, cr, r_sc_sun, sunfrac) result(srp)

Compute the solar radiation pressure force vector on a spacecraft.

Arguments

Type IntentOptional 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]

Return Value real(kind=wp), dimension(3)

solar radiation pressure force vector [N]


Source Code

    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