public class SolarRadiationPressureEllipsoid extends JacobiansParameterizable implements ForceModel, GradientModel
spheroids
(taking ellipsoid shape of occulting
body into account). Based on the
other implementation SolarRadiationPressureCircular
for a spherical occulting body.
The implementation of this class enables the computation of partial derivatives with respect to absorption, specular reflection or diffusion reflection coefficients.
Eclipses computation can be deactivated by using setEclipsesComputation(boolean)
. By default, eclipses are
taken into account.
This class allows to consider any occulting body (Earth, Moon, etc.). In case of multiple occulting bodies, the assumption is made that only one body occults the spacecraft at a time.
Modifier and Type | Field and Description |
---|---|
static String |
REFERENCE_FLUX
Normalized reference flux.
|
Constructor and Description |
---|
SolarRadiationPressureEllipsoid(double dRef,
double pRef,
PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
Assembly assembly,
double multiplicativeFactorIn)
Creates a new instance.
|
SolarRadiationPressureEllipsoid(double dRef,
double pRef,
PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
RadiationSensitive spacecraftModel)
Complete constructor.
|
SolarRadiationPressureEllipsoid(double dRef,
double pRef,
PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
RadiationSensitive spacecraftModel,
boolean computePD)
Complete constructor.
|
SolarRadiationPressureEllipsoid(Parameter referenceFlux,
PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
RadiationSensitive spacecraftModel)
Complete constructor using
Parameter . |
SolarRadiationPressureEllipsoid(Parameter referenceFlux,
PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
RadiationSensitive spacecraftModel,
boolean computePD)
Complete constructor using
Parameter . |
SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
RadiationSensitive spacecraftModel)
Simple constructor with default reference values.
|
SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody,
GeometricBodyShape occultingBody,
RadiationSensitive spacecraftModel,
boolean computePD)
Simple constructor with default reference values.
|
SolarRadiationPressureEllipsoid(SolarRadiationPressureEllipsoid otherInstance,
Assembly assembly)
Creates a new instance from the data in another one but with a different assembly.
|
Modifier and Type | Method and Description |
---|---|
void |
addContribution(SpacecraftState s,
TimeDerivativesEquations adder)
Compute the contribution of the force model to the perturbing
acceleration.
|
void |
addDAccDParam(SpacecraftState s,
Parameter param,
double[] dAccdParam)
Compute acceleration derivatives with respect to additional parameters.
|
void |
addDAccDState(SpacecraftState s,
double[][] dAccdPos,
double[][] dAccdVel)
Compute acceleration derivatives with respect to state parameters.
|
void |
addOccultingBody(GeometricBodyShape body)
Add an occulting body.
|
void |
checkData(AbsoluteDate start,
AbsoluteDate end)
This methods throws an exception if the user did not provide all the required data to perform model call on
provided range [start; end].
|
Vector3D |
computeAcceleration(SpacecraftState s)
Compute the acceleration due to the force.
|
boolean |
computeGradientPosition()
This method returns true if the acceleration partial derivatives with
respect to position have to be computed.
|
boolean |
computeGradientVelocity()
This method returns true if the acceleration partial derivatives with
respect to velocity have to be computed.
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
double |
getLightningRatio(Vector3D satSunVector,
GeometricBodyShape occultingBody,
Vector3D position,
Frame frame,
AbsoluteDate date)
Get the lightning ratio ([0-1]) for provided occulting body.
|
double |
getMultiplicativeFactor() |
List<GeometricBodyShape> |
getOccultingBodies()
Getter for the occulting bodies.
|
Parameter |
getReferenceFlux()
Get the normalized reference flux parameter
|
Vector3D |
getSolarFlux(SpacecraftState s)
Compute solar flux.
|
PVCoordinatesProvider |
getSunBody()
Getter for the Sun model used at construction.
|
boolean |
isEclipseComputation()
Returns flag indicating if eclipses should be taken into account.
|
void |
setEclipsesComputation(boolean eclipsesComputationFlagIn)
Setter for enabling/disabling eclipses computation.
|
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
addAllParameters, addAllParameters, addParameter, getParameters, supportsParameter
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
enrichParameterDescriptors
getParameters, supportsParameter
public static final String REFERENCE_FLUX
public SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, RadiationSensitive spacecraftModel)
When this constructor is used, the reference values are:
sunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationpublic SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, RadiationSensitive spacecraftModel, boolean computePD)
When this constructor is used, the reference values are:
sunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureEllipsoid(double dRef, double pRef, PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, RadiationSensitive spacecraftModel)
Note that reference solar radiation pressure pRef
in N/m2 is linked to solar flux SF in
W/m2 using formula pRef = SF/c where c is the speed of light (299792458 m/s). So at 1UA a 1367
W/m2 solar flux is a 4.56 10-6 N/m2 solar radiation pressure.
dRef
- reference distance for the solar radiation pressure (m)pRef
- reference solar radiation pressure at dRef (N/m2)sunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationpublic SolarRadiationPressureEllipsoid(double dRef, double pRef, PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, RadiationSensitive spacecraftModel, boolean computePD)
Note that reference solar radiation pressure pRef
in N/m2 is linked to solar flux SF in
W/m2 using formula pRef = SF/c where c is the speed of light (299792458 m/s). So at 1UA a 1367
W/m2 solar flux is a 4.56 10-6 N/m2 solar radiation pressure.
dRef
- reference distance for the solar radiation pressure (m)pRef
- reference solar radiation pressure at dRef (N/m2)sunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureEllipsoid(Parameter referenceFlux, PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, RadiationSensitive spacecraftModel)
Parameter
.referenceFlux
- the parameter representing the normalized reference fluxsunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationpublic SolarRadiationPressureEllipsoid(Parameter referenceFlux, PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, RadiationSensitive spacecraftModel, boolean computePD)
Parameter
.referenceFlux
- the parameter representing the normalized reference fluxsunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureEllipsoid(double dRef, double pRef, PVCoordinatesProvider sunBody, GeometricBodyShape occultingBody, Assembly assembly, double multiplicativeFactorIn)
dRef
- reference distance for the solar radiation pressure (m)pRef
- reference solar radiation pressure at dRef (N/m2)sunBody
- Sun modeloccultingBody
- occulting body model (for umbra/penumbra computation)assembly
- assembly with aerodynamic propertiesmultiplicativeFactorIn
- multiplicative factor.public SolarRadiationPressureEllipsoid(SolarRadiationPressureEllipsoid otherInstance, Assembly assembly)
otherInstance
- the other instanceassembly
- the new assemblypublic Vector3D getSolarFlux(SpacecraftState s) throws PatriusException
s
- spacecraft statePatriusException
- thrown if Sun position cannot be retrievedpublic Vector3D computeAcceleration(SpacecraftState s) throws PatriusException
computeAcceleration
in interface ForceModel
s
- current state information: date, kinematics, attitudeSpacecraftState frame
PatriusException
- if some specific error occurspublic void addContribution(SpacecraftState s, TimeDerivativesEquations adder) throws PatriusException
addContribution
in interface ForceModel
s
- current state information: date, kinematics, attitudeadder
- object where the contribution should be addedPatriusException
- if some specific error occurspublic double getLightningRatio(Vector3D satSunVector, GeometricBodyShape occultingBody, Vector3D position, Frame frame, AbsoluteDate date) throws PatriusException
satSunVector
- Satellite-Sun vectoroccultingBody
- occulting bodyposition
- the satellite's position in the selected frame.frame
- in which is defined the positiondate
- the datePatriusException
- if an error occurspublic EventDetector[] getEventsDetectors()
getEventsDetectors
in interface ForceModel
public void addDAccDState(SpacecraftState s, double[][] dAccdPos, double[][] dAccdVel) throws PatriusException
addDAccDState
in interface IJacobiansParameterizable
s
- spacecraft statedAccdPos
- acceleration derivatives with respect to positiondAccdVel
- acceleration derivatives with respect to velocityPatriusException
- if derivatives cannot be computedpublic void addDAccDParam(SpacecraftState s, Parameter param, double[] dAccdParam) throws PatriusException
addDAccDParam
in interface IJacobiansParameterizable
s
- spacecraft stateparam
- the parameter with respect to which derivatives are requireddAccdParam
- acceleration derivatives with respect to specified parametersPatriusException
- if derivatives cannot be computedpublic boolean computeGradientPosition()
computeGradientPosition
in interface GradientModel
public boolean computeGradientVelocity()
computeGradientVelocity
in interface GradientModel
public PVCoordinatesProvider getSunBody()
public List<GeometricBodyShape> getOccultingBodies()
public double getMultiplicativeFactor()
public Parameter getReferenceFlux()
public void checkData(AbsoluteDate start, AbsoluteDate end) throws PatriusException
checkData
in interface ForceModel
start
- range start dateend
- range end datePatriusException
- thrown if some data is missingpublic void setEclipsesComputation(boolean eclipsesComputationFlagIn)
eclipsesComputationFlagIn
- true if eclipses should be taken into account, false otherwisepublic boolean isEclipseComputation()
public final void addOccultingBody(GeometricBodyShape body)
body
- occulting body to addCopyright © 2021 CNES. All rights reserved.