org.orekit.forces
Class BoxAndSolarArraySpacecraft

java.lang.Object
  extended by org.orekit.forces.BoxAndSolarArraySpacecraft
All Implemented Interfaces:
java.io.Serializable, DragSensitive, RadiationSensitive

public class BoxAndSolarArraySpacecraft
extends java.lang.Object
implements RadiationSensitive, DragSensitive

experimental class representing the features of a classical satellite with a convex body shape and rotating flat solar arrays.

As of 5.0, this class is still considered experimental, so use it with care.

The body can be either a simple parallelepipedic box aligned with spacecraft axes or a set of facets defined by their area and normal vector. This should handle accurately most spacecraft shapes.

The solar array rotation with respect to satellite body can be either the best lightning orientation (i.e. Sun exactly in solar array meridian plane defined by solar array rotation axis and solar array normal vector) or a rotation evolving linearly according to a start position and an angular rate (which can be set to 0 for non-rotating panels, which may occur in special modes or during contingencies).

This model does not take cast shadow between body and solar array into account.

Instances of this class are guaranteed to be immutable.

Version:
$Revision: 3197 $ $Date: 2010-04-28 10:39:09 +0200 (mer. 28 avril 2010) $
Author:
Luc Maisonobe, Pascal Parraud
See Also:
SphericalSpacecraft, Serialized Form

Nested Class Summary
static class BoxAndSolarArraySpacecraft.Facet
          Class representing a single facet of a convex spacecraft body.
 
Constructor Summary
BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, org.apache.commons.math.geometry.Vector3D solarArrayAxis, AbsoluteDate referenceDate, org.apache.commons.math.geometry.Vector3D referenceNormal, double rotationRate, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
          Build a spacecraft model with linear rotation of solar array.
BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, org.apache.commons.math.geometry.Vector3D solarArrayAxis, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
          Build a spacecraft model with best lightning of solar array.
BoxAndSolarArraySpacecraft(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, org.apache.commons.math.geometry.Vector3D solarArrayAxis, AbsoluteDate referenceDate, org.apache.commons.math.geometry.Vector3D referenceNormal, double rotationRate, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
          Build a spacecraft model with linear rotation of solar array.
BoxAndSolarArraySpacecraft(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, org.apache.commons.math.geometry.Vector3D solarArrayAxis, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
          Build a spacecraft model with best lightning of solar array.
 
Method Summary
 org.apache.commons.math.geometry.Vector3D dragAcceleration(SpacecraftState state, double density, org.apache.commons.math.geometry.Vector3D relativeVelocity)
          Compute the acceleration due to drag.
 double getAbsorptionCoefficient()
          Get the absorption coefficient.
 double getDragCoefficient()
          Get the drag coefficient.
 org.apache.commons.math.geometry.Vector3D getNormal(SpacecraftState state)
          Get solar array normal in spacecraft frame.
 double getReflectionCoefficient()
          Get the specular reflection coefficient.
 org.apache.commons.math.geometry.Vector3D radiationPressureAcceleration(SpacecraftState state, org.apache.commons.math.geometry.Vector3D flux)
          Compute the acceleration due to radiation pressure.
 void setAbsorptionCoefficient(double value)
          Set the absorption coefficient.
 void setDragCoefficient(double value)
          Set the drag coefficient.
 void setReflectionCoefficient(double value)
          Set the specular reflection coefficient.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BoxAndSolarArraySpacecraft

public BoxAndSolarArraySpacecraft(double xLength,
                                  double yLength,
                                  double zLength,
                                  PVCoordinatesProvider sun,
                                  double solarArrayArea,
                                  org.apache.commons.math.geometry.Vector3D solarArrayAxis,
                                  double dragCoeff,
                                  double absorptionCoeff,
                                  double reflectionCoeff)
Build a spacecraft model with best lightning of solar array.

Solar arrays orientation will be such that at each time the Sun direction will always be in the solar array meridian plane defined by solar array rotation axis and solar array normal vector.

Parameters:
xLength - length of the body along its X axis (m)
yLength - length of the body along its Y axis (m)
zLength - length of the body along its Z axis (m)
sun - sun model
solarArrayArea - area of the solar array (m2)
solarArrayAxis - solar array rotation axis in satellite frame
dragCoeff - drag coefficient (used only for drag)
absorptionCoeff - absorption coefficient between 0.0 an 1.0 (used only for radiation pressure)
reflectionCoeff - specular reflection coefficient between 0.0 an 1.0 (used only for radiation pressure)

BoxAndSolarArraySpacecraft

public BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets,
                                  PVCoordinatesProvider sun,
                                  double solarArrayArea,
                                  org.apache.commons.math.geometry.Vector3D solarArrayAxis,
                                  double dragCoeff,
                                  double absorptionCoeff,
                                  double reflectionCoeff)
Build a spacecraft model with best lightning of solar array.

The spacecraft body is described by an array of surface vectors. Each facet of the body is describe by a vector normal to the facet (pointing outward of the spacecraft) and whose norm is the surface area in m2.

Solar arrays orientation will be such that at each time the Sun direction will always be in the solar array meridian plane defined by solar array rotation axis and solar array normal vector.

Parameters:
facets - body facets (only the facets with strictly positive area will be stored)
sun - sun model
solarArrayArea - area of the solar array (m2)
solarArrayAxis - solar array rotation axis in satellite frame
dragCoeff - drag coefficient (used only for drag)
absorptionCoeff - absorption coefficient between 0.0 an 1.0 (used only for radiation pressure)
reflectionCoeff - specular reflection coefficient between 0.0 an 1.0 (used only for radiation pressure)

BoxAndSolarArraySpacecraft

public BoxAndSolarArraySpacecraft(double xLength,
                                  double yLength,
                                  double zLength,
                                  PVCoordinatesProvider sun,
                                  double solarArrayArea,
                                  org.apache.commons.math.geometry.Vector3D solarArrayAxis,
                                  AbsoluteDate referenceDate,
                                  org.apache.commons.math.geometry.Vector3D referenceNormal,
                                  double rotationRate,
                                  double dragCoeff,
                                  double absorptionCoeff,
                                  double reflectionCoeff)
Build a spacecraft model with linear rotation of solar array.

Solar arrays orientation will be a regular rotation from the reference orientation at reference date and using a constant rotation rate.

Parameters:
xLength - length of the body along its X axis (m)
yLength - length of the body along its Y axis (m)
zLength - length of the body along its Z axis (m)
sun - sun model
solarArrayArea - area of the solar array (m2)
solarArrayAxis - solar array rotation axis in satellite frame
referenceDate - reference date for the solar array rotation
referenceNormal - direction of the solar array normal at reference date in spacecraft frame
rotationRate - rotation rate of the solar array, may be 0 (rad/s)
dragCoeff - drag coefficient (used only for drag)
absorptionCoeff - absorption coefficient between 0.0 an 1.0 (used only for radiation pressure)
reflectionCoeff - specular reflection coefficient between 0.0 an 1.0 (used only for radiation pressure)

BoxAndSolarArraySpacecraft

public BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets,
                                  PVCoordinatesProvider sun,
                                  double solarArrayArea,
                                  org.apache.commons.math.geometry.Vector3D solarArrayAxis,
                                  AbsoluteDate referenceDate,
                                  org.apache.commons.math.geometry.Vector3D referenceNormal,
                                  double rotationRate,
                                  double dragCoeff,
                                  double absorptionCoeff,
                                  double reflectionCoeff)
