public class DTM2000 extends Object implements ExtendedAtmosphere
NB Since the initial implementation (rev 1665), the model has been modified to fix a bug (see Story V-83 for validation) : the number of days in the year (cachedDay)is a double, instead of an integer. This modification should be integrated in the OREKIT future version.
It is described in the paper:
The DTM-2000 empirical thermosphere model with new data assimilation and constraints at lower boundary: accuracy
and properties
S. Bruinsma, G. Thuillier and F. Barlier
Journal of Atmospheric and Solar-Terrestrial Physics 65 (2003) 1053–1070
Two computation methods are proposed to the user:
getDensity(double, double, double, double, double, double, double, double, double)
.drag force model
computation.This model provides dense output for altitudes beyond 120 km. Computed data are:
The model needs geographical and time information to compute general values, but also needs space weather data : mean and instantaneous solar flux and geomagnetic indices.
Mean solar flux is (for the moment) represented by the F10.7 indices. Instantaneous flux can be set to the mean value if the data is not available. Geomagnetic activity is represented by the Kp indice, which goes from 1 (very low activity) to 9 (high activity).
All these data can be found on the NOAA (National Oceanic and Atmospheric Administration) website.Mod : Modified line 871, added TimeZone.getTimeZone("GMT+00:00") to get a GregorianCalendar that doesnt depend on the machine locale time zone.
Mod : DTM2000 thread-safety improved : instances in different threads no longer corrupt each others' computations. But sharing one instance between several threads is untested (no realistic use case found).
Modifier and Type | Field and Description |
---|---|
static int |
ATOMIC_NITROGEN
Identifier for atomic nitrogen.
|
static int |
ATOMIC_OXYGEN
Identifier for atomic oxygen.
|
static int |
HELIUM
Identifier for helium.
|
static int |
HYDROGEN
Identifier for hydrogen.
|
static int |
MOLECULAR_NITROGEN
Identifier for molecular nitrogen.
|
static int |
MOLECULAR_OXYGEN
Identifier for molecular oxygen.
|
Constructor and Description |
---|
DTM2000(DTM2000InputParameters parameters,
PVCoordinatesProvider sunIn,
BodyShape earthIn)
Simple constructor for independent computation.
|
Modifier and Type | Method and Description |
---|---|
void |
checkSolarActivityData(AbsoluteDate start,
AbsoluteDate end)
This methods throws an exception if the user did not provide solar activity on the provided interval [start,
end].
|
Atmosphere |
copy()
A copy of the atmosphere.
|
AtmosphereData |
getData(AbsoluteDate date,
Vector3D position,
Frame frame)
Get detailed atmospheric data.
|
double |
getDensity(AbsoluteDate date,
Vector3D position,
Frame frame)
Get the local density.
|
BodyShape |
getEarth()
Getter for the earth body shape.
|
DTM2000InputParameters |
getParameters()
Getter for the solar and magnetic activity data.
|
double |
getSpeedOfSound(AbsoluteDate date,
Vector3D position,
Frame frame)
Get the local speed of sound.
|
PVCoordinatesProvider |
getSun()
Getter for the sun position.
|
Vector3D |
getVelocity(AbsoluteDate date,
Vector3D position,
Frame frame)
Get the inertial velocity of atmosphere molecules.
|
public static final int HYDROGEN
public static final int HELIUM
public static final int ATOMIC_OXYGEN
public static final int MOLECULAR_NITROGEN
public static final int MOLECULAR_OXYGEN
public static final int ATOMIC_NITROGEN
public DTM2000(DTM2000InputParameters parameters, PVCoordinatesProvider sunIn, BodyShape earthIn) throws PatriusException
parameters
- the solar and magnetic activity datasunIn
- the sun positionearthIn
- the earth body shapePatriusException
- if some resource file reading error occurspublic double getDensity(AbsoluteDate date, Vector3D position, Frame frame) throws PatriusException
getDensity
in interface Atmosphere
date
- current dateposition
- current position in frameframe
- the frame in which is defined the positionPatriusException
- if date is out of range of solar activity model or if some frame
conversion cannot be performedpublic Vector3D getVelocity(AbsoluteDate date, Vector3D position, Frame frame) throws PatriusException
getVelocity
in interface Atmosphere
date
- current dateposition
- current position in frameframe
- the frame in which is defined the positionPatriusException
- if some frame conversion cannot be performedpublic double getSpeedOfSound(AbsoluteDate date, Vector3D position, Frame frame) throws PatriusException
getSpeedOfSound
in interface Atmosphere
date
- current dateposition
- current position in frameframe
- the frame in which is defined the positionPatriusException
- if some conversion cannot be performedpublic AtmosphereData getData(AbsoluteDate date, Vector3D position, Frame frame) throws PatriusException
DTM2000 provides all data mentioned in AtmosphereData
except partial density of Argon and anomalous
oxygen.
getData
in interface ExtendedAtmosphere
date
- current dateposition
- current position in frameframe
- the frame in which is defined the positionPatriusException
- if some atmospheric data cannot be retrieved (because date is out of
range of solar activity model or if some frame conversion cannot be performed)public DTM2000InputParameters getParameters()
public PVCoordinatesProvider getSun()
public BodyShape getEarth()
public Atmosphere copy()
The following attributes are not deeply copied:
DTM2000InputParameters
PVCoordinatesProvider
BodyShape
copy
in interface Atmosphere
public void checkSolarActivityData(AbsoluteDate start, AbsoluteDate end) throws PatriusException
checkSolarActivityData
in interface Atmosphere
start
- range start dateend
- range end datePatriusException
- thrown if some solar activity data is missingCopyright © 2020 CNES. All rights reserved.