Class NRLMSISE00
- java.lang.Object
-
- org.orekit.models.earth.atmosphere.AbstractSunInfluencedAtmosphere
-
- org.orekit.models.earth.atmosphere.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
- 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. SeeNRLMSISE00.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.htmlInstances 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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classNRLMSISE00.FieldOutput<T extends CalculusFieldElement<T>>This class is a placeholder for the computed densities and temperatures.static classNRLMSISE00.LocalSolarTimeModeConvention used to compute the local solar time driving the diurnal density terms.
-
Constructor Summary
Constructors Constructor Description NRLMSISE00(NRLMSISE00InputParameters parameters, ExtendedPositionProvider sun, BodyShape earth)Constructor.NRLMSISE00(NRLMSISE00InputParameters parameters, ExtendedPositionProvider sun, BodyShape earth, TimeScale ut)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doublegetDensity(AbsoluteDate date, Vector3D position, Frame frame)Get the local density.<T extends CalculusFieldElement<T>>
TgetDensity(FieldAbsoluteDate<T> date, FieldVector3D<T> position, Frame frame)Get the local density.FramegetFrame()Get the frame of the central body.NRLMSISE00.LocalSolarTimeModegetLocalSolarTimeMode()Get the local solar time convention driving the diurnal density terms.NRLMSISE00withLocalSolarTimeMode(NRLMSISE00.LocalSolarTimeMode mode)Change the local solar time convention.NRLMSISE00withSwitch(int number, int value)Change a switch.-
Methods inherited from class org.orekit.models.earth.atmosphere.AbstractSunInfluencedAtmosphere
getSun, getSunPosition, getSunPosition
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.orekit.models.earth.atmosphere.Atmosphere
getVelocity, getVelocity
-
-
-
-
Constructor Detail
-
NRLMSISE00
@DefaultDataContext public NRLMSISE00(NRLMSISE00InputParameters parameters, ExtendedPositionProvider sun, BodyShape earth)
Constructor.The model is constructed with all switches set to 1.
Parameters are mandatory only for the
getDensity()andgetVelocity()methods.This constructor uses the
default data context.- Parameters:
parameters- the solar and magnetic activity datasun- the Sun positionearth- the Earth body shape- See Also:
NRLMSISE00(NRLMSISE00InputParameters, ExtendedPositionProvider, BodyShape, TimeScale)
-
NRLMSISE00
public NRLMSISE00(NRLMSISE00InputParameters parameters, ExtendedPositionProvider sun, BodyShape earth, TimeScale ut)
Constructor.The model is constructed with all switches set to 1.
Parameters are mandatory only for the
getDensity()andgetVelocity()methods.- Parameters:
parameters- the solar and magnetic activity datasun- the Sun positionearth- the Earth body shapeut- UT time scale. The original documentation for NRLMSISE00 does not distinguish between UTC and UT1. In Orekit 10.0TimeScalesFactory.getUT1(IERSConventions.IERS_2010, true)was used.- Since:
- 10.1
-
-
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 23value- 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
-
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:
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 dateposition- current position in frameframe- 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 dateposition- current position in frameframe- the frame in which is defined the position- Returns:
- local density (kg/m³)
-
-