add test for JB2008

This commit is contained in:
Chunxiao Li 2021-06-07 12:52:48 +08:00
parent c3da64d82a
commit 5e819425f1

View File

@ -6,8 +6,7 @@
"source": [
"# Welcome to ATMOS\n",
"\n",
"This package is an archive of scientific routines that implements the estimation of atmospheric properties for various atmosphere models, such\n",
"as exponential, coesa76, and nrimsise00. The package mainly estimates density, temperature, pressure and other parameters of air at a set of specific altitudes. For atmosphere below 86 kilometers, it also calculates the speed of sound, viscosity, and thermal conductivity."
"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). "
]
},
{
@ -48,18 +47,15 @@
"output_type": "stream",
"text": [
"[1.22500000e+00 7.76098911e-02 3.97200000e-03 3.20600000e-04\n",
" 1.90500000e-05]\n",
"[1.22500000e+00 7.69385063e-02 3.84131212e-03 2.97747719e-04\n",
" 1.59847603e-05]\n"
" 1.90500000e-05]\n"
]
}
],
"source": [
">>> from pyatmos import expo\n",
">>> rhos_geom = expo([0,20,40,60,80]) # geometric altitudes by default\n",
">>> print(rhos_geom) # [kg/m^3]\n",
">>> rhos_geop = expo([0,20,40,60,80],'geopotential') # geopotential altitudes\n",
">>> print(rhos_geop)"
">>> expo_geom = expo([0,20,40,60,80]) # geometric altitudes by default\n",
">>> print(expo_geom.rho) # [kg/m^3]\n",
">>> # expo_geop = expo([0,20,40,60,80],'geopotential') # geopotential altitudes"
]
},
{
@ -80,21 +76,19 @@
"text": [
"[1.22499916e+00 8.89079563e-02 3.99535051e-03 3.09628985e-04\n",
" 1.84514759e-05]\n",
"[1.22499916e+00 8.80348036e-02 3.85100688e-03 2.88320680e-04\n",
" 1.57005388e-05]\n",
"[5.60184300e-07 1.91512264e-11 5.21285933e-13 3.06944380e-14\n",
" 5.75807856e-15]\n"
"[288.15 216.65 250.35120115 247.01740767 198.63418825]\n",
"[1.01325000e+05 5.52919008e+03 2.87122194e+02 2.19548951e+01\n",
" 1.05207648e+00]\n"
]
}
],
"source": [
">>> from pyatmos import coesa76\n",
">>> rhos_geom,Ts_geom,Ps_geom = coesa76([0,20,40,60,80]) \n",
">>> print(rhos_geom) # [kg/m^3]\n",
">>> rhos_geop,Ts_geop,Ps_geop = coesa76([0,20,40,60,80],'geopotential')\n",
">>> print(rhos_geop) # [kg/m^3]\n",
">>> rhos_geom,Ts_geom,Ps_geom = coesa76([100,300,500,700,900]) \n",
">>> print(rhos_geom) # [kg/m^3]"
">>> coesa76_geom = coesa76([0,20,40,60,80]) # geometric altitudes by default\n",
">>> print(coesa76_geom.rho) # [kg/m^3]\n",
">>> print(coesa76_geom.T) # [K]\n",
">>> print(coesa76_geom.P) # [Pa]\n",
">>> # coesa76_geop = coesa76([0,20,40,60,80],'geopotential') # geopotential altitudes"
]
},
{
@ -125,18 +119,11 @@
}
],
"source": [
">>> from pyatmos import download_sw,read_sw\n",
">>> from pyatmos import download_sw_nrlmsise00,read_sw_nrlmsise00\n",
">>> # Download or update the space weather file from www.celestrak.com\n",
">>> swfile = download_sw() \n",
">>> swfile = download_sw_nrlmsise00() \n",
">>> # Read the space weather data\n",
">>> swdata = read_sw(swfile) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculate the temperature, density at [25N, 102E, 20km] at 03:00:00 UTC on October 5, 2015 with anomalous oxygen and 3h-geomagnetic index."
">>> swdata = read_sw_nrlmsise00(swfile) "
]
},
{
@ -148,30 +135,80 @@
"name": "stdout",
"output_type": "stream",
"text": [
"{'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])}\n",
"6.416602651204796e-14\n",
"(853.466244160143, 853.4647165799171)\n",
"{'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}\n"
"1.714115212984513e-14\n",
"765.8976564552341\n",
"{'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}\n"
]
}
],
"source": [
">>> from pyatmos import nrlmsise00\n",
">>> # Set a specific time and location\n",
">>> t = '2015-10-05 03:00:00' # time(UTC) \n",
">>> t = '2014-07-22 22:18:45' # time(UTC) \n",
">>> lat,lon,alt = 25,102,600 # latitude, longitude in [degree], and altitude in [km]\n",
">>> params,rho,T,nd = nrlmsise00(t,(lat,lon,alt),swdata) # aphmode=True\n",
">>> print(params)\n",
">>> print(rho) \n",
">>> print(T) \n",
">>> print(nd)"
">>> nrl00 = nrlmsise00(t,(lat,lon,alt),swdata)\n",
">>> print(nrl00.rho) # [kg/m^3]\n",
">>> print(nrl00.T) # [K]\n",
">>> print(nrl00.nd) # composition in [1/m^3]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Note: The range of longitude is [0,360] by default, and the west longitude can also be expressed as a negative number.**"
"#### JB2008"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Before using JB2008, the space weather data needs to be prepared in advance.*"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The space weather data in /Users/lichunxiao/src/sw-data/ is already the latest.\n"
]
}
],
"source": [
">>> from pyatmos import download_sw_jb2008,read_sw_jb2008\n",
">>> # Download or update the space weather file from https://sol.spacenvironment.net\n",
">>> swfile = download_sw_jb2008() \n",
">>> # Read the space weather data\n",
">>> swdata = read_sw_jb2008(swfile) "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.2991711750265394e-14\n",
"754.2803276187265\n"
]
}
],
"source": [
">>> from pyatmos import jb2008\n",
">>> # Set a specific time and location\n",
">>> t = '2014-07-22 22:18:45' # time(UTC) \n",
">>> lat,lon,alt = 25,102,600 # latitude, longitude in [degree], and altitude in [km]\n",
">>> jb08 = jb2008(t,(lat,lon,alt),swdata)\n",
">>> print(jb08.rho) # [kg/m^3]\n",
">>> print(jb08.T) # [K]"
]
},
{
@ -179,15 +216,20 @@
"metadata": {},
"source": [
"## Change log\n",
"- **1.2.0 — Jan 22, 2021**\n",
" - Added **Exponential Atmosphere** up to 1000km\n",
" - Added **Committee on Extension to the Standard Atmosphere(COESA)** up to 1000km\n",
"\n",
"- **1.2.3 — Jun 7, 2021**\n",
" - Added atmospheric models **JB2008**\n",
" - Changed the output of the result to an instance\n",
" - Improved the code structure for NRLMSISE-00, and the running speed is nearly threefold\n",
"- **1.2.1 — Jan 22, 2021**\n",
" - Added **Exponential Atmosphere** up to 1000 km\n",
" - Added **Committee on Extension to the Standard Atmosphere(COESA)** up to 1000 km\n",
" - Completed part of the help documentation for NRLMSISE-00\n",
" - Improved the code structure to make it easier to read\n",
"- **1.1.2 — Jul 26, 2020**\n",
" - Added colored-progress bar for downloading data\n",
"- **1.1.0 — Mar 29, 2020**\n",
" - Added the International Standard Atmosphere(ISA) Model up to 86kms \n",
" - Added the International Standard Atmosphere(ISA) Model up to 86kms \n",
"\n",
"## Next release\n",
"\n",
@ -200,7 +242,6 @@
"- [Public Domain Aeronautical Software](http://www.pdas.com/atmos.html) \n",
"- https://gist.github.com/buzzerrookie/5b6438c603eabf13d07e\n",
"- https://ww2.mathworks.cn/help/aerotbx/ug/atmosisa.html\n",
"\n",
"- [Original Fortran and C code](https://ccmc.gsfc.nasa.gov/pub/modelweb/atmospheric/msis/)\n",
"- [MSISE-00 in Python and Matlab](https://github.com/space-physics/msise00)\n",
"- [NRLMSISE-00 Atmosphere Model - Matlab](https://ww2.mathworks.cn/matlabcentral/fileexchange/56253-nrlmsise-00-atmosphere-model?requestedDomain=zh)\n",
@ -208,8 +249,17 @@
"- [NRLMSISE-00 Atmosphere Model - CCMC](https://ccmc.gsfc.nasa.gov/modelweb/models/nrlmsise00.php)\n",
"- [NRLMSISE-00 empirical model of the atmosphere: Statistical comparisons and scientific issues](http://onlinelibrary.wiley.com/doi/10.1029/2002JA009430/pdf)\n",
"- [ATMOSPHERIC MODELS](http://www.braeunig.us/space/atmmodel.htm)\n",
"- [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)\n",
"- [ATMOSPHERE API](https://amentum.com.au/atmosphere)\n",
"- [COSPAR International Reference Atmosphere - 2012](https://spacewx.com/wp-content/uploads/2021/03/chapters_1_3.pdf)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {