org.orekit.forces.atmospheres
Class DTM2000

java.lang.Object
  extended by org.orekit.forces.atmospheres.DTM2000
All Implemented Interfaces:
Serializable, Atmosphere, ExtendedAtmosphere

public class DTM2000
extends Object
implements ExtendedAtmosphere

This atmosphere model is the realization of the DTM-2000 model.

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:

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).

Author:
R. Biancale, S. Bruinsma: original fortran routine, Fabien Maussion (java translation)
See Also:
Serialized Form

Field Summary
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 Summary
DTM2000(DTM2000InputParameters parameters, PVCoordinatesProvider sun, BodyShape earth)
          Simple constructor for independent computation.
 
Method Summary
 AtmosphereData getData(AbsoluteDate date, Vector3D position, Frame frame)
          Get detailed atmospheric data.
 double getDensity(AbsoluteDate date, Vector3D position, Frame frame)
          Get the local density.
 double getDensity(double day, double alti, double lon, double lat, double hl, double f, double fbar, double akp3, double akp24)
          Deprecated. use getDensity(AbsoluteDate, Vector3D, Frame) instead
 double getMam()
          Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead
 double getPartialDensities(int identifier)
          Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead
 double getSpeedOfSound(AbsoluteDate date, Vector3D position, Frame frame)
          Get the local speed of sound.
 double getT()
          Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead
 double getTinf()
          Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead
 Vector3D getVelocity(AbsoluteDate date, Vector3D position, Frame frame)
          Get the inertial velocity of atmosphere molecules.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

HYDROGEN

public static final int HYDROGEN
Identifier for hydrogen.

See Also:
Constant Field Values

HELIUM

public static final int HELIUM
Identifier for helium.

See Also:
Constant Field Values

ATOMIC_OXYGEN

public static final int ATOMIC_OXYGEN
Identifier for atomic oxygen.

See Also:
Constant Field Values

MOLECULAR_NITROGEN

public static final int MOLECULAR_NITROGEN
Identifier for molecular nitrogen.

See Also:
Constant Field Values

MOLECULAR_OXYGEN

public static final int MOLECULAR_OXYGEN
Identifier for molecular oxygen.

See Also:
Constant Field Values

ATOMIC_NITROGEN

public static final int ATOMIC_NITROGEN
Identifier for atomic nitrogen.

See Also:
Constant Field Values
Constructor Detail

DTM2000

public DTM2000(DTM2000InputParameters parameters,
               PVCoordinatesProvider sun,
               BodyShape earth)
        throws OrekitException
Simple constructor for independent computation.

Parameters:
parameters - the solar and magnetic activity data
sun - the sun position
earth - the earth body shape
Throws:
OrekitException - if some resource file reading error occurs
Method Detail

getDensity

@Deprecated
public double getDensity(double day,
                                    double alti,
                                    double lon,
                                    double lat,
                                    double hl,
                                    double f,
                                    double fbar,
                                    double akp3,
                                    double akp24)
                  throws OrekitException
Deprecated. use getDensity(AbsoluteDate, Vector3D, Frame) instead

Get the local density with initial entries.

Parameters:
day - day of year
alti - altitude in meters
lon - local longitude (rad)
lat - local latitude (rad)
hl - local solar time in rad (O hr = 0 rad)
f - instantaneous solar flux (F10.7)
fbar - mean solar flux (F10.7)
akp3 - 3 hrs geomagnetic activity index (1-9)
akp24 - Mean of last 24 hrs geomagnetic activity index (1-9)
Returns:
the local density (kg/m3)
Throws:
OrekitException - if altitude is outside of supported range

getTinf

@Deprecated
public double getTinf()
Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead

Get the current exospheric temperature above input position. getDensity method must be called before calling this function.

Returns:
the exospheric temperature (K)

getT

@Deprecated
public double getT()
Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead

Get the local temperature. getDensity method must be called before calling this function.

Returns:
the temperature at altitude z (K)

getMam

@Deprecated
public double getMam()
Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead

Get the local mean atomic mass. getDensity method must be called before calling this function.

Returns:
the local mean atomic mass

getPartialDensities

@Deprecated
public double getPartialDensities(int identifier)
Deprecated. use getData(AbsoluteDate, Vector3D, Frame) instead

Get the local partial density of the selected element. getDensity method must be called before calling this function.

Parameters:
identifier - one of the six elements : HYDROGEN, HELIUM, ATOMIC_OXYGEN, MOLECULAR_NITROGEN, MOLECULAR_OXYGEN, ATOMIC_NITROGEN
Returns:
the local partial density (kg/m3)

getDensity

public double getDensity(AbsoluteDate date,
                         Vector3D position,
                         Frame frame)
                  throws OrekitException
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/m3)
Throws:
OrekitException - if date is out of range of solar activity model or if some frame conversion cannot be performed

getVelocity

public Vector3D getVelocity(AbsoluteDate date,
                            Vector3D position,
                            Frame frame)
                     throws OrekitException
Get the inertial velocity of atmosphere molecules. Here the case is simplified : atmosphere is supposed to have a null velocity in earth frame.

Specified by:
getVelocity in interface Atmosphere
Parameters:
date - current date
position - current position in frame
frame - the frame in which is defined the position
Returns:
velocity (m/s) (defined in the same frame as the position)
Throws:
OrekitException - if some frame conversion cannot be performed

getSpeedOfSound

public double getSpeedOfSound(AbsoluteDate date,
                              Vector3D position,
                              Frame frame)
                       throws OrekitException
Get the local speed of sound.

Specified by:
getSpeedOfSound in interface Atmosphere
Parameters:
date - current date
position - current position in frame
frame - the frame in which is defined the position
Returns:
speed of sound (m/s)
Throws:
OrekitException - if some conversion cannot be performed

getData

public AtmosphereData getData(AbsoluteDate date,
                              Vector3D position,
                              Frame frame)
                       throws OrekitException
Get detailed atmospheric data.

DTM2000 provides all data mentioned in AtmosphereData except partial density of Argon and anomalous oxygen.

Specified by:
getData in interface ExtendedAtmosphere
Parameters:
date - current date
position - current position in frame
frame - the frame in which is defined the position
Returns:
detailed atmospheric data
Throws:
OrekitException - 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)


Copyright © 2017 CNES. All Rights Reserved.