Class BoxAndSolarArraySpacecraft
- All Implemented Interfaces:
DragSensitive,RadiationSensitive
The body can be either a simple parallelepipedic box aligned with spacecraft axes or a set of panels defined by their area and normal vector. Some panels may be moving to model solar arrays (or antennas that could point anywhere). This should handle accurately most spacecraft shapes. This model does not take cast shadows into account.
The lift component of the drag force can be optionally considered. It should probably only be used for reentry computation, with much denser atmosphere than in regular orbit propagation. The lift component is computed using a ratio of molecules that experience specular reflection instead of diffuse reflection (absorption followed by outgassing at negligible velocity). Without lift (i.e. when the lift ratio is set to 0), drag force is along atmosphere relative velocity. With lift (i.e. when the lift ratio is set to any value between 0 and 1), the drag force depends on both relative velocity direction and panels normal orientation. For a single panel, if the relative velocity is head-on (i.e. aligned with the panel normal), the force will be in the same direction with and without lift, but the magnitude with lift ratio set to 1.0 will be twice the magnitude with lift ratio set to 0.0 (because atmosphere molecules bounces backward at same velocity in case of specular reflection).
Each panel has its own set of radiation and drag coefficients. In
orbit determination context, it would not be possible to estimate each panel
individually, therefore getDragParametersDrivers() returns a single
parameter driver representing a global drag multiplicative factor that applies to all panels drag coefficients
and the getRadiationParametersDrivers() returns a single
parameter driver representing a
global radiation multiplicative factor
that applies to all panels radiation coefficients.
- Author:
- Luc Maisonobe, Pascal Parraud
-
Field Summary
Fields inherited from interface org.orekit.forces.drag.DragSensitive
DRAG_COEFFICIENT, GLOBAL_DRAG_FACTOR, LIFT_RATIOFields inherited from interface org.orekit.forces.radiation.RadiationSensitive
ABSORPTION_COEFFICIENT, GLOBAL_RADIATION_FACTOR, REFLECTION_COEFFICIENT -
Constructor Summary
ConstructorsConstructorDescriptionBoxAndSolarArraySpacecraft(double xLength, double yLength, double zLength, ExtendedPositionProvider sun, double solarArrayArea, Vector3D solarArrayAxis, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff) Build a spacecraft model with best lighting of solar array.BoxAndSolarArraySpacecraft(int n, double diameter, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff) Build a spacecraft model in the shape of a disco ball.BoxAndSolarArraySpacecraft(List<Panel> panels) Build a spacecraft model. -
Method Summary
Modifier and TypeMethodDescriptionbuildBox(double xLength, double yLength, double zLength, double drag, double liftRatio, double absorption, double reflection) Build the panels of a simple parallelepipedic box.buildDiscoBall(int n, double diameter, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff) Build the panels of a disco ball.buildPanels(double xLength, double yLength, double zLength, ExtendedPositionProvider sun, double solarArrayArea, Vector3D solarArrayAxis, double drag, double liftRatio, double absorption, double reflection) Build the panels of a simple parallelepiped box plus one solar array panel.<T extends CalculusFieldElement<T>>
FieldVector3D<T> dragAcceleration(FieldSpacecraftState<T> state, T density, FieldVector3D<T> relativeVelocity, T[] parameters) Compute the acceleration due to drag.dragAcceleration(SpacecraftState state, double density, Vector3D relativeVelocity, double[] parameters) Compute the acceleration due to drag.Get the drivers for supported parameters.Get the panels composing the body.Get the drivers for supported parameters.<T extends CalculusFieldElement<T>>
FieldVector3D<T> radiationPressureAcceleration(FieldSpacecraftState<T> state, FieldVector3D<T> flux, T[] parameters) Compute the acceleration due to radiation pressure.radiationPressureAcceleration(SpacecraftState state, Vector3D flux, double[] parameters) Compute the acceleration due to radiation pressure.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.orekit.forces.drag.DragSensitive
dependsOnAttitudeRate
-
Constructor Details
-
BoxAndSolarArraySpacecraft
Build a spacecraft model.- Parameters:
panels- panels composing the body, solar arrays and antennas (only the panels with strictly positive area will be stored)- Since:
- 12.0
-
BoxAndSolarArraySpacecraft
public BoxAndSolarArraySpacecraft(double xLength, double yLength, double zLength, ExtendedPositionProvider sun, double solarArrayArea, Vector3D solarArrayAxis, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff) Build a spacecraft model with best lighting 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 modelsolarArrayArea- area of the solar array (m²)solarArrayAxis- solar array rotation axis in satellite framedragCoeff- drag coefficient (used only for drag)liftRatio- lift ratio (proportion between 0 and 1 of atmosphere modecules that will experience specular reflection when hitting spacecraft instead of experiencing diffuse reflection, hence producing lift)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)- Since:
- 12.0
-
BoxAndSolarArraySpacecraft
public BoxAndSolarArraySpacecraft(int n, double diameter, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff) Build a spacecraft model in the shape of a disco ball.This shape is intended either for comparison with isotropic models or as a model for geodesy satellites like Starlette or Lageos. All facets are fixed, there are no solar arrays. The facets are arranged in a spiral that attempts to preserve area.
- Parameters:
n- number of facets (must be an odd number)diameter- diameter of the spherical bodydragCoeff- drag coefficient for each facet (used only for drag)liftRatio- lift ratio for each facet (proportion between 0 and 1 of atmosphere modecules that will experience specular reflection when hitting spacecraft instead of experiencing diffuse reflection, hence producing lift)absorptionCoeff- absorption coefficient between 0.0 an 1.0 for each facet (used only for radiation pressure)reflectionCoeff- specular reflection coefficient between 0.0 an 1.0 for each facet (used only for radiation pressure)- Since:
- 14.0
- See Also:
-
-
Method Details
-
getPanels
Get the panels composing the body.- Returns:
- unmodifiable view of the panels composing the body
- Since:
- 12.0
-
getDragParametersDrivers
Get the drivers for supported parameters.- Specified by:
getDragParametersDriversin interfaceDragSensitive- Returns:
- parameters drivers
-
getRadiationParametersDrivers
Get the drivers for supported parameters.- Specified by:
getRadiationParametersDriversin interfaceRadiationSensitive- Returns:
- parameters drivers
-
dragAcceleration
public Vector3D dragAcceleration(SpacecraftState state, double density, Vector3D relativeVelocity, double[] parameters) Compute the acceleration due to drag.The computation includes all spacecraft specific characteristics like shape, area and coefficients.
- Specified by:
dragAccelerationin interfaceDragSensitive- Parameters:
state- current statedensity- atmospheric density at spacecraft positionrelativeVelocity- relative velocity of atmosphere with respect to spacecraft, in the same inertial frame as spacecraft orbit (m/s)parameters- values of the force model parameters- Returns:
- spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
-
dragAcceleration
public <T extends CalculusFieldElement<T>> FieldVector3D<T> dragAcceleration(FieldSpacecraftState<T> state, T density, FieldVector3D<T> relativeVelocity, T[] parameters) Compute the acceleration due to drag.The computation includes all spacecraft specific characteristics like shape, area and coefficients.
- Specified by:
dragAccelerationin interfaceDragSensitive- Type Parameters:
T- instance of a CalculusFieldElement- Parameters:
state- current statedensity- atmospheric density at spacecraft positionrelativeVelocity- relative velocity of atmosphere with respect to spacecraft, in the same inertial frame as spacecraft orbit (m/s)parameters- values of the force model parameters- Returns:
- spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
-
radiationPressureAcceleration
public Vector3D radiationPressureAcceleration(SpacecraftState state, Vector3D flux, double[] parameters) Compute the acceleration due to radiation pressure.- Specified by:
radiationPressureAccelerationin interfaceRadiationSensitive- Parameters:
state- current stateflux- radiation flux in the same inertial frame as spacecraft orbitparameters- values of the force model parameters- Returns:
- spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
-
radiationPressureAcceleration
public <T extends CalculusFieldElement<T>> FieldVector3D<T> radiationPressureAcceleration(FieldSpacecraftState<T> state, FieldVector3D<T> flux, T[] parameters) Compute the acceleration due to radiation pressure.This method implements equation 8-44 from David A. Vallado's Fundamentals of Astrodynamics and Applications, third edition, 2007, Microcosm Press.
- Specified by:
radiationPressureAccelerationin interfaceRadiationSensitive- Type Parameters:
T- extends CalculusFieldElement- Parameters:
state- current stateflux- radiation flux in the same inertial frame as spacecraft orbitparameters- values of the force model parameters- Returns:
- spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
-
buildBox
public static List<Panel> buildBox(double xLength, double yLength, double zLength, double drag, double liftRatio, double absorption, double reflection) Build the panels of a simple parallelepipedic box.- 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)drag- drag coefficientliftRatio- drag lift ratio (proportion between 0 and 1 of atmosphere modecules that will experience specular reflection when hitting spacecraft instead of experiencing diffuse reflection, hence producing lift)absorption- radiation pressure absorption coefficient (between 0 and 1)reflection- radiation pressure specular reflection coefficient (between 0 and 1)- Returns:
- surface vectors array
- Since:
- 12.0
-
buildPanels
public static List<Panel> buildPanels(double xLength, double yLength, double zLength, ExtendedPositionProvider sun, double solarArrayArea, Vector3D solarArrayAxis, double drag, double liftRatio, double absorption, double reflection) Build the panels of a simple parallelepiped box plus one solar array panel.- 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 modelsolarArrayArea- area of the solar array (m²)solarArrayAxis- solar array rotation axis in satellite framedrag- drag coefficientliftRatio- drag lift ratio (proportion between 0 and 1 of atmosphere modecules that will experience specular reflection when hitting spacecraft instead of experiencing diffuse reflection, hence producing lift)absorption- radiation pressure absorption coefficient (between 0 and 1)reflection- radiation pressure specular reflection coefficient (between 0 and 1)- Returns:
- surface vectors array
- Since:
- 12.0
-
buildDiscoBall
public static List<Panel> buildDiscoBall(int n, double diameter, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff) Build the panels of a disco ball.- Parameters:
n- number of facets (must be an odd number)diameter- diameter of the spherical bodydragCoeff- drag coefficient for each facet (used only for drag)liftRatio- lift ratio for each facet (proportion between 0 and 1 of atmosphere modecules that will experience specular reflection when hitting spacecraft instead of experiencing diffuse reflection, hence producing lift)absorptionCoeff- absorption coefficient between 0.0 an 1.0 for each facet (used only for radiation pressure)reflectionCoeff- specular reflection coefficient between 0.0 an 1.0 for each facet (used only for radiation pressure)- Returns:
- panels for the complete ball
- Since:
- 14.0
- See Also:
-