Package org.orekit.forces.radiation
Class AbstractRadiationForceModel
- java.lang.Object
-
- org.orekit.forces.AbstractForceModel
-
- org.orekit.forces.radiation.AbstractRadiationForceModel
-
- All Implemented Interfaces:
ForceModel
,ParametersDriversProvider
- Direct Known Subclasses:
ECOM2
,PythonAbstractRadiationForceModel
,SolarRadiationPressure
public abstract class AbstractRadiationForceModel extends AbstractForceModel
Base class for radiation force models.- Since:
- 10.2
- See Also:
SolarRadiationPressure
,ECOM2
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractRadiationForceModel(ExtendedPVCoordinatesProvider sun, double equatorialRadius)
Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addOccultingBody(ExtendedPVCoordinatesProvider provider, double radius)
Add a new occulting body.boolean
dependsOnPositionOnly()
Check if force models depends on position only.protected <T extends CalculusFieldElement<T>>
T[]getEclipseAngles(FieldVector3D<T> sunPosition, FieldVector3D<T> position)
Get the useful angles for eclipse computation.protected double[]
getEclipseAngles(Vector3D sunPosition, Vector3D position)
Get the useful angles for eclipse computation.double
getEquatorialRadius()
Getter for equatorial radius.Stream<EventDetector>
getEventsDetectors()
Get the discrete events related to the model.<T extends CalculusFieldElement<T>>
Stream<FieldEventDetector<T>>getFieldEventsDetectors(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.Map<ExtendedPVCoordinatesProvider,Double>
getOtherOccultingBodies()
Getter for other occulting bodies to consider.-
Methods inherited from class org.orekit.forces.AbstractForceModel
complainIfNotSupported, getParameterDriver, isSupported
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.forces.ForceModel
acceleration, acceleration, addContribution, addContribution, getParameters, getParameters, init, init
-
Methods inherited from interface org.orekit.utils.ParametersDriversProvider
getParametersDrivers
-
-
-
-
Constructor Detail
-
AbstractRadiationForceModel
protected AbstractRadiationForceModel(ExtendedPVCoordinatesProvider sun, double equatorialRadius)
Default constructor. Only central body is considered.- Parameters:
sun
- Sun modelequatorialRadius
- central body spherical shape model (for umbra/penumbra computation)
-
-
Method Detail
-
dependsOnPositionOnly
public boolean dependsOnPositionOnly()
Check if force models depends on position only.- Returns:
- true if force model depends on position only, false if it depends on velocity, either directly or due to a dependency on attitude
-
getEventsDetectors
public Stream<EventDetector> getEventsDetectors()
Get the discrete events related to the model.- Returns:
- stream of events detectors
-
getFieldEventsDetectors
public <T extends CalculusFieldElement<T>> Stream<FieldEventDetector<T>> getFieldEventsDetectors(Field<T> field)
Get the discrete events related to the model.- Type Parameters:
T
- extends CalculusFieldElement<T>- Parameters:
field
- field to which the state belongs- Returns:
- stream of events detectors
-
getEclipseAngles
protected double[] getEclipseAngles(Vector3D sunPosition, Vector3D position)
Get the useful angles for eclipse computation.- Parameters:
sunPosition
- Sun position in the selected frameposition
- the satellite's position in the selected frame- Returns:
- the 3 angles {(satCentral, satSun), Central body apparent radius, Sun apparent radius}
-
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}
-
getEclipseAngles
protected <T extends CalculusFieldElement<T>> T[] getEclipseAngles(FieldVector3D<T> sunPosition, FieldVector3D<T> position)
Get the useful angles for eclipse computation.- Type Parameters:
T
- extends CalculusFieldElement- Parameters:
sunPosition
- Sun position in the selected frameposition
- the satellite's position in the selected frame.- Returns:
- the 3 angles {(satCentral, satSun), Central body apparent radius, Sun 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
-
getOtherOccultingBodies
public Map<ExtendedPVCoordinatesProvider,Double> getOtherOccultingBodies()
Getter for other occulting bodies to consider.- Returns:
- the map of other occulting bodies and corresponding mean radiuses
-
getEquatorialRadius
public double getEquatorialRadius()
Getter for equatorial radius.- Returns:
- central body equatorial radius
-
-