Class HarrisPriester

  • All Implemented Interfaces:
    Serializable, Atmosphere

    public class HarrisPriester
    extends Object
    implements Atmosphere
    This atmosphere model is the realization of the Modified Harris-Priester model.

    This model is a static one that takes into account the diurnal density bulge. It doesn't need any space weather data but a density vs. altitude table, which depends on solar activity.

    The implementation relies on the book:
    Satellite Orbits
    Oliver Montenbruck, Eberhard Gill
    Springer 2005

    Author:
    Pascal Parraud
    See Also:
    Serialized Form
    • Constructor Detail

      • HarrisPriester

        public HarrisPriester​(PVCoordinatesProvider sun,
                              OneAxisEllipsoid earth)
        Simple constructor for Modified Harris-Priester atmosphere model.

        The cosine exponent value is set to 4 by default.

        The default embedded density table is the one given in the referenced book from Montenbruck & Gill. It is given for mean solar activity and spreads over 100 to 1000 km.

        Parameters:
        sun - the sun position
        earth - the earth body shape
      • HarrisPriester

        public HarrisPriester​(PVCoordinatesProvider sun,
                              OneAxisEllipsoid earth,
                              double n)
        Constructor for Modified Harris-Priester atmosphere model.

        Recommanded values for the cosine exponent spread over the range 2, for low inclination orbits, to 6, for polar orbits.

        The default embedded density table is the one given in the referenced book from Montenbruck & Gill. It is given for mean solar activity and spreads over 100 to 1000 km.

        Parameters:
        sun - the sun position
        earth - the earth body shape
        n - the cosine exponent
      • HarrisPriester

        public HarrisPriester​(PVCoordinatesProvider sun,
                              OneAxisEllipsoid earth,
                              double[][] tabAltRho)
        Constructor for Modified Harris-Priester atmosphere model.

        The provided density table must be an array such as:

        • tabAltRho[][0] = altitude (m)
        • tabAltRho[][1] = min density (kg/m³)
        • tabAltRho[][2] = max density (kg/m³)

        The altitude must be increasing without limitation in range. The internal density table is a copy of the provided one.

        The cosine exponent value is set to 4 by default.

        Parameters:
        sun - the sun position
        earth - the earth body shape
        tabAltRho - the density table
      • HarrisPriester

        public HarrisPriester​(PVCoordinatesProvider sun,
                              OneAxisEllipsoid earth,
                              double[][] tabAltRho,
                              double n)
        Constructor for Modified Harris-Priester atmosphere model.

        Recommanded values for the cosine exponent spread over the range 2, for low inclination orbits, to 6, for polar orbits.

        The provided density table must be an array such as:

        • tabAltRho[][0] = altitude (m)
        • tabAltRho[][1] = min density (kg/m³)
        • tabAltRho[][2] = max density (kg/m³)

        The altitude must be increasing without limitation in range. The internal density table is a copy of the provided one.

        Parameters:
        sun - the sun position
        earth - the earth body shape
        tabAltRho - the density table
        n - the cosine exponent
    • Method Detail

      • getFrame

        public Frame getFrame()
        Get the frame of the central body.
        Specified by:
        getFrame in interface Atmosphere
        Returns:
        frame of the central body.
      • getTabDensity

        public double[][] getTabDensity()
        Get the current density table.

        The density table is an array such as:

        • tabAltRho[][0] = altitude (m)
        • tabAltRho[][1] = min density (kg/m³)
        • tabAltRho[][2] = max density (kg/m³)

        The altitude must be increasing without limitation in range.

        The returned density table is a copy of the current one.

        Returns:
        density vs. altitude table
      • getMinAlt

        public double getMinAlt()
        Get the minimal altitude for the model.

        No computation is possible below this altitude.

        Returns:
        the minimal altitude (m)
      • getMaxAlt

        public double getMaxAlt()
        Get the maximal altitude for the model.

        Above this altitude, density is assumed to be zero.

        Returns:
        the maximal altitude (m)
      • getDensity

        public double getDensity​(org.hipparchus.geometry.euclidean.threed.Vector3D sunInEarth,
                                 org.hipparchus.geometry.euclidean.threed.Vector3D posInEarth)
        Get the local density.
        Parameters:
        sunInEarth - position of the Sun in Earth frame (m)
        posInEarth - target position in Earth frame (m)
        Returns:
        the local density (kg/m³)
      • getDensity

        public <T extends org.hipparchus.RealFieldElement<T>> T getDensity​(org.hipparchus.geometry.euclidean.threed.Vector3D sunInEarth,
                                                                           org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> posInEarth)
        Get the local density.
        Type Parameters:
        T - instance of RealFieldElement
        Parameters:
        sunInEarth - position of the Sun in Earth frame (m)
        posInEarth - target position in Earth frame (m)
        Returns:
        the local density (kg/m³)
      • getDensity

        public double getDensity​(AbsoluteDate date,
                                 org.hipparchus.geometry.euclidean.threed.Vector3D position,
                                 Frame frame)
        Get the local density at some position.
        Specified by:
        getDensity in interface Atmosphere
        Parameters:
        date - current date
        position - current position
        frame - the frame in which is defined the position
        Returns:
        local density (kg/m³) or if altitude is below the model minimal altitude
      • getDensity

        public <T extends org.hipparchus.RealFieldElement<T>> T getDensity​(FieldAbsoluteDate<T> date,
                                                                           org.hipparchus.geometry.euclidean.threed.FieldVector3D<T> position,
                                                                           Frame frame)
        Get the local density at some position.
        Specified by:
        getDensity in interface Atmosphere
        Type Parameters:
        T - implements a RealFieldElement
        Parameters:
        date - current date
        position - current position
        frame - the frame in which is defined the position
        Returns:
        local density (kg/m³) or if altitude is below the model minimal altitude