fr.cnes.sirius.patrius.stela.forces.radiation
Class SRPSquaring

java.lang.Object
  extended by fr.cnes.sirius.patrius.stela.forces.AbstractStelaGaussContribution
      extended by fr.cnes.sirius.patrius.stela.forces.radiation.SRPSquaring
All Implemented Interfaces:
StelaForceModel

public class SRPSquaring
extends AbstractStelaGaussContribution

Class representing the srp gauss force model for STELA

Since:
1.3
Version:
$Id: SRPSquaring.java 17584 2017-05-10 13:26:39Z bignon $
Author:
Rami Houdroge
See Also:
AbstractStelaGaussContribution
Concurrency :
conditionally thread-safe
Concurrency comment :
thread-safe if the given sun is thread-safe

Field Summary
static int DEFAULT_QUADRATURE_POINTS
          Default quadrature points
 
Fields inherited from class fr.cnes.sirius.patrius.stela.forces.AbstractStelaGaussContribution
dPert
 
Constructor Summary
SRPSquaring(RadiationSensitive radiativeSpacecraft, int quadraturePoints, PVCoordinatesProvider sunBody, double earthRadius)
          Create an instance with an assembly and a number of points.
SRPSquaring(RadiationSensitive radiativeSpacecraft, int quadraturePoints, PVCoordinatesProvider sunBody, double earthRadius, double dRef, double pRef)
          Create an instance with an assembly and a number of points.
SRPSquaring(RadiationSensitive radiativeSpacecraft, PVCoordinatesProvider sunBody, double earthRadius)
          Create an instance with an assembly and a number of points.
 
Method Summary
 Vector3D computeAcceleration(StelaEquinoctialOrbit orbit, PVCoordinates satSunVector)
          Compute the acceleration due to the force.
protected  double[] computeInOutTrueAnom(StelaEquinoctialOrbit orbit, PVCoordinates sunPV)
          Computation of in and out true anomalies of the shadowed part of the orbit.
 double[][] computePartialDerivatives(StelaEquinoctialOrbit orbit)
          Compute the partial derivatives for a given spacecraft state.
 double[] computePerturbation(StelaEquinoctialOrbit orbit, OrbitNatureConverter converter)
          Compute the dE/dt force derivatives for a given spacecraft state.
 double[] computeShortPeriods(StelaEquinoctialOrbit orbit)
          Compute the short periodic variations for a given spacecraft state.
protected  double[] computeSunBetaPhi(StelaEquinoctialOrbit orbit, PVCoordinates sunPV)
          Computation of Sun's right ascension (φ) and declination (β) wrt the orbit plane.
protected  int getPolyOrder(double a0, double a1, double a2, double a3, double a4)
          Determination of the order of A4*s4 + A3*s3 + A2*s2 + A1*s1 + A0 .
protected  double[] rootsFiltering(Complex[] roots)
          Filtering of computed roots.
protected  Complex[] solveBiquadratic(double c4, double c2, double c0)
          Solves the equation c4x4 + c2x2 + c0 = 0.
protected  Complex[] solvePolyDeg2(Complex c2, Complex c1, Complex c0)
          Solves the complex equation c2x2 + c1x + c0 = 0.
protected  Complex[] solvePolyDeg3(double c3, double c2, double c1, double c0)
          Solves the equation c3x3 + c2x2 + c1x + c0 = 0.
protected  Complex[] solvePolyDeg4(double c4, double c3, double c2, double c1, double c0)
          Solves the equation c4x4 + c3x3 + c2x2 + c1x + c0 = 0.
 
Methods inherited from class fr.cnes.sirius.patrius.stela.forces.AbstractStelaGaussContribution
computeGaussDerivativeEquations, computeGaussEquations, getdPert, getType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_QUADRATURE_POINTS

public static final int DEFAULT_QUADRATURE_POINTS
Default quadrature points

See Also:
Constant Field Values
Constructor Detail

SRPSquaring

public SRPSquaring(RadiationSensitive radiativeSpacecraft,
                   PVCoordinatesProvider sunBody,
                   double earthRadius)
Create an instance with an assembly and a number of points. Reference normalized flux is that of STELA.

Parameters:
radiativeSpacecraft - the radiative spacecraft
sunBody - the sun
earthRadius - earth's equatorial radius

SRPSquaring

public SRPSquaring(RadiationSensitive radiativeSpacecraft,
                   int quadraturePoints,
                   PVCoordinatesProvider sunBody,
                   double earthRadius)
Create an instance with an assembly and a number of points. Reference normalized flux is that of STELA.

Parameters:
radiativeSpacecraft - the radiative spacecraft
quadraturePoints - the number of points for quadrature
sunBody - the sun
earthRadius - earth's equatorial radius

SRPSquaring

public SRPSquaring(RadiationSensitive radiativeSpacecraft,
                   int quadraturePoints,
                   PVCoordinatesProvider sunBody,
                   double earthRadius,
                   double dRef,
                   double pRef)
Create an instance with an assembly and a number of points.

