Package org.orekit.forces.radiation
Class AbstractRadiationForceModel
- java.lang.Object
-
- org.orekit.forces.radiation.AbstractRadiationForceModel
-
- All Implemented Interfaces:
ForceModel
,EventDetectorsProvider
,ParameterDriversProvider
- Direct Known Subclasses:
ECOM2
,SolarRadiationPressure
public abstract class AbstractRadiationForceModel extends Object implements ForceModel
Base class for radiation force models.- Since:
- 10.2
- See Also:
SolarRadiationPressure
,ECOM2
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractRadiationForceModel(ExtendedPVCoordinatesProvider sun, OneAxisEllipsoid centralBody)
Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addOccultingBody(OneAxisEllipsoid occulting)
Add a new occulting body.void
addOccultingBody(ExtendedPVCoordinatesProvider provider, double radius)
Add a new occulting body.boolean
dependsOnPositionOnly()
Check if force models depends on position only.Stream<EventDetector>
getEventDetectors()
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventDetectors(Field<T> field)
Get the discrete events related to the model.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.protected double[]
getGeneralEclipseAngles(Vector3D position, Vector3D occultingPosition, double occultingRadius, Vector3D occultedPosition, double occultedRadius)
Get the useful angles for eclipse computation.List<OccultationEngine>
getOccultingBodies()
Get all occulting bodies to consider.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.propagation.events.EventDetectorsProvider
getEventDetectors, getFieldEventDetectors
-
Methods inherited from interface org.orekit.forces.ForceModel
acceleration, acceleration, addContribution, addContribution, init, init
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, getParametersDrivers, isSupported
-
-
-
-
Constructor Detail
-
AbstractRadiationForceModel
protected AbstractRadiationForceModel(ExtendedPVCoordinatesProvider sun, OneAxisEllipsoid centralBody)
Default constructor. Only central body is considered.- Parameters:
sun
- Sun modelcentralBody
- central body shape model (for umbra/penumbra computation)- Since:
- 12.0
-
-
Method Detail
-
dependsOnPositionOnly
public boolean dependsOnPositionOnly()
Check if force models depends on position only.- Specified by:
dependsOnPositionOnly
in interfaceForceModel
- Returns:
- true if force model depends on position only, false if it depends on velocity, either directly or due to a dependency on attitude
-
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 interfaceEventDetectorsProvider
- Specified by:
getEventDetectors
in interfaceForceModel
- Returns:
- stream of event detectors
-
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 interfaceEventDetectorsProvider
- Specified by:
getFieldEventDetectors
in interfaceForceModel
- 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 frameoccultingPosition
- Oculting body position in the selected frameoccultingRadius
- Occulting body mean radiusoccultedPosition
- Occulted body position in the selected frameoccultedRadius
- 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:
occultingPosition
- Oculting body position in the selected frameoccultingRadius
- Occulting body mean radiusoccultedPosition
- Occulted body position in the selected frameoccultedRadius
- Occulted body mean radiusposition
- the satellite's position in the selected frame- Returns:
- the 3 angles {(satOcculting, satOcculted), Occulting body apparent radius, Occulted body apparent radius}
-
addOccultingBody
public void addOccultingBody(ExtendedPVCoordinatesProvider provider, double radius)
Add a new occulting body.Central body is already considered, it shall not be added this way.
- Parameters:
provider
- body PV providerradius
- body mean radius- See Also:
addOccultingBody(OneAxisEllipsoid)
-
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:
addOccultingBody(ExtendedPVCoordinatesProvider, double)
-
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
-
-