Class SolarRadiationPressure

  • All Implemented Interfaces:
    ForceModel, ParametersDriversProvider

    public class SolarRadiationPressure
    extends AbstractRadiationForceModel
    Solar radiation pressure force model.

    Since Orekit 11.0, it is possible to take into account the eclipses generated by Moon in the solar radiation pressure force model using the AbstractRadiationForceModel.addOccultingBody(ExtendedPVCoordinatesProvider, double) method.

    Example:
    SolarRadiationPressure srp = new SolarRadiationPressure(CelestialBodyFactory.getSun(), Constants.EIGEN5C_EARTH_EQUATORIAL_RADIUS, new IsotropicRadiationClassicalConvention(50.0, 0.5, 0.5));
    srp.addOccultingBody(CelestialBodyFactory.getMoon(), Constants.MOON_EQUATORIAL_RADIUS);

    Author:
    Fabien Maussion, Édouard Delente, Véronique Pommier-Maurussane, Pascal Parraud
    • Constructor Detail

      • SolarRadiationPressure

        public SolarRadiationPressure​(ExtendedPVCoordinatesProvider sun,
                                      double equatorialRadius,
                                      RadiationSensitive spacecraft)
        Simple constructor with default reference values.

        When this constructor is used, the reference values are:

        • dref = 149597870000.0 m
        • pref = 4.56 10-6 N/m²
        Parameters:
        sun - Sun model
        equatorialRadius - spherical shape model (for umbra/penumbra computation)
        spacecraft - the object physical and geometrical information
        Since:
        9.2
      • SolarRadiationPressure

        public SolarRadiationPressure​(double dRef,
                                      double pRef,
                                      ExtendedPVCoordinatesProvider sun,
                                      double equatorialRadius,
                                      RadiationSensitive spacecraft)
        Complete constructor.

        Note that reference solar radiation pressure pRef in N/m² is linked to solar flux SF in W/m² using formula pRef = SF/c where c is the speed of light (299792458 m/s). So at 1UA a 1367 W/m² solar flux is a 4.56 10-6 N/m² solar radiation pressure.

        Parameters:
        dRef - reference distance for the solar radiation pressure (m)
        pRef - reference solar radiation pressure at dRef (N/m²)
        sun - Sun model
        equatorialRadius - spherical shape model (for umbra/penumbra computation)
        spacecraft - the object physical and geometrical information
        Since:
        9.2
    • Method Detail

      • acceleration

        public Vector3D acceleration​(SpacecraftState s,
                                     double[] parameters)
        Compute acceleration.
        Parameters:
        s - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        acceleration in same frame as state
      • acceleration

        public <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration​(FieldSpacecraftState<T> s,
                                                                                 T[] parameters)
        Compute acceleration.
        Type Parameters:
        T - type of the elements
        Parameters:
        s - current state information: date, kinematics, attitude
        parameters - values of the force model parameters
        Returns:
        acceleration in same frame as state
      • getLightingRatio

        public double getLightingRatio​(Vector3D position,
                                       Frame frame,
                                       AbsoluteDate date)
        Get the lighting ratio ([0-1]). Considers only central body as occulting body.
        Parameters:
        position - the satellite's position in the selected frame.
        frame - in which is defined the position
        date - the date
        Returns:
        lighting ratio
        Since:
        7.1
      • getGeneralEclipseRatio

        public double getGeneralEclipseRatio​(Vector3D position,
                                             Vector3D occultingPosition,
                                             double occultingRadius,
                                             Vector3D occultedPosition,
                                             double occultedRadius)
        Get eclipse ratio between to bodies seen from a specific object. Ratio is in [0-1].
        Parameters:
        position - the satellite's position in the selected frame
        occultingPosition - the position of the occulting object
        occultingRadius - the mean radius of the occulting object
        occultedPosition - the position of the occulted object
        occultedRadius - the mean radius of the occulted object
        Returns:
        eclipse ratio
      • getTotalLightingRatio

        public double getTotalLightingRatio​(Vector3D position,
                                            Frame frame,
                                            AbsoluteDate date)
        Get the total lighting ratio ([0-1]). This method considers every occulting bodies.
        Parameters:
        position - the satellite's position in the selected frame.
        frame - in which is defined the position
        date - the date
        Returns:
        lighting ratio
      • getLightingRatio

        public <T extends CalculusFieldElement<T>> T getLightingRatio​(FieldVector3D<T> position,
                                                                      Frame frame,
                                                                      FieldAbsoluteDate<T> date)
        Get the lighting ratio ([0-1]). Considers only central body as occulting body.
        Type Parameters:
        T - extends CalculusFieldElement
        Parameters:
        position - the satellite's position in the selected frame.
        frame - in which is defined the position
        date - the date
        Returns:
        lighting ratio
        Since:
        7.1
      • getGeneralEclipseRatio

        public <T extends CalculusFieldElement<T>> T getGeneralEclipseRatio​(FieldVector3D<T> position,
                                                                            FieldVector3D<T> occultingPosition,
                                                                            T occultingRadius,
                                                                            FieldVector3D<T> occultedPosition,
                                                                            T occultedRadius)
        Get eclipse ratio between to bodies seen from a specific object. Ratio is in [0-1].
        Type Parameters:
        T - extends RealFieldElement
        Parameters:
        position - the satellite's position in the selected frame
        occultingPosition - the position of the occulting object
        occultingRadius - the mean radius of the occulting object
        occultedPosition - the position of the occulted object
        occultedRadius - the mean radius of the occulted object
        Returns:
        eclipse ratio
      • getTotalLightingRatio

        public <T extends CalculusFieldElement<T>> T getTotalLightingRatio​(FieldVector3D<T> position,
                                                                           Frame frame,
                                                                           FieldAbsoluteDate<T> date)
        Get the total lighting ratio ([0-1]). This method considers every occulting bodies.
        Type Parameters:
        T - extends RealFieldElement
        Parameters:
        position - the satellite's position in the selected frame.
        frame - in which is defined the position
        date - the date
        Returns:
        lighting rati
      • getParametersDrivers

        public List<ParameterDriver> getParametersDrivers()
        Get the drivers for parameters.
        Returns:
        drivers for parameters