fr.cnes.sirius.patrius.forces.radiation
Class PatriusSolarRadiationPressure

java.lang.Object
  extended by org.orekit.parameter.Parameterizable
      extended by org.orekit.parameter.JacobiansParameterizable
          extended by fr.cnes.sirius.patrius.forces.radiation.PatriusSolarRadiationPressure
All Implemented Interfaces:
Serializable, ForceModel, GradientModel, IJacobiansParameterizable, IParameterizable

public class PatriusSolarRadiationPressure
extends JacobiansParameterizable
implements ForceModel, GradientModel

Solar radiation pressure force model with spheroids. Based on the Orekit implementation of SolarRadiationPressure 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.

Since:
1.2
Version:
$Id: PatriusSolarRadiationPressure.java 17586 2017-05-10 13:29:16Z bignon $
Author:
Rami Houdroge
See Also:
Serialized Form
Concurrency :
not thread-safe
Concurrency comment :
fields use Frames

Field Summary
static String REFERENCE_FLUX
          Normalized reference flux.
 
Constructor Summary
PatriusSolarRadiationPressure(double dRef, double pRef, PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel)
          Complete constructor.
PatriusSolarRadiationPressure(double dRef, double pRef, PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel, boolean computePD)
          Complete constructor.
PatriusSolarRadiationPressure(Parameter referenceFlux, PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel)
          Complete constructor using Parameter.
PatriusSolarRadiationPressure(Parameter referenceFlux, PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel, boolean computePD)
          Complete constructor using Parameter.
PatriusSolarRadiationPressure(PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel)
          Simple constructor with default reference values.
PatriusSolarRadiationPressure(PVCoordinatesProvider sunBody, GeometricBodyShape shape, RadiationSensitive spacecraftModel, boolean computePD)
          Simple constructor with default reference values.
 
Method Summary
 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.
 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]).
 
Methods inherited from class org.orekit.parameter.JacobiansParameterizable
addJacobiansParameter, addJacobiansParameter, addJacobiansParameter, supportsJacobianParameter
 
Methods inherited from class org.orekit.parameter.Parameterizable
addParameter, getParameters, supportsParameter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.orekit.parameter.IParameterizable
getParameters, supportsParameter
 

Field Detail

REFERENCE_FLUX

public static final String REFERENCE_FLUX
Normalized reference flux.

See Also:
Constant Field Values
Constructor Detail

PatriusSolarRadiationPressure

public PatriusSolarRadiationPressure(PVCoordinatesProvider sunBody,
                                     GeometricBodyShape shape,
                                     RadiationSensitive spacecraftModel)
Simple constructor with default reference values.

When this constructor is used, the reference values are:

Parameters:
sunBody - Sun model
shape - Earth model (for umbra/penumbra computation)
spacecraftModel - the object physical and geometrical information

PatriusSolarRadiationPressure

public PatriusSolarRadiationPressure(PVCoordinatesProvider sunBody,
                                     GeometricBodyShape shape,
                                     RadiationSensitive spacecraftModel,
                                     boolean computePD)
Simple constructor with default reference values.

When this constructor is used, the reference values are:

Parameters:
sunBody - Sun model
shape - Earth model (for umbra/penumbra computation)
spacecraftModel - the object physical and geometrical information
computePD - true if partial derivatives wrt position have to be computed

PatriusSolarRadiationPressure

public PatriusSolarRadiationPressure(double dRef,
                                     double pRef,
                                     PVCoordinatesProvider sunBody,
                                     GeometricBodyShape shape,
                                     RadiationSensitive spacecraftModel)
Complete constructor.

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.

Parameters:
dRef - reference distance for the solar radiation pressure (m)
pRef - reference solar radiation pressure at dRef (N/m2)
sunBody - Sun model
shape - Earth model (for umbra/penumbra computation)
spacecraftModel - the object physical and geometrical information

PatriusSolarRadiationPressure

public PatriusSolarRadiationPressure(double dRef,
                                     double pRef,
                                     PVCoordinatesProvider sunBody,
                                     GeometricBodyShape shape,
                                     RadiationSensitive spacecraftModel,
                                     boolean computePD)
Complete constructor.

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.

Parameters:
dRef - reference distance for the solar radiation pressure (m)
pRef - reference solar radiation pressure at dRef (N/m2)
sunBody - Sun model
shape - Earth model (for umbra/penumbra computation)
spacecraftModel - the object physical and geometrical information
computePD - true if partial derivatives wrt position have to be computed

