public class SolarRadiationPressureEllipsoid extends JacobiansParameterizable implements ForceModel, GradientModel
spheroids
. Based on the
Orekit implementation of SolarRadiationPressureCircular
for a spherical Earth.
The implementation of this class enables the computation of partial derivatives with respect to absorption, specular reflection or diffusion reflection coefficients.
Modifier and Type | Field and Description |
---|---|
static String |
REFERENCE_FLUX
Normalized reference flux.
|
Constructor and Description |
---|
SolarRadiationPressureEllipsoid(double dRef,
double pRef,
PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
Assembly assembly,
double multiplicativeFactorIn)
Creates a new instance.
|
SolarRadiationPressureEllipsoid(double dRef,
double pRef,
PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
RadiationSensitive spacecraftModel)
Complete constructor.
|
SolarRadiationPressureEllipsoid(double dRef,
double pRef,
PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
RadiationSensitive spacecraftModel,
boolean computePD)
Complete constructor.
|
SolarRadiationPressureEllipsoid(Parameter referenceFlux,
PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
RadiationSensitive spacecraftModel)
Complete constructor using
Parameter . |
SolarRadiationPressureEllipsoid(Parameter referenceFlux,
PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
RadiationSensitive spacecraftModel,
boolean computePD)
Complete constructor using
Parameter . |
SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
RadiationSensitive spacecraftModel)
Simple constructor with default reference values.
|
SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody,
GeometricBodyShape shape,
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 |
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.
|
static double |
getLightningRatio(PVCoordinatesProvider sun,
Vector3D satSunVector,
GeometricBodyShape earthModel,
Vector3D position,
Frame frame,
AbsoluteDate date)
Get the lightning ratio ([0-1]).
|
double |
getMultiplicativeFactor() |
Parameter |
getReferenceFlux()
Get the normalized reference flux parameter
|
GeometricBodyShape |
getShape()
Getter for the Earth model used at construction.
|
Vector3D |
getSolarFlux(SpacecraftState s)
Compute solar flux.
|
PVCoordinatesProvider |
getSunBody()
Getter for the Sun model used at construction.
|
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
addParameter, getParameters, supportsParameter
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getParameters, supportsParameter
public static final String REFERENCE_FLUX
public SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel)
When this constructor is used, the reference values are:
sunBody
- Sun modelshape
- Earth model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationpublic SolarRadiationPressureEllipsoid(PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel, boolean computePD)
When this constructor is used, the reference values are:
sunBody
- Sun modelshape
- Earth 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 shape, 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 modelshape
- Earth model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationpublic SolarRadiationPressureEllipsoid(double dRef, double pRef, PVCoordinatesProvider sunBody, GeometricBodyShape shape, 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 modelshape
- Earth 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 shape, RadiationSensitive spacecraftModel)
Parameter
.referenceFlux
- the parameter representing the normalized reference fluxsunBody
- Sun modelshape
- Earth model (for umbra/penumbra computation)spacecraftModel
- the object physical and geometrical informationpublic SolarRadiationPressureEllipsoid(Parameter referenceFlux, PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel, boolean computePD)
Parameter
.referenceFlux
- the parameter representing the normalized reference fluxsunBody
- Sun modelshape
- Earth 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 shape, Assembly assembly, double multiplicativeFactorIn)
dRef
- reference distance for the solar radiation pressure (m)pRef
- reference solar radiation pressure at dRef (N/m2)sunBody
- Sun modelshape
- Earth 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 static double getLightningRatio(PVCoordinatesProvider sun, Vector3D satSunVector, GeometricBodyShape earthModel, Vector3D position, Frame frame, AbsoluteDate date) throws PatriusException
sun
- PV provider for the sunsatSunVector
- Satellite-Sun vectorearthModel
- earth body shapeposition
- 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 GeometricBodyShape getShape()
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 missingCopyright © 2021 CNES. All rights reserved.