update document
This commit is contained in:
parent
707e4ce921
commit
73a9635c11
123
README.md
123
README.md
@ -1,12 +1,38 @@
|
||||
# Welcome to ATMOS
|
||||
|
||||
[](https://pypi.python.org/pypi/pyatmos/) [](https://pypi.python.org/pypi/pyatmos/) [](https://pypi.python.org/pypi/pyatmos/) [](https://GitHub.com/lcx366/ATMOS/graphs/contributors/) [](https://GitHub.com/lcx366/ATMOS/graphs/commit-activity) [](https://github.com/lcx366/ATMOS/blob/master/LICENSE) [](http://pyatmos.readthedocs.io/?badge=latest) [](https://travis-ci.org/lcx366/ATMOS)
|
||||
[](https://pypi.python.org/pypi/pyatmos/) [](https://pypi.python.org/pypi/pyatmos/) [](https://pypi.python.org/pypi/pyatmos/) [](https://GitHub.com/lcx366/ATMOS/graphs/contributors/) [](https://GitHub.com/lcx366/ATMOS/graphs/commit-activity) [](https://github.com/lcx366/ATMOS/blob/master/LICENSE) [](http://pyatmos.readthedocs.io/?badge=latest)
|
||||
|
||||
This package is an archive of scientific routines that implements the estimation of atmospheric properties for various atmosphere models, such as Exponential, COESA76, and NRLMSISE-00. The package mainly estimates density, temperature, and pressure of air at a set of specific altitudes.
|
||||
This package is an archive of scientific routines that estimates the vertical structure of atmosphere with various *atmospheric density models*, such as **Exponential**(-0.611\~1000 km), **COESA76**(-0.611\~1000 km), **NRLMSISE-00**(0\~2000 km), and **JB2008**(90\~2500 km).
|
||||
|
||||
The **NRLMSISE-00** model was developed by the US Naval Research Laboratory. It is based on mass spectrometry and incoherent radar scatter data, also incorporates drag and accelerometer data, and accounts for anomalous oxygen at high altitudes(>500 km). It is recommended by the International Committee on Space Resarch (COSPAR) as the standard for atmospheric composition. Two indices are used in this model: *F10.7* (both the daily solar flux value of the previous day and the 81-day average centred on the input day) and $A_p$ (geomagnetic daily value).
|
||||
|
||||
The **JB2008** (Jacchia-Bowman) model is a newer model developed by Space Environment Technologies(SET) and the US Air Force Space Command. The model accounts for various phenomena related to EUV heating of the thermosphere and uses the DST index as the driver of global density changes. The model is complementary to the NRLMSISE00 model and is more accurate during times of high solar activity and geomagnetic storms. It is recommended by COSPAR as the standard for thermospheric density in satellite drag calculations. Four solar indices and two geomagnetic activity indices are used in this model: *F10.7* (both tabular value one day earlier and the 81-day average centred on the input time); *S10.7* (both tabular value one day earlier and the 81-day average centred on the input time); *M10.7* (both tabular value five days earlier and the 81-day average centred on the input time); Y10.7 (both tabular value five days earlier and the 81-day average centred on the input time); $a_p$ (3 hour tabular value); and *DST* (converted and input as a dTc temperature change tabular value on the input time).
|
||||
|
||||
The **Exponential** returns
|
||||
|
||||
- the mass density
|
||||
|
||||
The **COESA76** returns
|
||||
|
||||
- the mass density, temperature, and pressure at the altitude
|
||||
|
||||
The **NRLMSISE-00** returns
|
||||
|
||||
- the number densities of atmospheric constituents including N$_2$, O$_2$, Ar, He, O, N, and anomalous oxygen at altitude above 500 km
|
||||
|
||||
- the temperature at the altitude
|
||||
|
||||
- the total mass density including the anomalous oxygen component
|
||||
|
||||
The **JB2008** returns
|
||||
|
||||
- the temperature at the altitude
|
||||
|
||||
- the total mass density
|
||||
|
||||
## How to install
|
||||
|
||||
On Linux, macOS and Windows architectures, the binary wheels can be installed using pip by executing one of the following commands:
|
||||
On Linux, macOS and Windows architectures, the binary wheels can be installed using **pip** by executing one of the following commands:
|
||||
|
||||
```sh
|
||||
pip install pyatmos
|
||||
@ -19,34 +45,29 @@ pip install pyatmos --upgrade # to upgrade a pre-existing installation
|
||||
|
||||
```python
|
||||
>>> from pyatmos import expo
|
||||
>>> rhos_geom = expo([0,20,40,60,80]) # geometric altitudes by default
|
||||
>>> print(rhos_geom) # [kg/m^3]
|
||||
>>> rhos_geop = expo([0,20,40,60,80],'geopotential') # geopotential altitudes
|
||||
>>> print(rhos_geop)
|
||||
>>> expo_geom = expo([0,20,40,60,80]) # geometric altitudes by default
|
||||
>>> print(expo_geom.rho) # [kg/m^3]
|
||||
>>> # expo_geop = expo([0,20,40,60,80],'geopotential') # geopotential altitudes
|
||||
|
||||
[1.22500000e+00 7.76098911e-02 3.97200000e-03 3.20600000e-04
|
||||
1.90500000e-05]
|
||||
[1.22500000e+00 7.69385063e-02 3.84131212e-03 2.97747719e-04
|
||||
1.59847603e-05]
|
||||
```
|
||||
|
||||
#### COESA 1976
|
||||
|
||||
```python
|
||||
>>> from pyatmos import coesa76
|
||||
>>> rhos_geom,Ts_geom,Ps_geom = coesa76([0,20,40,60,80])
|
||||
>>> print(rhos_geom) # [kg/m^3]
|
||||
>>> rhos_geop,Ts_geop,Ps_geop = coesa76([0,20,40,60,80],'geopotential')
|
||||
>>> print(rhos_geop) # [kg/m^3]
|
||||
>>> rhos_geom,Ts_geom,Ps_geom = coesa76([100,300,500,700,900])
|
||||
>>> print(rhos_geom) # [kg/m^3]
|
||||
>>> coesa76_geom = coesa76([0,20,40,60,80]) # geometric altitudes by default
|
||||
>>> print(coesa76_geom.rho) # [kg/m^3]
|
||||
>>> print(coesa76_geom.T) # [K]
|
||||
>>> print(coesa76_geom.P) # [Pa]
|
||||
>>> # coesa76_geop = coesa76([0,20,40,60,80],'geopotential') # geopotential altitudes
|
||||
|
||||
[1.22499916e+00 8.89079563e-02 3.99535051e-03 3.09628985e-04
|
||||
1.84514759e-05]
|
||||
[1.22499916e+00 8.80348036e-02 3.85100688e-03 2.88320680e-04
|
||||
1.57005388e-05]
|
||||
[5.60184300e-07 1.91512264e-11 5.21285933e-13 3.06944380e-14
|
||||
5.75807856e-15]
|
||||
[288.15 216.65 250.35120115 247.01740767 198.63418825]
|
||||
[1.01325000e+05 5.52919008e+03 2.87122194e+02 2.19548951e+01
|
||||
1.05207648e+00]
|
||||
```
|
||||
|
||||
#### NRLMSISE-00
|
||||
@ -54,35 +75,58 @@ pip install pyatmos --upgrade # to upgrade a pre-existing installation
|
||||
*Before using NRLMSISE-00, the space weather data needs to be prepared in advance.*
|
||||
|
||||
```python
|
||||
>>> from pyatmos import download_sw,read_sw
|
||||
>>> from pyatmos import download_sw_nrlmsise00,read_sw_nrlmsise00
|
||||
>>> # Download or update the space weather file from www.celestrak.com
|
||||
>>> swfile = download_sw()
|
||||
>>> swfile = download_sw_nrlmsise00()
|
||||
>>> # Read the space weather data
|
||||
>>> swdata = read_sw(swfile)
|
||||
>>> swdata = read_sw_nrlmsise00(swfile)
|
||||
```
|
||||
|
||||
Calculate the temperature, density at [25N, 102E, 20km] at 03:00:00 UTC on October 5, 2015 with anomalous oxygen and 3h-geomagnetic index.
|
||||
|
||||
```
|
||||
>>> from pyatmos import nrlmsise00
|
||||
>>> # Set a specific time and location
|
||||
>>> t = '2015-10-05 03:00:00' # time(UTC)
|
||||
>>> t = '2014-07-22 22:18:45' # time(UTC)
|
||||
>>> lat,lon,alt = 25,102,600 # latitude, longitude in [degree], and altitude in [km]
|
||||
>>> params,rho,T,nd = nrlmsise00(t,(lat,lon,alt),swdata) # aphmode=True
|
||||
>>> print(params)
|
||||
>>> print(rho)
|
||||
>>> print(T)
|
||||
>>> print(nd)
|
||||
>>> nrl00 = nrlmsise00(t,(lat,lon,alt),swdata)
|
||||
>>> print(nrl00.rho) # [kg/m^3]
|
||||
>>> print(nrl00.T) # [K]
|
||||
>>> print(nrl00.nd) # composition in [1/m^3]
|
||||
|
||||
{'Year': 2015, 'DOY': 278, 'SOD': 10800.0, 'Lat': 25, 'Lon': 102, 'Alt': 600, 'LST': 9.8, 'f107A': 104.4, 'f107D': 82.6, 'ApD': 18, 'Ap3H': array([18. , 22. , 22. , 22. , 7. , 15.25 , 9.375])}
|
||||
6.416602651204796e-14
|
||||
(853.466244160143, 853.4647165799171)
|
||||
{'He': 2388916051039.6826, 'O': 1758109067905.8027, 'N2': 2866987110.5606275, 'O2': 22411077.605527952, 'Ar': 4351.013995142538, 'H': 155026672753.3203, 'N': 46719306249.863495, 'ANM O': 4920851253.780525}
|
||||
1.714115212984513e-14
|
||||
765.8976564552341
|
||||
{'He': 645851224907.2849, 'O': 456706971423.5056, 'N2': 531545420.00015724, 'O2': 2681352.1654067687, 'Ar': 406.9308900607773, 'H': 157249711103.90558, 'N': 6759664327.87355, 'ANM O': 10526544596.059282}
|
||||
```
|
||||
|
||||
**Note: The range of longitude is [0,360] by default, and the west longitude can also be expressed as a negative number.**
|
||||
#### JB2008
|
||||
|
||||
*Before using JB2008, the space weather data needs to be prepared in advance.*
|
||||
|
||||
```python
|
||||
>>> from pyatmos import download_sw_jb2008,read_sw_jb2008
|
||||
>>> # Download or update the space weather file from https://sol.spacenvironment.net
|
||||
>>> swfile = download_sw_jb2008()
|
||||
>>> # Read the space weather data
|
||||
>>> swdata = read_sw_jb2008(swfile)
|
||||
```
|
||||
|
||||
```python
|
||||
>>> from pyatmos import jb2008
|
||||
>>> # Set a specific time and location
|
||||
>>> t = '2014-07-22 22:18:45' # time(UTC)
|
||||
>>> lat,lon,alt = 25,102,600 # latitude, longitude in [degree], and altitude in [km]
|
||||
>>> jb08 = jb2008(t,(lat,lon,alt),swdata)
|
||||
>>> print(jb08.rho) # [kg/m^3]
|
||||
>>> print(jb08.T) # [K]
|
||||
|
||||
1.2991711750265394e-14
|
||||
754.2803276187265
|
||||
```
|
||||
|
||||
## Change log
|
||||
- **1.2.3 — Jun 7, 2021**
|
||||
- Added atmospheric models **JB2008**
|
||||
- Changed the output of the result to an instance
|
||||
- Improved the code structure for NRLMSISE-00, and the running speed is nearly threefold
|
||||
- **1.2.1 — Jan 22, 2021**
|
||||
- Added **Exponential Atmosphere** up to 1000 km
|
||||
- Added **Committee on Extension to the Standard Atmosphere(COESA)** up to 1000 km
|
||||
@ -95,8 +139,8 @@ Calculate the temperature, density at [25N, 102E, 20km] at 03:00:00 UTC on Octob
|
||||
|
||||
## Next release
|
||||
|
||||
- Complete the help documentation for NRLMSISE-00
|
||||
- Add other atmospheric models, such as the **Earth Global Reference Atmospheric Model(Earth-GRAM) 2016**, and the **Jacchia-Bowman 2008 Empirical Thermospheric Density Model(JB2008)**
|
||||
- Because there is a **45-day lag** between the current Day-Of-Year and the last data DOY in the indices files provided by Space Environment Technologies(SET), the forecasts through the last data DOY out to 137 days (5 solar rotations) need to be estimated using machine learning or other methods.
|
||||
- Add other atmospheric models, such as the **Earth Global Reference Atmospheric Model(Earth-GRAM) 2016**, and the **Drag Temperature Model(DTM)2013**.
|
||||
|
||||
## Reference
|
||||
|
||||
@ -104,7 +148,6 @@ Calculate the temperature, density at [25N, 102E, 20km] at 03:00:00 UTC on Octob
|
||||
- [Public Domain Aeronautical Software](http://www.pdas.com/atmos.html)
|
||||
- https://gist.github.com/buzzerrookie/5b6438c603eabf13d07e
|
||||
- https://ww2.mathworks.cn/help/aerotbx/ug/atmosisa.html
|
||||
|
||||
- [Original Fortran and C code](https://ccmc.gsfc.nasa.gov/pub/modelweb/atmospheric/msis/)
|
||||
- [MSISE-00 in Python and Matlab](https://github.com/space-physics/msise00)
|
||||
- [NRLMSISE-00 Atmosphere Model - Matlab](https://ww2.mathworks.cn/matlabcentral/fileexchange/56253-nrlmsise-00-atmosphere-model?requestedDomain=zh)
|
||||
@ -112,5 +155,7 @@ Calculate the temperature, density at [25N, 102E, 20km] at 03:00:00 UTC on Octob
|
||||
- [NRLMSISE-00 Atmosphere Model - CCMC](https://ccmc.gsfc.nasa.gov/modelweb/models/nrlmsise00.php)
|
||||
- [NRLMSISE-00 empirical model of the atmosphere: Statistical comparisons and scientific issues](http://onlinelibrary.wiley.com/doi/10.1029/2002JA009430/pdf)
|
||||
- [ATMOSPHERIC MODELS](http://www.braeunig.us/space/atmmodel.htm)
|
||||
- [poliastro-Atmosphere module](https://docs.poliastro.space/en/stable/api/safe/atmosphere/atmosphere_index.html?highlight=nrlmsise#famous-atmospheric-models)
|
||||
- [poliastro-Atmosphere module](https://docs.poliastro.space/en/latest/autoapi/poliastro/earth/atmosphere/index.html?highlight=poliastro.earth.atmosphere)
|
||||
- [ATMOSPHERE API](https://amentum.com.au/atmosphere)
|
||||
- [COSPAR International Reference Atmosphere - 2012](https://spacewx.com/wp-content/uploads/2021/03/chapters_1_3.pdf)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user