Class NRLMSISE00

All Implemented Interfaces:
Atmosphere

public class NRLMSISE00 extends AbstractSunInfluencedAtmosphere
This class implements the mathematical representation of the 2001 Naval Research Laboratory Mass Spectrometer and Incoherent Scatter Radar Exosphere (NRLMSISE-00) of the MSIS® class model.

NRLMSISE-00 calculates the neutral atmosphere empirical model from the surface to lower exosphere (0 to 1000 km) and provides:

  • Exospheric Temperature above Input Position (K)
  • Local Temperature at Input Position (K)
  • Total Mass-Density at Input Position (kg/m³)
  • Partial Densities at Input Position (1/m³) for:
    • He,
    • H,
    • N,
    • O,
    • Ar,
    • N2,
    • O2,
    • anomalous oxygen.

The model needs geographical and time information to compute general values, but also needs space weather data:

  • mean and daily solar flux,
  • geomagnetic indices.

Switches can be used to turn on and off particular variations:
0 is off, 1 is on, and 2 is main effects off but cross terms on.
The standard value is 1 for all the 23 available switches.
Function of each switch according to its number:

  • #1 - F10.7 effect on mean
  • #2 - Independent of time
  • #3 - Symmetrical annual
  • #4 - Symmetrical semiannual
  • #5 - Asymmetrical annual
  • #6 - Asymmetrical semiannual
  • #7 - Diurnal
  • #8 - Semidiurnal
  • #9 - Daily Ap [**]
  • #10 - All UT, longitudinal effects
  • #11 - Longitudinal
  • #12 - UT and mixed UT, longitudinal
  • #13 - Mixed AP, UT, longitudinal
  • #14 - Terdiurnal
  • #15 - Departures from diffusive equilibrium
  • #16 - All exospheric temperature variations
  • #17 - All variations from 120 km temperature (TLB)
  • #18 - All lower thermosphere (TN1) temperature variations
  • #19 - All 120 km gradient (S) variations
  • #20 - All upper stratosphere (TN2) temperature variations
  • #21 - All variations from 120 km values (ZLB)
  • #22 - All lower mesosphere temperature (TN3) variations
  • #23 - Turbopause scale height variations
[**] Switch #9 is a bit specific:
  • set to 1, the daily Ap only is used (first element of ap array),
  • set to -1, the entire array of ap is used, including 3 hr ap indices.

The NRLMSISE-00 model was developed by Mike Picone, Alan Hedin, and Doug Drob.
They also wrote a NRLMSISE-00 distribution package in FORTRAN available at:
ftp://hanna.ccmc.gsfc.nasa.gov/pub/modelweb/atmospheric/msis/nrlmsise00/

Dominik Brodowski implemented a C version of the NRLMSISE-00 model available at:
https://www.brodo.de/space/nrlmsise/index.html

Instances of this class are immutable.

Since:
8.1
Author:
Mike Picone & al (Naval Research Laboratory), 2001: FORTRAN routine, Dominik Brodowski, 2004: C routine, Pascal Parraud, 2016: Java translation
  • Constructor Details

  • Method Details

    • withSwitch

      public NRLMSISE00 withSwitch(int number, int value)
      Change a switch.

      This method creates a new instance, the current instance is not changed at all!

      Parameters:
      number - switch number between 1 and 23
      value - switch value
      Returns:
      a new instance, with switch changed
    • getFrame

      public Frame getFrame()
      Get the frame of the central body.
      Returns:
      frame of the central body.
    • getDensity

      public double getDensity(AbsoluteDate date, Vector3D position, Frame frame)
      Get the local density.
      Parameters:
      date - current date
      position - current position in frame
      frame - the frame in which is defined the position
      Returns:
      local density (kg/m³)
    • getDensity

      public <T extends CalculusFieldElement<T>> T getDensity(FieldAbsoluteDate<T> date, FieldVector3D<T> position, Frame frame)
      Get the local density.
      Type Parameters:
      T - instance of CalculusFieldElement
      Parameters:
      date - current date
      position - current position in frame
      frame - the frame in which is defined the position
      Returns:
      local density (kg/m³)