Parameters:
radiativeSpacecraft - the radiative spacecraft
quadraturePoints - the number of points for quadrature
sunBody - the sun
earthRadius - earth's equatorial radius
dRef - reference distance for the solar radiation pressure (m)
pRef - reference solar radiation pressure at dRef (N/m2)
Method Detail

computePerturbation

public double[] computePerturbation(StelaEquinoctialOrbit orbit,
                                    OrbitNatureConverter converter)
                             throws OrekitException
Compute the dE/dt force derivatives for a given spacecraft state.

Specified by:
computePerturbation in class AbstractStelaGaussContribution
Parameters:
orbit - current orbit information: date, kinematics
converter - mean / osculating parameters converter
Returns:
the perturbation dE/dt for the current force
Throws:
OrekitException - if perturbation computation fails

computeAcceleration

public Vector3D computeAcceleration(StelaEquinoctialOrbit orbit,
                                    PVCoordinates satSunVector)
                             throws OrekitException
Compute the acceleration due to the force.

Parameters:
orbit - an orbit
satSunVector - Satellite - Sun vector coordinates
Returns:
acceleration in the orbit reference frame
Throws:
OrekitException - if some specific error occurs

computeInOutTrueAnom

protected double[] computeInOutTrueAnom(StelaEquinoctialOrbit orbit,
                                        PVCoordinates sunPV)
                                 throws OrekitException
Computation of in and out true anomalies of the shadowed part of the orbit.

Parameters:
orbit - an orbit
sunPV - Sun coordinates
Returns:
in, νout] : in and out true anomalies
Throws:
OrekitException - if computation of declination and right ascension of the Sun fails

rootsFiltering

protected double[] rootsFiltering(Complex[] roots)
Filtering of computed roots.

Parameters:
roots - roots of a polynomial
Returns:
in , αout], with αin < αout

solvePolyDeg2

protected Complex[] solvePolyDeg2(Complex c2,
                                  Complex c1,
                                  Complex c0)
Solves the complex equation c2x2 + c1x + c0 = 0.

Parameters:
c2 - coefficient of order 2
c1 - coefficient of order 1
c0 - coefficient of order 0
Returns:
[x0, x1] where x0 and x1 are the roots of the equation

solvePolyDeg3

protected Complex[] solvePolyDeg3(double c3,
                                  double c2,
                                  double c1,
                                  double c0)
Solves the equation c3x3 + c2x2 + c1x + c0 = 0.

Parameters:
c3 - coefficient of order 3
c2 - coefficient of order 2
c1 - coefficient of order 1
c0 - coefficient of order 0
Returns:
[x0, x1, x2] where x0 , x1 and x2 are the roots of the equation

solveBiquadratic

protected Complex[] solveBiquadratic(double c4,
                                     double c2,
                                     double c0)
Solves the equation c4x4 + c2x2 + c0 = 0.

Parameters:
c4 - coefficient of order 4
c2 - coefficient of order 2
c0 - coefficient of order 0
Returns:
[x0, x1, x2, x3] where x0 , x1 , x2 and x3 are the roots of the equation

solvePolyDeg4

protected Complex[] solvePolyDeg4(double c4,
                                  double c3,
                                  double c2,
                                  double c1,
                                  double c0)
Solves the equation c4x4 + c3x3 + c2x2 + c1x + c0 = 0.

Parameters:
c4 - coefficient of order 4
c3 - coefficient of order 3
c2 - coefficient of order 2
c1 - coefficient of order 1
c0 - coefficient of order 0
Returns:
[x0, x1, x2, x3] where x0 , x1 , x2 and x3 are the roots of the equation

getPolyOrder

protected int getPolyOrder(double a0,
                           double a1,
                           double a2,
                           double a3,
                           double a4)
Determination of the order of A4*s4 + A3*s3 + A2*s2 + A1*s1 + A0 .

Parameters:
a0 - coefficient of order 0
a1 - coefficient of order 1
a2 - coefficient of order 2
a3 - coefficient of order 3
a4 - coefficient of order 4
Returns:
the polynomial order

computeSunBetaPhi

protected double[] computeSunBetaPhi(StelaEquinoctialOrbit orbit,
                                     PVCoordinates sunPV)
                              throws OrekitException
Computation of Sun's right ascension (φ) and declination (β) wrt the orbit plane.

Parameters:
orbit - orbit
sunPV - the sun PV coordinates
Returns:
[β,φ]
Throws:
OrekitException - if sun position cannot be computed raised if beta computation fails

computeShortPeriods

public double[] computeShortPeriods(StelaEquinoctialOrbit orbit)
                             throws OrekitException
Compute the short periodic variations for a given spacecraft state.

Parameters:
orbit - current orbit information: date, kinematics
Returns:
the short periodic variations of the current force
Throws:
OrekitException - if short periods computation fails

computePartialDerivatives

public double[][] computePartialDerivatives(StelaEquinoctialOrbit orbit)
                                     throws OrekitException
Compute the partial derivatives for a given spacecraft state.

Parameters:
orbit - current orbit information: date, kinematics
Returns:
the partial derivatives of the current force
Throws:
OrekitException - if partial derivatives computation fails


Copyright © 2017 CNES. All Rights Reserved.