public class BoxAndSolarArraySpacecraft extends Object implements RadiationSensitive, DragSensitive
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.
SphericalSpacecraft
Modifier and Type | Class and Description |
---|---|
static class |
BoxAndSolarArraySpacecraft.Facet
Class representing a single facet of a convex spacecraft body.
|
ABSORPTION_COEFFICIENT, REFLECTION_COEFFICIENT
DRAG_COEFFICIENT
Constructor and Description |
---|
BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets,
PVCoordinatesProvider sun,
double solarArrayArea,
Vector3D solarArrayAxis,
AbsoluteDate referenceDate,
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,
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,
Vector3D solarArrayAxis,
AbsoluteDate referenceDate,
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,
Vector3D solarArrayAxis,
double dragCoeff,
double absorptionCoeff,
double reflectionCoeff)
Build a spacecraft model with best lightning of solar array.
|
Modifier and Type | Method and Description |
---|---|
FieldVector3D<DerivativeStructure> |
dragAcceleration(AbsoluteDate date,
Frame frame,
FieldVector3D<DerivativeStructure> position,
FieldRotation<DerivativeStructure> rotation,
DerivativeStructure mass,
double density,
FieldVector3D<DerivativeStructure> relativeVelocity)
Compute the acceleration due to drag, with state derivatives.
|
Vector3D |
dragAcceleration(AbsoluteDate date,
Frame frame,
Vector3D position,
Rotation rotation,
double mass,
double density,
Vector3D relativeVelocity)
Compute the acceleration due to drag.
|
FieldVector3D<DerivativeStructure> |
dragAcceleration(AbsoluteDate date,
Frame frame,
Vector3D position,
Rotation rotation,
double mass,
double density,
Vector3D relativeVelocity,
String paramName)
Compute acceleration due to drag, with parameters derivatives.
|
double |
getAbsorptionCoefficient()
Get the absorption coefficient.
|
double |
getDragCoefficient()
Get the drag coefficient.
|
FieldVector3D<DerivativeStructure> |
getNormal(AbsoluteDate date,
Frame frame,
FieldVector3D<DerivativeStructure> position,
FieldRotation<DerivativeStructure> rotation)
Get solar array normal in spacecraft frame.
|
Vector3D |
getNormal(AbsoluteDate date,
Frame frame,
Vector3D position,
Rotation rotation)
Get solar array normal in spacecraft frame.
|
double |
getReflectionCoefficient()
Get the specular reflection coefficient.
|
FieldVector3D<DerivativeStructure> |
radiationPressureAcceleration(AbsoluteDate date,
Frame frame,
FieldVector3D<DerivativeStructure> position,
FieldRotation<DerivativeStructure> rotation,
DerivativeStructure mass,
FieldVector3D<DerivativeStructure> flux)
Compute the acceleration due to radiation pressure, with state derivatives.
|
Vector3D |
radiationPressureAcceleration(AbsoluteDate date,
Frame frame,
Vector3D position,
Rotation rotation,
double mass,
Vector3D flux)
Compute the acceleration due to radiation pressure.
|
FieldVector3D<DerivativeStructure> |
radiationPressureAcceleration(AbsoluteDate date,
Frame frame,
Vector3D position,
Rotation rotation,
double mass,
Vector3D flux,
String paramName)
Compute the acceleration due to radiation pressure, with parameters derivatives.
|
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.
|
public BoxAndSolarArraySpacecraft(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, Vector3D solarArrayAxis, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
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.
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 modelsolarArrayArea
- area of the solar array (m²)solarArrayAxis
- solar array rotation axis in satellite framedragCoeff
- 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)public BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, Vector3D solarArrayAxis, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
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 m².
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.
facets
- body facets (only the facets with strictly positive area will be stored)sun
- sun modelsolarArrayArea
- area of the solar array (m²)solarArrayAxis
- solar array rotation axis in satellite framedragCoeff
- 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)public BoxAndSolarArraySpacecraft(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, Vector3D solarArrayAxis, AbsoluteDate referenceDate, Vector3D referenceNormal, double rotationRate, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
Solar arrays orientation will be a regular rotation from the reference orientation at reference date and using a constant rotation rate.
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 modelsolarArrayArea
- area of the solar array (m²)solarArrayAxis
- solar array rotation axis in satellite framereferenceDate
- reference date for the solar array rotationreferenceNormal
- direction of the solar array normal at reference date
in spacecraft framerotationRate
- 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)public BoxAndSolarArraySpacecraft(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, Vector3D solarArrayAxis, AbsoluteDate referenceDate, Vector3D referenceNormal, double rotationRate, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
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 m².
Solar arrays orientation will be a regular rotation from the reference orientation at reference date and using a constant rotation rate.
facets
- body facets (only the facets with strictly positive area will be stored)sun
- sun modelsolarArrayArea
- area of the solar array (m²)solarArrayAxis
- solar array rotation axis in satellite framereferenceDate
- reference date for the solar array rotationreferenceNormal
- direction of the solar array normal at reference date
in spacecraft framerotationRate
- 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)public Vector3D getNormal(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation) throws OrekitException
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference frameOrekitException
- if sun direction cannot be computed in best lightning
configurationpublic FieldVector3D<DerivativeStructure> getNormal(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position, FieldRotation<DerivativeStructure> rotation) throws OrekitException
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference frameOrekitException
- if sun direction cannot be computed in best lightning
configurationpublic Vector3D dragAcceleration(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation, double mass, double density, Vector3D relativeVelocity) throws OrekitException
The computation includes all spacecraft specific characteristics like shape, area and coefficients.
dragAcceleration
in interface DragSensitive
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- current massdensity
- atmospheric density at spacecraft positionrelativeVelocity
- relative velocity of atmosphere with respect to spacecraft,
in the same inertial frame as spacecraft orbit (m/s)OrekitException
- if acceleration cannot be computedpublic FieldVector3D<DerivativeStructure> dragAcceleration(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position, FieldRotation<DerivativeStructure> rotation, DerivativeStructure mass, double density, FieldVector3D<DerivativeStructure> relativeVelocity) throws OrekitException
The computation includes all spacecraft specific characteristics like shape, area and coefficients.
dragAcceleration
in interface DragSensitive
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- spacecraft massdensity
- atmospheric density at spacecraft positionrelativeVelocity
- relative velocity of atmosphere with respect to spacecraft,
in the same inertial frame as spacecraft orbit (m/s)OrekitException
- if acceleration cannot be computedpublic FieldVector3D<DerivativeStructure> dragAcceleration(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation, double mass, double density, Vector3D relativeVelocity, String paramName) throws OrekitException
dragAcceleration
in interface DragSensitive
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- current massdensity
- atmospheric density at spacecraft positionrelativeVelocity
- relative velocity of atmosphere with respect to spacecraft,
in the same inertial frame as spacecraft orbit (m/s)paramName
- name of the parameter with respect to which derivatives are requiredOrekitException
- if derivatives cannot be computedpublic Vector3D radiationPressureAcceleration(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation, double mass, Vector3D flux) throws OrekitException
radiationPressureAcceleration
in interface RadiationSensitive
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- current massflux
- radiation flux in the same inertial frame as spacecraft orbitOrekitException
- if acceleration cannot be computedpublic FieldVector3D<DerivativeStructure> radiationPressureAcceleration(AbsoluteDate date, Frame frame, FieldVector3D<DerivativeStructure> position, FieldRotation<DerivativeStructure> rotation, DerivativeStructure mass, FieldVector3D<DerivativeStructure> flux) throws OrekitException
radiationPressureAcceleration
in interface RadiationSensitive
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- spacecraft massflux
- radiation flux in the same inertial frame as spacecraft orbitOrekitException
- if acceleration cannot be computedpublic FieldVector3D<DerivativeStructure> radiationPressureAcceleration(AbsoluteDate date, Frame frame, Vector3D position, Rotation rotation, double mass, Vector3D flux, String paramName) throws OrekitException
radiationPressureAcceleration
in interface RadiationSensitive
date
- current dateframe
- inertial reference frame for state (both orbit and attitude)position
- position of spacecraft in reference framerotation
- orientation (attitude) of the spacecraft with respect to reference framemass
- current massflux
- radiation flux in the same inertial frame as spacecraft orbitparamName
- name of the parameter with respect to which derivatives are requiredOrekitException
- if acceleration cannot be computedpublic void setAbsorptionCoefficient(double value)
setAbsorptionCoefficient
in interface RadiationSensitive
value
- absorption coefficientpublic double getAbsorptionCoefficient()
getAbsorptionCoefficient
in interface RadiationSensitive
public void setReflectionCoefficient(double value)
setReflectionCoefficient
in interface RadiationSensitive
value
- specular reflection coefficientpublic double getReflectionCoefficient()
getReflectionCoefficient
in interface RadiationSensitive
public void setDragCoefficient(double value)
setDragCoefficient
in interface DragSensitive
value
- drag coefficientpublic double getDragCoefficient()
getDragCoefficient
in interface DragSensitive
Copyright © 2002-2015 CS Systèmes d'information. All rights reserved.