PatriusSolarRadiationPressure

public PatriusSolarRadiationPressure(Parameter referenceFlux,
                                     PVCoordinatesProvider sunBody,
                                     GeometricBodyShape shape,
                                     RadiationSensitive spacecraftModel)
Complete constructor using Parameter.

Parameters:
referenceFlux - the parameter representing the normalized reference flux
sunBody - Sun model
shape - Earth model (for umbra/penumbra computation)
spacecraftModel - the object physical and geometrical information

PatriusSolarRadiationPressure

public PatriusSolarRadiationPressure(Parameter referenceFlux,
                                     PVCoordinatesProvider sunBody,
                                     GeometricBodyShape shape,
                                     RadiationSensitive spacecraftModel,
                                     boolean computePD)
Complete constructor using Parameter.

Parameters:
referenceFlux - the parameter representing the normalized reference flux
sunBody - Sun model
shape - Earth model (for umbra/penumbra computation)
spacecraftModel - the object physical and geometrical information
computePD - true if partial derivatives wrt position have to be computed
Method Detail

computeAcceleration

public Vector3D computeAcceleration(SpacecraftState s)
                             throws OrekitException
Description copied from interface: ForceModel
Compute the acceleration due to the force.

Specified by:
computeAcceleration in interface ForceModel
Parameters:
s - current state information: date, kinematics, attitude
Returns:
acceleration in the SpacecraftState frame
Throws:
OrekitException - if some specific error occurs

addContribution

public void addContribution(SpacecraftState s,
                            TimeDerivativesEquations adder)
                     throws OrekitException
Description copied from interface: ForceModel
Compute the contribution of the force model to the perturbing acceleration.

Specified by:
addContribution in interface ForceModel
Parameters:
s - current state information: date, kinematics, attitude
adder - object where the contribution should be added
Throws:
OrekitException - if some specific error occurs

getLightningRatio

public static double getLightningRatio(PVCoordinatesProvider sun,
                                       Vector3D satSunVector,
                                       GeometricBodyShape earthModel,
                                       Vector3D position,
                                       Frame frame,
                                       AbsoluteDate date)
                                throws OrekitException
Get the lightning ratio ([0-1]).

Parameters:
sun - PV provider for the sun
satSunVector - Satellite-Sun vector
earthModel - earth body shape
position - the satellite's position in the selected frame.
frame - in which is defined the position
date - the date
Returns:
lightning ratio
Throws:
OrekitException - if an error occurs

getEventsDetectors

public EventDetector[] getEventsDetectors()
Get the discrete events related to the model.

Specified by:
getEventsDetectors in interface ForceModel
Returns:
array of events detectors or null if the model is not related to any discrete events

addDAccDState

public void addDAccDState(SpacecraftState s,
                          double[][] dAccdPos,
                          double[][] dAccdVel)
                   throws OrekitException
Description copied from interface: IJacobiansParameterizable
Compute acceleration derivatives with respect to state parameters.

Specified by:
addDAccDState in interface IJacobiansParameterizable
Parameters:
s - spacecraft state
dAccdPos - acceleration derivatives with respect to position
dAccdVel - acceleration derivatives with respect to velocity
Throws:
OrekitException - if derivatives cannot be computed

addDAccDParam

public void addDAccDParam(SpacecraftState s,
                          Parameter param,
                          double[] dAccdParam)
                   throws OrekitException
Description copied from interface: IJacobiansParameterizable
Compute acceleration derivatives with respect to additional parameters.

Specified by:
addDAccDParam in interface IJacobiansParameterizable
Parameters:
s - spacecraft state
param - the parameter with respect to which derivatives are required
dAccdParam - acceleration derivatives with respect to specified parameters
Throws:
OrekitException - if derivatives cannot be computed

computeGradientPosition

public boolean computeGradientPosition()
This method returns true if the acceleration partial derivatives with respect to position have to be computed.

Specified by:
computeGradientPosition in interface GradientModel
Returns:
true if the derivatives have to be computed, false otherwise

computeGradientVelocity

public boolean computeGradientVelocity()
This method returns true if the acceleration partial derivatives with respect to velocity have to be computed.

Specified by:
computeGradientVelocity in interface GradientModel
Returns:
true if the derivatives have to be computed, false otherwise


Copyright © 2017 CNES. All Rights Reserved.