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
    • 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
      • 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:
        NRLMSISE00.LocalSolarTimeMode
      • 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³)