Skip to main content

A package to estimate the vertical structure of atmosphere with various atmospheric density models

Project description

Welcome to ATMOS

PyPI version shields.io PyPI pyversions PyPI status GitHub contributors Maintenance GitHub license Documentation Status

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:

pip install pyatmos
pip install pyatmos --upgrade # to upgrade a pre-existing installation

How to use

Exponential

>>> from pyatmos import expo
>>> 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]

COESA 1976

>>> from pyatmos import coesa76
>>> 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]
[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

Before using NRLMSISE-00, the space weather data needs to be prepared in advance.

>>> from pyatmos import download_sw_nrlmsise00,read_sw_nrlmsise00
>>> # Download or update the space weather file from www.celestrak.com
>>> swfile = download_sw_nrlmsise00() 
>>> # Read the space weather data
>>> swdata = read_sw_nrlmsise00(swfile) 
>>> from pyatmos import nrlmsise00
>>> # 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]
>>> 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]

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}

JB2008

Before using JB2008, the space weather data needs to be prepared in advance.

>>> 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) 
>>> 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.7 — Nov 05, 2024
    • By dynamically setting environment variables ENABLE_IERS_LOAD, the problem of repeatedly loading IERS data files when other packages call this package is fixed.
  • 1.2.6 — Mar 08, 2024
    • Implemented the calculation of Associated Legendre polynomials using scipy, eliminating the dependency on the pyshtools package.
  • 1.2.5 — Jul 16, 2023
    • Added time system for loading/updating the EOP file and Leap Second file from IERS.
  • 1.2.4 — Feb 16, 2023
    • Changed functions read_sw_nrlmsise00 and get_sw due to the space weather file changed from 'SW-ALL.txt' to 'SW-ALL.csv'.
    • Deleted the colored-progress bar for downloading space weather file, and use wget instead.
  • 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.
    • Completed part of the help documentation for NRLMSISE-00.
    • Improved the code structure to make it easier to read.
  • 1.1.2 — Jul 26, 2020
    • Added colored-progress bar for downloading data.
  • 1.1.0 — Mar 29, 2020
    • Added the International Standard Atmosphere(ISA) Model.

Next release

  • 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pyatmos-1.2.7-py3-none-any.whl (47.9 kB view details)

Uploaded Python 3

File details

Details for the file pyatmos-1.2.7-py3-none-any.whl.

File metadata

  • Download URL: pyatmos-1.2.7-py3-none-any.whl
  • Upload date:
  • Size: 47.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for pyatmos-1.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 e9a81a7dd754770c0c8c7f3c32c4799ac8cd306abc5ca41443ec353c30029ac6
MD5 a3ed2e23cc7e73557b10fa6a187d7276
BLAKE2b-256 5ea48a1a5cf234e9d3bcd2ad82a812ee66b0359bb657c1a0dcabe42079935e62

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page