Class NRLMSISE00

  • All Implemented Interfaces:
    Serializable, Atmosphere

    public class NRLMSISE00
    extends Object
    implements Atmosphere
    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:
    http://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
    See Also:
    Serialized Form
    • Method Detail

      • 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.
        Specified by:
        getFrame in interface Atmosphere
        Returns:
        frame of the central body.
      • getDensity

        public double getDensity​(AbsoluteDate date,
                                 Vector3D position,
                                 Frame frame)
        Get the local density.
        Specified by:
        getDensity in interface Atmosphere
        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.
        Specified by:
        getDensity in interface Atmosphere
        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³)