Synthetic observations#
Functions for calculating synthetic observations.
- aeolus.synthobs.calc_geom_mean_mirrored(cube_a, cube_b, add_shift=0, model=Model [99 fields])[source]#
Calculate geometric mean of 2 cubes, one of them flipped along the x-axis.
This function can be used to get an average transmission flux calculated separately from the day- and night-side perspective.
- cube_a: iris.cube.Cube
Cube with an x-coordinate.
- cube_b: iris.cube.Cube
Another cube, to be flipped before being averaged with cube A.
- add_shift: int
Additional shift for the data along the x-coordinate.
- model: aeolus.model.Model, optional
Model class with relevant variable names.
- aeolus.synthobs.calc_stellar_flux(spectral_file, stellar_constant_at_1_au)[source]#
Calculate the stellar flux per spectral band.
- Parameters:
spectral_file (pathlib.Path) – Path to the location of a SOCRATES spectral file.
stellar_constant_at_1_au (float or iris.cube.Cube) – Stellar constant at 1 AU [W m-2].
- Returns:
Stellar flux per spectral band [W m-2].
- Return type:
- aeolus.synthobs.calc_transmission_spectrum(trans_flux, spectral_file=None, stellar_constant_at_1_au=None, stellar_radius=None, planet_top_of_atmosphere=None, model=Model [99 fields])[source]#
Convert the transmission flux to a planetary-stellar radius ratio.
- Parameters:
trans_flux (iris.cube.Cube) – Transmission flux on spectral bands and optionally lats and lons. In the Met Office Unified Model this is STASH items 555, 556, 755, 756 in section 1.
spectral_file (pathlib.Path) – Path to the location of a SOCRATES spectral file.
stellar_constant_at_1_au (float or iris.cube.Cube) – Stellar constant at 1 AU [W m-2].
stellar_radius (float or iris.cube.Cube) – Stellar radius [m].
planet_top_of_atmosphere (float or iris.cube.Cube) – The extent of the planetary atmosphere [m].
model (aeolus.model.Model, optional) – Model class with relevant variable names.
- Returns:
The ratio of the effective planetary radius to the stellar radius per spectral band [1]. Spectral band centres [m] is attached as an auxiliary coordinate.
- Return type:
Notes
The transmission spectrum is the ratio of the effective planetary radius to the stellar radius calculated per spectral band:
\[\frac{R_p (\nu)}{R_s} = \sqrt{(\frac{R_{p,TOA}}{R_s})^2 - \frac{\sum_{lat,lon}^{}F_{trans} (\nu)}{F_{stellar} (\nu)}}\]where \(R_p(\nu)\) is the effective planetary radius, \(R_s\) is the stellar radius, \(R_{p,TOA}\) is the extent of the planetary atmosphere (i.e. the sum of the planetary radius and the height of the model domain), \(\sum_{lat,lon}^{}F_{trans}(\nu)\) is the total transmitted flux, \(F_{stellar}(\nu)\) is the stellar flux.
Smaller gas abundance leads to the corresponding limb to be “more transmissive”, which leads it having smaller transit depth.
- aeolus.synthobs.calc_transmission_spectrum_day_night_average(trans_flux_day, trans_flux_night, add_shift=0, spectral_file=None, stellar_constant_at_1_au=None, stellar_radius=None, planet_top_of_atmosphere=None, model=Model [99 fields])[source]#
Convert the transmission flux to a planetary-stellar radius ratio.
For UM output, this function averages the flux calculated from the day-side and the night-side of the planet. Why does it use a geometric mean? The reason to use a geometric average instead of an arithmetic average is that the optical depths are added. The flux decreases via Beer’s law (i.e., it’s proportional to \(exp[-optical depth]\)) so when you multiply the dayside fluxes and nightside fluxes together and take a square root, you end up with \(exp[-( optical depth 1 + optical depth 2)/2]\). Since each optical depth is double the optical depth for it’s respective side, the factors of two cancel and you end up with \(exp[-(true optical depth)]\).
- Parameters:
trans_flux_day (iris.cube.Cube) – Transmission flux on spectral bands and optionally lats and lons. Day-side perspective. In the Met Office Unified Model this is STASH items 555, 556, 755, 756 in section 1.
trans_flux_night (iris.cube.Cube) – Samea as day, but for the night-side calculation.
add_shift (int, optional) – Additional shift of data along the x-coordinate.
- aeolus.synthobs.read_normalized_stellar_flux(spectral_file)[source]#
Read the normalized stellar flux per band from a SOCRATES spectral file.
- Parameters:
spectral_file (pathlib.Path) – Path to the location of the SOCRATES spectral file.
- Returns:
Normalized stellar flux per spectral band [1].
- Return type:
- aeolus.synthobs.read_spectral_bands(spectral_file)[source]#
Read spectral bands from a SOCRATES spectral file.
- Parameters:
spectral_file (pathlib.Path) – Path to the location of a SOCRATES spectral file.
- Returns:
An array with a list of tuples describing spectral bands. Tuple structure: (spectral_band_index, lower_wavelength_limit, upper_wavelength_limit). Units [m] as stated in a spectral file but not checked directly.
- Return type: