Class AbstractRadiationForceModel

java.lang.Object
org.orekit.forces.radiation.AbstractRadiationForceModel
All Implemented Interfaces:
ForceModel, RadiationForceModel, EventDetectorsProvider, ParameterDriversProvider
Direct Known Subclasses:
ECOM2, SolarRadiationPressure

public abstract class AbstractRadiationForceModel extends Object implements RadiationForceModel
Base class for radiation force models.
Since:
10.2
See Also:
  • Constructor Details

    • AbstractRadiationForceModel

      protected AbstractRadiationForceModel(ExtendedPositionProvider sun, OneAxisEllipsoid centralBody, EventDetectionSettings eclipseDetectionSettings)
      Default constructor. Only central body is considered.
      Parameters:
      sun - Sun model
      centralBody - central body shape model (for umbra/penumbra computation)
      eclipseDetectionSettings - eclipse detection settings (warning: poor settings will miss eclipses)
      Since:
      13.0
  • Method Details

    • getEventDetectors

      public Stream<EventDetector> getEventDetectors()
      Get the discrete events related to the model.

      This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.

      Specified by:
      getEventDetectors in interface EventDetectorsProvider
      Specified by:
      getEventDetectors in interface ForceModel
      Returns:
      stream of event detectors
    • getDefaultEclipseDetectionSettings

      public static EventDetectionSettings getDefaultEclipseDetectionSettings()
      Get the default eclipse detection settings.
      Returns:
      detection settings
      Since:
      13.0
    • getFieldEventDetectors

      public <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventDetectors(Field<T> field)
      Get the discrete events related to the model.

      This method is not intended to be called several time, only once by a propagator, as it has the side effect of rebuilding the events detectors when called.

      Specified by:
      getFieldEventDetectors in interface EventDetectorsProvider
      Specified by:
      getFieldEventDetectors in interface ForceModel
      Type Parameters:
      T - extends CalculusFieldElement<T>
      Parameters:
      field - field to which the state belongs
      Returns:
      stream of event detectors
    • getGeneralEclipseAngles

      protected double[] getGeneralEclipseAngles(Vector3D position, Vector3D occultingPosition, double occultingRadius, Vector3D occultedPosition, double occultedRadius)
      Get the useful angles for eclipse computation.
      Parameters:
      position - the satellite's position in the selected frame
      occultingPosition - Oculting body position in the selected frame
      occultingRadius - Occulting body mean radius
      occultedPosition - Occulted body position in the selected frame
      occultedRadius - Occulted body mean radius
      Returns:
      the 3 angles {(satOcculting, satOcculted), Occulting body apparent radius, Occulted body apparent radius}
    • getGeneralEclipseAngles

      protected <T extends CalculusFieldElement<T>> T[] getGeneralEclipseAngles(FieldVector3D<T> position, FieldVector3D<T> occultingPosition, T occultingRadius, FieldVector3D<T> occultedPosition, T occultedRadius)
      Get the useful angles for eclipse computation.
      Type Parameters:
      T - extends RealFieldElement
      Parameters:
      position - the satellite's position in the selected frame
      occultingPosition - Oculting body position in the selected frame
      occultingRadius - Occulting body mean radius
      occultedPosition - Occulted body position in the selected frame
      occultedRadius - Occulted body mean radius
      Returns:
      the 3 angles {(satOcculting, satOcculted), Occulting body apparent radius, Occulted body apparent radius}
    • addOccultingBody

      public void addOccultingBody(ExtendedPositionProvider provider, double radius)
      Add a new occulting body.

      Central body is already considered, it shall not be added this way.

      Parameters:
      provider - body PV provider
      radius - body mean radius
      See Also:
    • addOccultingBody

      public void addOccultingBody(OneAxisEllipsoid occulting)
      Add a new occulting body.

      Central body is already considered, it shall not be added this way.

      Parameters:
      occulting - occulting body to add
      Since:
      12.0
      See Also:
    • getOccultingBodies

      public List<OccultationEngine> getOccultingBodies()
      Get all occulting bodies to consider.

      The list always contains at least one element: the central body which is always the first one in the list.

      Returns:
      immutable list of all occulting bodies to consider, including the central body
      Since:
      12.0