Atmosphere types
An EarthAtmosphere object, as the name suggests, characterizes an atmospheric state on Earth with a number of profiles and other quantities to the extent needed by most models to generate radiances.
Convenience functions exist which make the creation of EarthAtmosphere objects easier, such as create_empty_EarthAtmosphere or create_example_atmosphere.
The concept of an atmospheric state supported by RetrievalToolbox is one that includes two categories of profiles. One type of profile is associated with the retrieval grid, a one-dimensional vertical pressure profile (pressure_levels) that dictates e.g. optical property calculations and also determines the pressures at which the gas profile values are defined. The second type are the meteorological profiles, reserved for specific humidity, temperature, altitude and gravity. These are laid out on another pressure grid (met_pressure_levels) which can be a completely different one compared to the retrieval grid.
Each profile has its own physical unit with denoted by _unit, so e.g. the altitude levels are stored in .altitude_levels, and the corresponding unit field is .altitude_unit. The type definition restricts the possible units to those that make sense physically, so users can use u"km" or u"m" as their physical units for the altitude profile, but not e.g. u"Pa", as that is not a valid length-type unit.
When users write a retrieval algorithm that performs retrievals on many scenes, it is generally advised to not create new atmosphere objects as that tends to fill up memory quite fast. Instead, use the ingest! function to copy values into the atmosphere object, over-writing existing values. As with most objects in RetrievalToolbox, users must be cautious as it is always possible to change values inside the object.
RetrievalToolbox.EarthAtmosphere — Type
atm_elements::Vector{<:AbstractAtmosphereElement}: Vector of atmosphere elements present in this atmosphereN_level::Int64: Number of retrieval levels in this atmosphereN_layer::Int64: Number of retrieval layers in this atmospherepressure_levels::Vector{T} where T<:AbstractFloat: Pressure level locationspressure_layers::Vector{T} where T<:AbstractFloat: Mid-layer pressure locationspressure_unit::Unitful.Units{U, 𝐌 𝐋^-1 𝐓^-2} where U: Pressure unitN_met_level::Int64: Number of meteorological levels in this atmosphereN_met_layer::Int64: Number of meteorological layers in this atmospheremet_pressure_levels::Vector{T} where T<:AbstractFloat: Meteorological pressure level locationsmet_pressure_layers::Vector{T} where T<:AbstractFloat: Mid-layer pressure locations for meteorologymet_pressure_unit::Unitful.Units{U, 𝐌 𝐋^-1 𝐓^-2} where U: Pressure units for meteorologytemperature_levels::Vector{T} where T<:AbstractFloat: Temperatures at pressure levelstemperature_layers::Vector{T} where T<:AbstractFloat: Temperatures at mid-layer pressurestemperature_unit::Unitful.Units{U, 𝚯, nothing} where U: Temperature unitspecific_humidity_levels::Vector{T} where T<:AbstractFloat: Specific humidity at pressure levelsspecific_humidity_layers::Vector{T} where T<:AbstractFloat: Specific humidity at mid-layer pressuresspecific_humidity_unit::Unitful.Units{U, NoDims} where U: Specific humidity unitaltitude_levels::Vector{T} where T<:AbstractFloat: Altitude at pressure levelsaltitude_layers::Vector{T} where T<:AbstractFloat: Altitude at mid-layer pressuresaltitude_unit::Unitful.Units{U, 𝐋} where U: Altitude unitsgravity_levels::Vector{T} where T<:AbstractFloat: Gravity at pressure levelsgravity_layers::Vector{T} where T<:AbstractFloat: Gravity at mid-layer pressuresgravity_unit::Unitful.Units{U, 𝐋 𝐓^-2} where U: Gravity unit