public abstract class AbstractDTM extends Object implements ExtendedAtmosphere
Modifier and Type | Field and Description |
---|---|
protected double[] |
akp
Kp coefficients.
|
protected double |
alat
Geodetic Latitude (rad).
|
protected static double[] |
ALEFA
Thermal diffusion coefficient.
|
static int |
ATOMIC_NITROGEN
Identifier for atomic nitrogen.
|
static int |
ATOMIC_OXYGEN
Identifier for atomic oxygen.
|
protected double[] |
az
Elements coefficients.
|
protected double[] |
az2
Elements coefficients.
|
protected double |
c2h
Intermediate values.
|
protected double |
c3h
Intermediate values.
|
protected double |
cachedAlti
Geodetic altitude in km (minimum altitude: 120 km).
|
protected double |
cachedDay
Number of days in current year.
|
protected double[] |
cachedF
Instant solar flux. f[1] = instantaneous flux; f[2] = 0.
|
protected double[] |
cachedFbar
Mean solar flux. fbar[1] = mean flux; fbar[2] = 0.
|
protected double |
cachedHl
Local solar time (rad).
|
protected double |
cachedTemperature
Cache mecanism - Temperature at altitude z (K).
|
protected double[] |
cc
Number of particles per cm3. cc(1) = hydrogen cc(2) = helium cc(3) = atomic oxygen cc(4) =
molecular nitrogen cc(5) = molecular oxygen cc(6) = atomic nitrogen
|
protected double |
ch
Intermediate values.
|
protected static double |
CPMG
Cosine of the latitude of the magnetic pole (79N, 71W).
|
protected double[] |
daz
Partial derivatives.
|
protected double[] |
daz2
Partial derivatives.
|
protected double[] |
dh
Partial derivatives.
|
protected double[] |
dhe
Partial derivatives.
|
protected double[] |
do2
Partial derivatives.
|
protected double[] |
dox
Partial derivatives.
|
protected double[] |
dt0
Partial derivatives.
|
protected double[] |
dtp
Partial derivatives.
|
protected double[] |
dtt
Partial derivatives.
|
protected BodyShape |
earth
Earth body shape.
|
protected static double |
GSURF
Gravity acceleration at 120 km altitude.
|
protected double[] |
h
Elements coefficients.
|
protected double[] |
he
Elements coefficients.
|
static int |
HELIUM
Identifier for helium.
|
static int |
HYDROGEN
Identifier for hydrogen.
|
protected DTMInputParameters |
inputParams
External data container.
|
protected static double[] |
MA
Atomic mass H, He, O, N2, O2, N.
|
static int |
MOLECULAR_NITROGEN
Identifier for molecular nitrogen.
|
static int |
MOLECULAR_OXYGEN
Identifier for molecular oxygen.
|
protected double[] |
o
Elements coefficients.
|
protected double[] |
o2
Elements coefficients.
|
protected double |
p10
Legendre coefficient.
|
protected double |
p10mg
Legendre coefficient.
|
protected double |
p11
Legendre coefficient.
|
protected double |
p20
Legendre coefficient.
|
protected double |
p20mg
Legendre coefficient.
|
protected double |
p21
Legendre coefficient.
|
protected double |
p22
Legendre coefficient.
|
protected double |
p30
Legendre coefficient.
|
protected double |
p31
Legendre coefficient.
|
protected double |
p32
Legendre coefficient.
|
protected double |
p33
Legendre coefficient.
|
protected double |
p40
Legendre coefficient.
|
protected double |
p40mg
Legendre coefficient.
|
protected double |
p41
Legendre coefficient.
|
protected double |
p42
Legendre coefficient.
|
protected double |
p50
Legendre coefficient.
|
protected double |
p51
Legendre coefficient.
|
protected double |
p52
Legendre coefficient.
|
protected double |
p60
Legendre coefficient.
|
protected double |
p62
Legendre coefficient.
|
protected static double |
RE
Polar Earth radius.
|
protected static double |
RGAS
Universal gas constant.
|
protected double |
ro
Total density (g/cm3).
|
protected static double |
ROT
2 * π / 365.
|
protected static double |
ROT2
2 * rot.
|
protected double |
s2h
Intermediate values.
|
protected double |
s3h
Intermediate values.
|
protected double |
sh
Intermediate values.
|
protected static double |
SPMG
Sine of the latitude of the magnetic pole (79N, 71W).
|
protected PVCoordinatesProvider |
sun
Sun position.
|
protected double[] |
t0
Elements coefficients.
|
protected double |
tinf
Exospheric temperature.
|
protected double[] |
tp
Elements coefficients.
|
protected double[] |
tt
Elements coefficients.
|
protected static double[] |
VMA
Atomic mass H, He, O, N2, O2, N.
|
protected static double |
XLMG
Longitude (in radians) of the magnetic pole (79N, 71W).
|
protected double |
xlon
Geodetic longitude (rad).
|
protected static double |
ZLB0
Reference altitude.
|
Constructor and Description |
---|
AbstractDTM(DTMInputParameters parameters,
PVCoordinatesProvider sunIn,
BodyShape earthIn,
String dataFile)
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].
|
protected void |
computeGeographicMagneticCoefficients()
Compute Legendre polynomials coefficients with respect to
geographic and magnetic poles
|
abstract Atmosphere |
copy()
A copy of the atmosphere.
|
protected abstract void |
densityComputationFromFortran()
This function performs the actual density compuation once the inputs values
are saved into the global caches.
|
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.
|
DTMInputParameters |
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.
|
protected abstract double |
gFunction(double[] a,
double[] da,
int ff0,
int kleEq)
Computation of function G.
|
protected void |
initderivatives()
Initialize the partial derivative arrays.
|
protected void |
initializeLegendreCoefficients(double c,
double s)
compute Legendre polynomials wrt geographic pole
|
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
protected static final double[] ALEFA
protected static final double[] MA
protected static final double[] VMA
protected static final double RE
protected static final double ZLB0
protected static final double CPMG
protected static final double SPMG
protected static final double XLMG
protected static final double GSURF
protected static final double RGAS
protected static final double ROT
protected static final double ROT2
protected double[] tt
protected double[] h
protected double[] he
protected double[] o
protected double[] az2
protected double[] o2
protected double[] az
protected double[] t0
protected double[] tp
protected double[] dtt
protected double[] dh
protected double[] dhe
protected double[] dox
protected double[] daz2
protected double[] do2
protected double[] daz
protected double[] dt0
protected double[] dtp
protected double cachedDay
protected final double[] cachedF
protected final double[] cachedFbar
protected final double[] akp
protected double cachedAlti
protected double cachedHl
protected double alat
protected double xlon
protected volatile double cachedTemperature
protected volatile double tinf
protected double ro
protected final double[] cc
protected double p10
protected double p20
protected double p30
protected double p40
protected double p50
protected double p60
protected double p11
protected double p21
protected double p31
protected double p41
protected double p51
protected double p22
protected double p32
protected double p42
protected double p52
protected double p62
protected double p33
protected double p10mg
protected double p20mg
protected double p40mg
protected double ch
protected double sh
protected double c2h
protected double s2h
protected double c3h
protected double s3h
protected final PVCoordinatesProvider sun
protected final DTMInputParameters inputParams
protected final BodyShape earth
public AbstractDTM(DTMInputParameters parameters, PVCoordinatesProvider sunIn, BodyShape earthIn, String dataFile) throws PatriusException
parameters
- the solar and magnetic activity datasunIn
- the sun positionearthIn
- the earth body shapedataFile
- the path to the file that contains the data of the modelPatriusException
- if some resource file reading error occursprotected void initderivatives()
protected void initializeLegendreCoefficients(double c, double s)
c
- sinus latitudes
- cosinus latitudeprotected void computeGeographicMagneticCoefficients()
public 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 performedprotected abstract void densityComputationFromFortran()
protected abstract double gFunction(double[] a, double[] da, int ff0, int kleEq)
a
- vector of coefficients for computationda
- vector of partial derivativesff0
- coefficient flag (1 for Ox, Az, He, T°; 0 for H and tp120)kleEq
- season indicator flag (summer, winter, equinox)public 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
DTM 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 DTMInputParameters getParameters()
public PVCoordinatesProvider getSun()
public BodyShape getEarth()
public abstract Atmosphere copy()
The following attributes are not deeply copied:
DTMInputParameters
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 © 2021 CNES. All rights reserved.