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 diurnal density terms are driven by the local solar time. The reference implementation defines this as mean local solar time (stl = sec/3600 + glong/15, i.e. UT plus geographic longitude), and that is the convention the empirical coefficients were fitted with, so it is the default here. withLocalSolarTimeMode(LocalSolarTimeMode) can select apparent solar time (the true Sun hour angle, which additionally carries the equation of time) for backward compatibility or sensitivity studies. See NRLMSISE00.LocalSolarTimeMode.

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
    • withLocalSolarTimeMode

      public NRLMSISE00 withLocalSolarTimeMode(NRLMSISE00.LocalSolarTimeMode mode)
      Change the local solar time convention.

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

      Parameters:
      mode - local solar time convention driving the diurnal density terms
      Returns:
      a new instance, with the local solar time convention changed
      Since:
      13.1.8
      See Also:
    • getLocalSolarTimeMode

      public NRLMSISE00.LocalSolarTimeMode getLocalSolarTimeMode()
      Get the local solar time convention driving the diurnal density terms.
      Returns:
      local solar time convention
      Since:
      13.1.8
      See Also:
    • 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³)