public class HarrisPriester extends Object implements Atmosphere
This model is a static one that takes into account the diurnal density bulge. It doesn't need any space weather data but a density vs. altitude table, which depends on solar activity.
The implementation relies on the book:
Satellite Orbits
Oliver Montenbruck, Eberhard Gill
Springer 2005
Constructor and Description |
---|
HarrisPriester(PVCoordinatesProvider sunIn,
BodyShape earthIn)
Simple constructor for Modified Harris-Priester atmosphere model.
|
HarrisPriester(PVCoordinatesProvider sunIn,
BodyShape earthIn,
double nIn)
Constructor for Modified Harris-Priester atmosphere model.
|
HarrisPriester(PVCoordinatesProvider sunIn,
BodyShape earthIn,
double[][] tabAltRhoIn)
Constructor for Modified Harris-Priester atmosphere model.
|
HarrisPriester(PVCoordinatesProvider sunIn,
BodyShape earthIn,
double[][] tabAltRhoIn,
double nIn)
Constructor for Modified Harris-Priester atmosphere model.
|
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.
|
double |
getDensity(AbsoluteDate date,
Vector3D position,
Frame frame)
Get the local density.
|
double |
getDensity(double sunRAsc,
double sunDecl,
Vector3D satPos,
double satAlt)
Get the local density.
|
double |
getMaxAlt()
Get the maximal altitude for the model.
|
double |
getMinAlt()
Get the minimal altitude for the model.
|
double |
getSpeedOfSound(AbsoluteDate date,
Vector3D position,
Frame frame)
Get the local speed of sound.
|
double[][] |
getTabDensity()
Get the current density table.
|
Vector3D |
getVelocity(AbsoluteDate date,
Vector3D position,
Frame frame)
Get the inertial velocity of atmosphere molecules.
|
public HarrisPriester(PVCoordinatesProvider sunIn, BodyShape earthIn)
The cosine exponent value is set to 4 by default.
The default embedded density table is the one given in the referenced book from Montenbruck & Gill. It is given for mean solar activity and spreads over 100 to 1000 km.
sunIn
- the sun positionearthIn
- the earth body shapepublic HarrisPriester(PVCoordinatesProvider sunIn, BodyShape earthIn, double nIn)
Recommanded values for the cosine exponent spread over the range 2, for low inclination orbits, to 6, for polar orbits.
The default embedded density table is the one given in the referenced book from Montenbruck & Gill. It is given for mean solar activity and spreads over 100 to 1000 km.
sunIn
- the sun positionearthIn
- the earth body shapenIn
- the cosine exponentpublic HarrisPriester(PVCoordinatesProvider sunIn, BodyShape earthIn, double[][] tabAltRhoIn)
The provided density table must be an array such as:
The cosine exponent value is set to 4 by default.
sunIn
- the sun positionearthIn
- the earth body shapetabAltRhoIn
- the density tablepublic HarrisPriester(PVCoordinatesProvider sunIn, BodyShape earthIn, double[][] tabAltRhoIn, double nIn)
Recommanded values for the cosine exponent spread over the range 2, for low inclination orbits, to 6, for polar orbits.
The provided density table must be an array such as:
sunIn
- the sun positionearthIn
- the earth body shapetabAltRhoIn
- the density tablenIn
- the cosine exponentpublic double[][] getTabDensity()
The density table is an array such as:
The returned density table is a copy of the current one.
public double getMinAlt()
No computation is possible below this altitude.
public double getMaxAlt()
Above this altitude, density is assumed to be zero.
public double getDensity(double sunRAsc, double sunDecl, Vector3D satPos, double satAlt) throws PatriusException
sunRAsc
- Right Ascension of Sun (radians)sunDecl
- Declination of Sun (radians)satPos
- position of s/c in earth frame(m)satAlt
- height of s/c (m)PatriusException
- if altitude is below the model minimal altitudepublic 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 some frame conversion cannot be performed
or if altitude is below the model minimal altitudepublic Vector3D getVelocity(AbsoluteDate date, Vector3D position, Frame frame) throws PatriusException
Here the case is simplified : atmosphere is supposed to have a null velocity in earth frame.
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 Atmosphere copy()
The following attributes are not deeply copied:
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.