Class KnockeRediffusedForceModel
- java.lang.Object
-
- org.orekit.forces.radiation.KnockeRediffusedForceModel
-
- All Implemented Interfaces:
ForceModel
,EventDetectorsProvider
,ParameterDriversProvider
public class KnockeRediffusedForceModel extends Object implements ForceModel
The Knocke Earth Albedo and IR emission force model.This model is based on "EARTH RADIATION PRESSURE EFFECTS ON SATELLITES", 1988, by P. C. Knocke, J. C. Ries, and B. D. Tapley.
This model represents the effects of radiation pressure coming from the Earth. It considers Solar radiation which has been reflected by Earth (albedo) and Earth infrared emissions. The planet is considered as a sphere and is divided into elementary areas. Each elementary area is considered as a plane and emits radiation according to Lambert's law. The flux the satellite receives is then equal to the sum of the elementary fluxes coming from Earth.
The radiative model of the satellite, and its ability to diffuse, reflect or absorb radiation is handled by a
radiation sensitive model
.Caution: This model is only suitable for Earth. Using it with another central body is prone to error..
- Since:
- 10.3
- Author:
- Thomas Paulet
-
-
Field Summary
-
Fields inherited from interface org.orekit.propagation.events.EventDetectorsProvider
DATATION_ACCURACY
-
-
Constructor Summary
Constructors Constructor Description KnockeRediffusedForceModel(ExtendedPositionProvider sun, RadiationSensitive spacecraft, double equatorialRadius, double angularResolution)
Default Constructor.KnockeRediffusedForceModel(ExtendedPositionProvider sun, RadiationSensitive spacecraft, double equatorialRadius, double angularResolution, TimeScale utc)
General constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends CalculusFieldElement<T>>
FieldVector3D<T>acceleration(FieldSpacecraftState<T> s, T[] parameters)
Compute acceleration.Vector3D
acceleration(SpacecraftState s, double[] parameters)
Compute acceleration.double
computeAlbedo(AbsoluteDate date, double phi)
Compute Earth albedo.<T extends CalculusFieldElement<T>>
TcomputeAlbedo(FieldAbsoluteDate<T> date, T phi)
Compute Earth albedo.<T extends CalculusFieldElement<T>>
FieldVector3D<T>computeElementaryFlux(FieldSpacecraftState<T> state, FieldVector3D<T> elementCenter, FieldVector3D<T> sunPosition, OneAxisEllipsoid earth, T elementArea)
Compute elementary rediffused flux on satellite.Vector3D
computeElementaryFlux(SpacecraftState state, Vector3D elementCenter, Vector3D sunPosition, OneAxisEllipsoid earth, double elementArea)
Compute elementary rediffused flux on satellite.double
computeEmissivity(AbsoluteDate date, double phi)
Compute Earth emisivity.<T extends CalculusFieldElement<T>>
TcomputeEmissivity(FieldAbsoluteDate<T> date, T phi)
Compute Earth emisivity.<T extends CalculusFieldElement<T>>
TcomputeSolarFlux(FieldVector3D<T> sunPosition)
Compute total solar flux impacting Earth.double
computeSolarFlux(Vector3D sunPosition)
Compute total solar flux impacting Earth.boolean
dependsOnPositionOnly()
Check if force model depends on position only at a given, fixed date.List<ParameterDriver>
getParametersDrivers()
Get the drivers for parameters.-
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
addContribution, addContribution, dependsOnAttitudeRate, getEventDetectors, getFieldEventDetectors, init, init
-
Methods inherited from interface org.orekit.utils.ParameterDriversProvider
getNbParametersDriversValue, getParameterDriver, getParameters, getParameters, getParameters, getParameters, getParametersAllValues, getParametersAllValues, isSupported
-
-
-
-
Constructor Detail
-
KnockeRediffusedForceModel
@DefaultDataContext public KnockeRediffusedForceModel(ExtendedPositionProvider sun, RadiationSensitive spacecraft, double equatorialRadius, double angularResolution)
Default Constructor.This constructor uses the
.default data context
- Parameters:
sun
- Sun modelspacecraft
- the object physical and geometrical informationequatorialRadius
- the Earth equatorial radius in mangularResolution
- angular resolution in rad
-
KnockeRediffusedForceModel
public KnockeRediffusedForceModel(ExtendedPositionProvider sun, RadiationSensitive spacecraft, double equatorialRadius, double angularResolution, TimeScale utc)
General constructor.- Parameters:
sun
- Sun modelspacecraft
- the object physical and geometrical informationequatorialRadius
- the Earth equatorial radius in mangularResolution
- angular resolution in radutc
- the UTC time scale to define reference epoch
-
-
Method Detail
-
dependsOnPositionOnly
public boolean dependsOnPositionOnly()
Check if force model depends on position only at a given, fixed date.- 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
-
acceleration
public Vector3D acceleration(SpacecraftState s, double[] parameters)
Compute acceleration.- Specified by:
acceleration
in interfaceForceModel
- Parameters:
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date, only 1 value for each parameterDriver- Returns:
- acceleration in same frame as state
-
acceleration
public <T extends CalculusFieldElement<T>> FieldVector3D<T> acceleration(FieldSpacecraftState<T> s, T[] parameters)
Compute acceleration.- Specified by:
acceleration
in interfaceForceModel
- Type Parameters:
T
- type of the elements- Parameters:
s
- current state information: date, kinematics, attitudeparameters
- values of the force model parameters at state date, only 1 value for each parameterDriver- Returns:
- acceleration in same frame as state
-
getParametersDrivers
public List<ParameterDriver> getParametersDrivers()
Get the drivers for parameters.- Specified by:
getParametersDrivers
in interfaceParameterDriversProvider
- Returns:
- drivers for parameters
-
computeAlbedo
public double computeAlbedo(AbsoluteDate date, double phi)
Compute Earth albedo. Albedo value represents the fraction of solar radiative flux that is reflected by Earth. Its value is in [0;1].- Parameters:
date
- the datephi
- the equatorial latitude in rad- Returns:
- the albedo in [0;1]
-
computeAlbedo
public <T extends CalculusFieldElement<T>> T computeAlbedo(FieldAbsoluteDate<T> date, T phi)
Compute Earth albedo. Albedo value represents the fraction of solar radiative flux that is reflected by Earth. Its value is in [0;1].- Type Parameters:
T
- extends CalculusFieldElement- Parameters:
date
- the datephi
- the equatorial latitude in rad- Returns:
- the albedo in [0;1]
-
computeEmissivity
public double computeEmissivity(AbsoluteDate date, double phi)
Compute Earth emisivity. Emissivity is used to compute the infrared flux that is emitted by Earth. Its value is in [0;1].- Parameters:
date
- the datephi
- the equatorial latitude in rad- Returns:
- the emissivity in [0;1]
-
computeEmissivity
public <T extends CalculusFieldElement<T>> T computeEmissivity(FieldAbsoluteDate<T> date, T phi)
Compute Earth emisivity. Emissivity is used to compute the infrared flux that is emitted by Earth. Its value is in [0;1].- Type Parameters:
T
- extends CalculusFieldElement- Parameters:
date
- the datephi
- the equatorial latitude in rad- Returns:
- the emissivity in [0;1]
-
computeSolarFlux
public double computeSolarFlux(Vector3D sunPosition)
Compute total solar flux impacting Earth.- Parameters:
sunPosition
- the Sun position in an Earth centered frame- Returns:
- the total solar flux impacting Earth in J/m^3
-
computeSolarFlux
public <T extends CalculusFieldElement<T>> T computeSolarFlux(FieldVector3D<T> sunPosition)
Compute total solar flux impacting Earth.- Type Parameters:
T
- extends CalculusFieldElement- Parameters:
sunPosition
- the Sun position in an Earth centered frame- Returns:
- the total solar flux impacting Earth in J/m^3
-
computeElementaryFlux
public Vector3D computeElementaryFlux(SpacecraftState state, Vector3D elementCenter, Vector3D sunPosition, OneAxisEllipsoid earth, double elementArea)
Compute elementary rediffused flux on satellite.- Parameters:
state
- the current spacecraft stateelementCenter
- the position of the considered area centersunPosition
- the position of the Sun in the spacecraft frameearth
- the Earth modelelementArea
- the area of the current element- Returns:
- the rediffused flux from considered element on the spacecraft
-
computeElementaryFlux
public <T extends CalculusFieldElement<T>> FieldVector3D<T> computeElementaryFlux(FieldSpacecraftState<T> state, FieldVector3D<T> elementCenter, FieldVector3D<T> sunPosition, OneAxisEllipsoid earth, T elementArea)
Compute elementary rediffused flux on satellite.- Type Parameters:
T
- extends CalculusFieldElement- Parameters:
state
- the current spacecraft stateelementCenter
- the position of the considered area centersunPosition
- the position of the Sun in the spacecraft frameearth
- the Earth modelelementArea
- the area of the current element- Returns:
- the rediffused flux from considered element on the spacecraft
-
-