Build a spacecraft model with linear rotation of solar array.

The spacecraft body is described by an array of surface vectors. Each facet of the body is describe by a vector normal to the facet (pointing outward of the spacecraft) and whose norm is the surface area in m2.

Solar arrays orientation will be a regular rotation from the reference orientation at reference date and using a constant rotation rate.

Parameters:
facets - body facets (only the facets with strictly positive area will be stored)
sun - sun model
solarArrayArea - area of the solar array (m2)
solarArrayAxis - solar array rotation axis in satellite frame
referenceDate - reference date for the solar array rotation
referenceNormal - direction of the solar array normal at reference date in spacecraft frame
rotationRate - rotation rate of the solar array, may be 0 (rad/s)
dragCoeff - drag coefficient (used only for drag)
absorptionCoeff - absorption coefficient between 0.0 an 1.0 (used only for radiation pressure)
reflectionCoeff - specular reflection coefficient between 0.0 an 1.0 (used only for radiation pressure)
Method Detail

getNormal

public org.apache.commons.math.geometry.Vector3D getNormal(SpacecraftState state)
                                                    throws OrekitException
Get solar array normal in spacecraft frame.

Parameters:
state - current state information: date, kinematics, attitude
Returns:
solar array normal in spacecraft frame
Throws:
OrekitException - if sun direction cannot be computed in best lightning configuration

dragAcceleration

public org.apache.commons.math.geometry.Vector3D dragAcceleration(SpacecraftState state,
                                                                  double density,
                                                                  org.apache.commons.math.geometry.Vector3D relativeVelocity)
                                                           throws OrekitException
Compute the acceleration due to drag.

The computation includes all spacecraft specific characteristics like shape, area and coefficients.

Specified by:
dragAcceleration in interface DragSensitive
Parameters:
state - current state information: date, kinematics, attitude
density - atmospheric density at spacecraft position
relativeVelocity - relative velocity of atmosphere with respect to spacecraft, in the same inertial frame as spacecraft orbit (m/s)
Returns:
spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s2)
Throws:
OrekitException - if acceleration cannot be computed

radiationPressureAcceleration

public org.apache.commons.math.geometry.Vector3D radiationPressureAcceleration(SpacecraftState state,
                                                                               org.apache.commons.math.geometry.Vector3D flux)
                                                                        throws OrekitException
Compute the acceleration due to radiation pressure.

The computation includes all spacecraft specific characteristics like shape, area and coefficients.

Specified by:
radiationPressureAcceleration in interface RadiationSensitive
Parameters:
state - current state information: date, kinematics, attitude
flux - radiation flux in the same inertial frame as spacecraft orbit
Returns:
spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s2)
Throws:
OrekitException - if acceleration cannot be computed

setAbsorptionCoefficient

public void setAbsorptionCoefficient(double value)
Set the absorption coefficient.

Specified by:
setAbsorptionCoefficient in interface RadiationSensitive
Parameters:
value - absorption coefficient

getAbsorptionCoefficient

public double getAbsorptionCoefficient()
Get the absorption coefficient.

Specified by:
getAbsorptionCoefficient in interface RadiationSensitive
Returns:
absorption coefficient

setReflectionCoefficient

public void setReflectionCoefficient(double value)
Set the specular reflection coefficient.

Specified by:
setReflectionCoefficient in interface RadiationSensitive
Parameters:
value - specular reflection coefficient

getReflectionCoefficient

public double getReflectionCoefficient()
Get the specular reflection coefficient.

Specified by:
getReflectionCoefficient in interface RadiationSensitive
Returns:
reflection coefficient

setDragCoefficient

public void setDragCoefficient(double value)
Set the drag coefficient.

Specified by:
setDragCoefficient in interface DragSensitive
Parameters:
value - drag coefficient

getDragCoefficient

public double getDragCoefficient()
Get the drag coefficient.

Specified by:
getDragCoefficient in interface DragSensitive
Returns:
drag coefficient


Copyright © 2002-2010 CS Communication & Systèmes. All Rights Reserved.