Class BoxAndSolarArraySpacecraft

  • All Implemented Interfaces:
    DragSensitive, RadiationSensitive

    public class BoxAndSolarArraySpacecraft
    extends Object
    implements RadiationSensitive, DragSensitive
    Class representing the features of a classical satellite with a convex body shape and rotating flat solar arrays.

    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 lighting 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).

    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 facets 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).

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

    Author:
    Luc Maisonobe, Pascal Parraud
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  BoxAndSolarArraySpacecraft.Facet
      Class representing a single facet of a convex spacecraft body.
    • Constructor Summary

      Constructors 
      Constructor Description
      BoxAndSolarArraySpacecraft​(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
      Build a spacecraft model with best lighting of solar array.
      BoxAndSolarArraySpacecraft​(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff)
      Build a spacecraft model with best lighting of solar array.
      BoxAndSolarArraySpacecraft​(double xLength, double yLength, double zLength, PVCoordinatesProvider sun, double solarArrayArea, org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, AbsoluteDate referenceDate, org.hipparchus.geometry.euclidean.threed.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.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, AbsoluteDate referenceDate, org.hipparchus.geometry.euclidean.threed.Vector3D referenceNormal, double rotationRate, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff)
      Build a spacecraft model with linear rotation of solar array.
      BoxAndSolarArraySpacecraft​(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, double dragCoeff, double absorptionCoeff, double reflectionCoeff)
      Build a spacecraft model with best lighting of solar array.
      BoxAndSolarArraySpacecraft​(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff)
      Build a spacecraft model with best lighting of solar array.
      BoxAndSolarArraySpacecraft​(BoxAndSolarArraySpacecraft.Facet[] facets, PVCoordinatesProvider sun, double solarArrayArea, org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, AbsoluteDate referenceDate, org.hipparchus.geometry.euclidean.threed.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.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis, AbsoluteDate referenceDate, org.hipparchus.geometry.euclidean.threed.Vector3D referenceNormal, double rotationRate, double dragCoeff, double liftRatio, double absorptionCoeff, double reflectionCoeff)
      Build a spacecraft model with linear rotation of solar array.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      org.hipparchus.geometry.euclidean.threed.Vector3D dragAcceleration​(AbsoluteDate date, Frame frame, org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Rotation rotation, double mass, double density, org.hipparchus.geometry.euclidean.threed.Vector3D relativeVelocity, double[] parameters)
      Compute the acceleration due to drag.
      org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> dragAcceleration​(AbsoluteDate date, Frame frame, org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Rotation rotation, double mass, double density, org.hipparchus.geometry.euclidean.threed.Vector3D relativeVelocity, double[] parameters, String paramName)
      Compute acceleration due to drag, with parameters derivatives.
      <T extends org.hipparchus.RealFieldElement<T>>
      org.hipparchus.geometry.euclidean.threed.FieldVector3D<T>
      dragAcceleration​(FieldAbsoluteDate<T> date, Frame frame, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation, T mass, T density, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> relativeVelocity, T[] parameters)
      Compute the acceleration due to drag.
      ParameterDriver[] getDragParametersDrivers()
      Get the drivers for supported parameters.
      org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> getNormal​(AbsoluteDate date, Frame frame, org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> position, org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.DerivativeStructure> rotation)
      Get solar array normal in spacecraft frame.
      org.hipparchus.geometry.euclidean.threed.Vector3D getNormal​(AbsoluteDate date, Frame frame, org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Rotation rotation)
      Get solar array normal in spacecraft frame.
      <T extends org.hipparchus.RealFieldElement<T>>
      org.hipparchus.geometry.euclidean.threed.FieldVector3D<T>
      getNormal​(FieldAbsoluteDate<T> date, Frame frame, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation)
      Get solar array normal in spacecraft frame.
      ParameterDriver[] getRadiationParametersDrivers()
      Get the drivers for supported parameters.
      org.hipparchus.geometry.euclidean.threed.Vector3D radiationPressureAcceleration​(AbsoluteDate date, Frame frame, org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Rotation rotation, double mass, org.hipparchus.geometry.euclidean.threed.Vector3D flux, double[] parameters)
      Compute the acceleration due to radiation pressure.
      org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> radiationPressureAcceleration​(AbsoluteDate date, Frame frame, org.hipparchus.geometry.euclidean.threed.Vector3D position, org.hipparchus.geometry.euclidean.threed.Rotation rotation, double mass, org.hipparchus.geometry.euclidean.threed.Vector3D flux, double[] parameters, String paramName)
      Compute the acceleration due to radiation pressure, with parameters derivatives.
      <T extends org.hipparchus.RealFieldElement<T>>
      org.hipparchus.geometry.euclidean.threed.FieldVector3D<T>
      radiationPressureAcceleration​(FieldAbsoluteDate<T> date, Frame frame, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position, org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation, T mass, org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> flux, T[] parameters)
      Compute the acceleration due to radiation pressure.
    • Constructor Detail

      • BoxAndSolarArraySpacecraft

        public BoxAndSolarArraySpacecraft​(double xLength,
                                          double yLength,
                                          double zLength,
                                          PVCoordinatesProvider sun,
                                          double solarArrayArea,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          double dragCoeff,
                                          double absorptionCoeff,
                                          double reflectionCoeff)
        Build a spacecraft model with best lighting of solar array.

        This constructor builds an instance that completely ignores lift in atmospheric drag (the value of lift coefficient is set to zero, and there are no drivers to change it).

        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 (m²)
        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.hipparchus.geometry.euclidean.threed.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 model
        solarArrayArea - area of the solar array (m²)
        solarArrayAxis - solar array rotation axis in satellite frame
        dragCoeff - 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:
        9.0
      • BoxAndSolarArraySpacecraft

        public BoxAndSolarArraySpacecraft​(BoxAndSolarArraySpacecraft.Facet[] facets,
                                          PVCoordinatesProvider sun,
                                          double solarArrayArea,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          double dragCoeff,
                                          double absorptionCoeff,
                                          double reflectionCoeff)
        Build a spacecraft model with best lighting of solar array.

        The spacecraft body is described by an array of surface vectors. Each facet of the body is described 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.

        Parameters:
        facets - body facets (only the facets with strictly positive area will be stored)
        sun - sun model
        solarArrayArea - area of the solar array (m²)
        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.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          double dragCoeff,
                                          double liftRatio,
                                          double absorptionCoeff,
                                          double reflectionCoeff)
        Build a spacecraft model with best lighting of solar array.

        The spacecraft body is described by an array of surface vectors. Each facet of the body is described 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.

        Parameters:
        facets - body facets (only the facets with strictly positive area will be stored)
        sun - sun model
        solarArrayArea - area of the solar array (m²)
        solarArrayAxis - solar array rotation axis in satellite frame
        dragCoeff - 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:
        9.0
      • BoxAndSolarArraySpacecraft

        public BoxAndSolarArraySpacecraft​(double xLength,
                                          double yLength,
                                          double zLength,
                                          PVCoordinatesProvider sun,
                                          double solarArrayArea,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          AbsoluteDate referenceDate,
                                          org.hipparchus.geometry.euclidean.threed.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 (m²)
        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​(double xLength,
                                          double yLength,
                                          double zLength,
                                          PVCoordinatesProvider sun,
                                          double solarArrayArea,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          AbsoluteDate referenceDate,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D referenceNormal,
                                          double rotationRate,
                                          double dragCoeff,
                                          double liftRatio,
                                          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 (m²)
        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)
        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:
        9.0
      • BoxAndSolarArraySpacecraft

        public BoxAndSolarArraySpacecraft​(BoxAndSolarArraySpacecraft.Facet[] facets,
                                          PVCoordinatesProvider sun,
                                          double solarArrayArea,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          AbsoluteDate referenceDate,
                                          org.hipparchus.geometry.euclidean.threed.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 described 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.

        Parameters:
        facets - body facets (only the facets with strictly positive area will be stored)
        sun - sun model
        solarArrayArea - area of the solar array (m²)
        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.hipparchus.geometry.euclidean.threed.Vector3D solarArrayAxis,
                                          AbsoluteDate referenceDate,
                                          org.hipparchus.geometry.euclidean.threed.Vector3D referenceNormal,
                                          double rotationRate,
                                          double dragCoeff,
                                          double liftRatio,
                                          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 described 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.

        Parameters:
        facets - body facets (only the facets with strictly positive area will be stored)
        sun - sun model
        solarArrayArea - area of the solar array (m²)
        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)
        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:
        9.0
    • Method Detail

      • getNormal

        public org.hipparchus.geometry.euclidean.threed.Vector3D getNormal​(AbsoluteDate date,
                                                                           Frame frame,
                                                                           org.hipparchus.geometry.euclidean.threed.Vector3D position,
                                                                           org.hipparchus.geometry.euclidean.threed.Rotation rotation)
        Get solar array normal in spacecraft frame.
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        Returns:
        solar array normal in spacecraft frame
      • getNormal

        public <T extends org.hipparchus.RealFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> getNormal​(FieldAbsoluteDate<T> date,
                                                                                                                                  Frame frame,
                                                                                                                                  org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position,
                                                                                                                                  org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation)
        Get solar array normal in spacecraft frame.
        Type Parameters:
        T - type of the field elements
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        Returns:
        solar array normal in spacecraft frame
      • getNormal

        public org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> getNormal​(AbsoluteDate date,
                                                                                                                                             Frame frame,
                                                                                                                                             org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> position,
                                                                                                                                             org.hipparchus.geometry.euclidean.threed.FieldRotation<org.hipparchus.analysis.differentiation.DerivativeStructure> rotation)
        Get solar array normal in spacecraft frame.
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        Returns:
        solar array normal in spacecraft frame
      • dragAcceleration

        public org.hipparchus.geometry.euclidean.threed.Vector3D dragAcceleration​(AbsoluteDate date,
                                                                                  Frame frame,
                                                                                  org.hipparchus.geometry.euclidean.threed.Vector3D position,
                                                                                  org.hipparchus.geometry.euclidean.threed.Rotation rotation,
                                                                                  double mass,
                                                                                  double density,
                                                                                  org.hipparchus.geometry.euclidean.threed.Vector3D relativeVelocity,
                                                                                  double[] parameters)
        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:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        mass - current mass
        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)
        parameters - values of the force model parameters
        Returns:
        spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
      • dragAcceleration

        public org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> dragAcceleration​(AbsoluteDate date,
                                                                                                                                                    Frame frame,
                                                                                                                                                    org.hipparchus.geometry.euclidean.threed.Vector3D position,
                                                                                                                                                    org.hipparchus.geometry.euclidean.threed.Rotation rotation,
                                                                                                                                                    double mass,
                                                                                                                                                    double density,
                                                                                                                                                    org.hipparchus.geometry.euclidean.threed.Vector3D relativeVelocity,
                                                                                                                                                    double[] parameters,
                                                                                                                                                    String paramName)
        Compute acceleration due to drag, with parameters derivatives.
        Specified by:
        dragAcceleration in interface DragSensitive
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        mass - current mass
        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)
        parameters - values of the force model parameters
        paramName - name of the parameter with respect to which derivatives are required
        Returns:
        spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
      • radiationPressureAcceleration

        public org.hipparchus.geometry.euclidean.threed.Vector3D radiationPressureAcceleration​(AbsoluteDate date,
                                                                                               Frame frame,
                                                                                               org.hipparchus.geometry.euclidean.threed.Vector3D position,
                                                                                               org.hipparchus.geometry.euclidean.threed.Rotation rotation,
                                                                                               double mass,
                                                                                               org.hipparchus.geometry.euclidean.threed.Vector3D flux,
                                                                                               double[] parameters)
        Compute the acceleration due to radiation pressure.
        Specified by:
        radiationPressureAcceleration in interface RadiationSensitive
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        mass - current mass
        flux - radiation flux in the same inertial frame as spacecraft orbit
        parameters - values of the force model parameters
        Returns:
        spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
      • radiationPressureAcceleration

        public org.hipparchus.geometry.euclidean.threed.FieldVector3D<org.hipparchus.analysis.differentiation.DerivativeStructure> radiationPressureAcceleration​(AbsoluteDate date,
                                                                                                                                                                 Frame frame,
                                                                                                                                                                 org.hipparchus.geometry.euclidean.threed.Vector3D position,
                                                                                                                                                                 org.hipparchus.geometry.euclidean.threed.Rotation rotation,
                                                                                                                                                                 double mass,
                                                                                                                                                                 org.hipparchus.geometry.euclidean.threed.Vector3D flux,
                                                                                                                                                                 double[] parameters,
                                                                                                                                                                 String paramName)
        Compute the acceleration due to radiation pressure, with parameters derivatives.
        Specified by:
        radiationPressureAcceleration in interface RadiationSensitive
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        mass - current mass
        flux - radiation flux in the same inertial frame as spacecraft orbit
        parameters - values of the force model parameters
        paramName - name of the parameter with respect to which derivatives are required
        Returns:
        spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
      • dragAcceleration

        public <T extends org.hipparchus.RealFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> dragAcceleration​(FieldAbsoluteDate<T> date,
                                                                                                                                         Frame frame,
                                                                                                                                         org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position,
                                                                                                                                         org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation,
                                                                                                                                         T mass,
                                                                                                                                         T density,
                                                                                                                                         org.hipparchus.geometry.euclidean.threed.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:
        dragAcceleration in interface DragSensitive
        Type Parameters:
        T - instance of a RealFieldElement
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        mass - current mass
        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)
        parameters - values of the force model parameters
        Returns:
        spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)
      • radiationPressureAcceleration

        public <T extends org.hipparchus.RealFieldElement<T>> org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> radiationPressureAcceleration​(FieldAbsoluteDate<T> date,
                                                                                                                                                      Frame frame,
                                                                                                                                                      org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position,
                                                                                                                                                      org.hipparchus.geometry.euclidean.threed.FieldRotation<T> rotation,
                                                                                                                                                      T mass,
                                                                                                                                                      org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> flux,
                                                                                                                                                      T[] parameters)
        Compute the acceleration due to radiation pressure.
        Specified by:
        radiationPressureAcceleration in interface RadiationSensitive
        Type Parameters:
        T - extends RealFieldElement
        Parameters:
        date - current date
        frame - inertial reference frame for state (both orbit and attitude)
        position - position of spacecraft in reference frame
        rotation - orientation (attitude) of the spacecraft with respect to reference frame
        mass - current mass
        flux - radiation flux in the same inertial frame as spacecraft orbit
        parameters - values of the force model parameters
        Returns:
        spacecraft acceleration in the same inertial frame as spacecraft orbit (m/s²)