SatelliteToolboxAtmosphericModels.jl
Atmospheric density and temperature models. Repo: JuliaSpace/SatelliteToolboxAtmosphericModels.jl
Models
All functions accessed via AtmosphericModels. submodule prefix.
Exponential (simplest, no space indices needed)
ρ = AtmosphericModels.exponential(h) # h [m] -> density [kg/m³]
Jacchia-Roberts 1971
out = AtmosphericModels.jr1971(jd, ϕ_gd, λ, h) # auto-fetches indices
out = AtmosphericModels.jr1971(jd, ϕ_gd, λ, h, F10, F10ₐ, Kp) # manual indices
out.total_density # [kg/m³]
out.temperature # [K]
out.exospheric_temperature # [K]
Jacchia-Bowman 2008
out = AtmosphericModels.jb2008(jd, ϕ_gd, λ, h) # auto-fetches indices
out = AtmosphericModels.jb2008(jd, ϕ_gd, λ, h, F10, F10ₐ, S10, S10ₐ, M10, M10ₐ, Y10, Y10ₐ, DstΔTc)
NRLMSISE-00
# NOTE: argument order differs! (time, altitude, lat, lon)
out = AtmosphericModels.nrlmsise00(jd, h, ϕ_gd, λ) # auto-fetches
out = AtmosphericModels.nrlmsise00(jd, h, ϕ_gd, λ, F10ₐ, F10, ap)
Output Fields (all models)
total_density [kg/m³], temperature [K], exospheric_temperature [K]
- Species number densities [1/m³]:
N2_number_density, O2_number_density, O_number_density, He_number_density, H_number_density, Ar_number_density
Prerequisites
SpaceIndices.init() # Required before auto-fetching indices
Key Conventions
- Altitude in meters, angles in radians
- Time as Julian Day (
Number) or DateTime
- JR1971/JB2008: args are
(time, lat, lon, alt). NRLMSISE-00: args are (time, alt, lat, lon)
- AD support via ForwardDiff, Mooncake, and Zygote extensions
- Pass
P keyword to NRLMSISE-00 for pre-allocated Legendre buffer
1---2name: satellitetoolbox-atmosphere3description: SatelliteToolboxAtmosphericModels.jl for computing atmospheric density and temperature using empirical models (Exponential, JR1971, JB2008, NRLMSISE-00). Use when computing atmospheric drag, looking up density at altitude, or working with atmospheric models for orbit propagation.4---5
6# SatelliteToolboxAtmosphericModels.jl
7
8Atmospheric density and temperature models. Repo: [JuliaSpace/SatelliteToolboxAtmosphericModels.jl](https://github.com/JuliaSpace/SatelliteToolboxAtmosphericModels.jl)
9
10## Models
11
12All functions accessed via `AtmosphericModels.` submodule prefix.
13
14### Exponential (simplest, no space indices needed)
15```julia
16ρ = AtmosphericModels.exponential(h) # h [m] -> density [kg/m³]
17```
18
19### Jacchia-Roberts 1971
20```julia
21out = AtmosphericModels.jr1971(jd, ϕ_gd, λ, h) # auto-fetches indices
22out = AtmosphericModels.jr1971(jd, ϕ_gd, λ, h, F10, F10ₐ, Kp) # manual indices
23out.total_density # [kg/m³]
24out.temperature # [K]
25out.exospheric_temperature # [K]
26```
27
28### Jacchia-Bowman 2008
29```julia
30out = AtmosphericModels.jb2008(jd, ϕ_gd, λ, h) # auto-fetches indices
31out = AtmosphericModels.jb2008(jd, ϕ_gd, λ, h, F10, F10ₐ, S10, S10ₐ, M10, M10ₐ, Y10, Y10ₐ, DstΔTc)
32```
33
34### NRLMSISE-00
35```julia
36# NOTE: argument order differs! (time, altitude, lat, lon)
37out = AtmosphericModels.nrlmsise00(jd, h, ϕ_gd, λ) # auto-fetches
38out = AtmosphericModels.nrlmsise00(jd, h, ϕ_gd, λ, F10ₐ, F10, ap)
39```
40
41## Output Fields (all models)
42- `total_density` [kg/m³], `temperature` [K], `exospheric_temperature` [K]
43- Species number densities [1/m³]: `N2_number_density`, `O2_number_density`, `O_number_density`, `He_number_density`, `H_number_density`, `Ar_number_density`
44
45## Prerequisites
46```julia
47SpaceIndices.init() # Required before auto-fetching indices
48```
49
50## Key Conventions
51- Altitude in **meters**, angles in **radians**
52- Time as Julian Day (`Number`) or `DateTime`
53- JR1971/JB2008: args are `(time, lat, lon, alt)`. NRLMSISE-00: args are `(time, alt, lat, lon)`
54- AD support via ForwardDiff, Mooncake, and Zygote extensions
55- Pass `P` keyword to NRLMSISE-00 for pre-allocated Legendre buffer