public class SolarRadiationPressureCircular extends JacobiansParameterizable implements ForceModel, GradientModel
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 |
---|
SolarRadiationPressureCircular(double dRef,
double pRef,
PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
Frame occultingBodyFrame,
RadiationSensitive spacecraftIn,
boolean computePD)
Complete constructor.
|
SolarRadiationPressureCircular(double dRef,
double pRef,
PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
RadiationSensitive spacecraftIn)
Complete constructor.
|
SolarRadiationPressureCircular(double dRef,
double pRef,
PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
RadiationSensitive spacecraftIn,
boolean computePD)
Complete constructor.
|
SolarRadiationPressureCircular(Parameter refFlux,
PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
Frame occultingBodyFrame,
RadiationSensitive spacecraftIn,
boolean computePD)
Complete constructor.
|
SolarRadiationPressureCircular(Parameter refFlux,
PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
RadiationSensitive spacecraftIn)
Complete constructor.
|
SolarRadiationPressureCircular(Parameter refFlux,
PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
RadiationSensitive spacecraftIn,
boolean computePD)
Complete constructor.
|
SolarRadiationPressureCircular(PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
Frame occultingBodyFrame,
RadiationSensitive spacecraftIn,
boolean computePD)
Simple constructor with default reference values.
|
SolarRadiationPressureCircular(PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
RadiationSensitive spacecraftIn)
Simple constructor with default reference values.
|
SolarRadiationPressureCircular(PVCoordinatesProvider sunIn,
double equatorialRadiusIn,
RadiationSensitive spacecraftIn,
boolean computePD)
Simple constructor with default reference values.
|
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(double bodyRadius,
Frame bodyFrame)
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.
|
List<Double> |
getEquatorialRadius()
Get the equatorial radius of occulting bodies.
|
EventDetector[] |
getEventsDetectors()
Get the discrete events related to the model.
|
double |
getkRefValue()
Get the parameter value representing the reference flux normalized for a 1m distance (N).
|
double |
getLightningRatio(Vector3D position,
Frame frame,
AbsoluteDate date)
Get the lightning ratio ([0-1]).
|
List<Frame> |
getOccultingBodiesFrame()
Returns the list of occulting bodies frame.
|
List<Double> |
getOccultingbodiesRadius()
Returns the list of occulting bodies radius.
|
PVCoordinatesProvider |
getSun()
Get sun model
|
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 SolarRadiationPressureCircular(PVCoordinatesProvider sunIn, double equatorialRadiusIn, RadiationSensitive spacecraftIn)
When this constructor is used, the reference values are:
sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)spacecraftIn
- the object physical and geometrical informationpublic SolarRadiationPressureCircular(PVCoordinatesProvider sunIn, double equatorialRadiusIn, RadiationSensitive spacecraftIn, boolean computePD)
When this constructor is used, the reference values are:
sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)spacecraftIn
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureCircular(PVCoordinatesProvider sunIn, double equatorialRadiusIn, Frame occultingBodyFrame, RadiationSensitive spacecraftIn, boolean computePD)
When this constructor is used, the reference values are:
sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)occultingBodyFrame
- occulting body-centered framespacecraftIn
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureCircular(double dRef, double pRef, PVCoordinatesProvider sunIn, double equatorialRadiusIn, RadiationSensitive spacecraftIn)
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)sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)spacecraftIn
- the object physical and geometrical informationpublic SolarRadiationPressureCircular(double dRef, double pRef, PVCoordinatesProvider sunIn, double equatorialRadiusIn, RadiationSensitive spacecraftIn, 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)sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)spacecraftIn
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureCircular(double dRef, double pRef, PVCoordinatesProvider sunIn, double equatorialRadiusIn, Frame occultingBodyFrame, RadiationSensitive spacecraftIn, 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)sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)occultingBodyFrame
- occulting body-centered framespacecraftIn
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureCircular(Parameter refFlux, PVCoordinatesProvider sunIn, double equatorialRadiusIn, RadiationSensitive spacecraftIn)
refFlux
- parameter representing the reference flux normalized for a 1m distance (N)sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)spacecraftIn
- the object physical and geometrical informationpublic SolarRadiationPressureCircular(Parameter refFlux, PVCoordinatesProvider sunIn, double equatorialRadiusIn, RadiationSensitive spacecraftIn, boolean computePD)
refFlux
- parameter representing the reference flux normalized for a 1m distance (N)sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)spacecraftIn
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic SolarRadiationPressureCircular(Parameter refFlux, PVCoordinatesProvider sunIn, double equatorialRadiusIn, Frame occultingBodyFrame, RadiationSensitive spacecraftIn, boolean computePD)
refFlux
- parameter representing the reference flux normalized for a 1m distance (N)sunIn
- Sun modelequatorialRadiusIn
- spherical shape model (for umbra/penumbra computation)occultingBodyFrame
- occulting body-centered framespacecraftIn
- the object physical and geometrical informationcomputePD
- true if partial derivatives wrt position have to be computedpublic 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 position, Frame frame, AbsoluteDate date) throws PatriusException
In case of multiple occulting bodies, the assumption is made that only one body occults the spacecraft at a time.
position
- 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 double getkRefValue()
public PVCoordinatesProvider getSun()
public List<Double> getEquatorialRadius()
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(double bodyRadius, Frame bodyFrame)
bodyRadius
- occulting body radius to addbodyFrame
- occulting body-centered frame to addpublic List<Double> getOccultingbodiesRadius()
Copyright © 2021 CNES. All rights reserved.