Class HarrisPriester

All Implemented Interfaces:
Atmosphere

public class HarrisPriester extends AbstractSunInfluencedAtmosphere
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
  • Constructor Details

    • HarrisPriester

      public HarrisPriester(ExtendedPositionProvider 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(ExtendedPositionProvider 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(ExtendedPositionProvider 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(ExtendedPositionProvider 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 Details

    • getFrame

      public Frame getFrame()
      Get the frame of the central body.
      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(Vector3D sunInEarth, 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 CalculusFieldElement<T>> T getDensity(FieldVector3D<T> sunInEarth, FieldVector3D<T> posInEarth)
      Get the local density.
      Type Parameters:
      T - instance of CalculusFieldElement<T>
      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, Vector3D position, Frame frame)
      Get the local density at some position.
      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 CalculusFieldElement<T>> T getDensity(FieldAbsoluteDate<T> date, FieldVector3D<T> position, Frame frame)
      Get the local density at some position.
      Type Parameters:
      T - implements a CalculusFieldElement
      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