Models#
Module containing the different joint atmospheric models.
Base class#
Module containing the abstract base class for atmospheric models.
- class xvamp.models.model.Model[source]#
Abstract base class for final models.
- static rel_permittivity_to_refraction(relative_permittivity)[source]#
Compute the index of refraction from the complex relative permittivity.
- static tpd_below_0km(venus_gas_constant, add_3K=False)[source]#
Use the barometric formula to extend the near-surface temperature, pressure, and density profiles from Seiff et al. [1985] to negative altitudes.
- Parameters:
- Return type:
- Returns:
alt_neg – Altitudes of the profile
temp_neg – Temperature
press_neg – Pressure
dens_neg – Mass density
- get_absorption(altitude)[source]#
Return the absorption at specific altitudes. At altitudes below the defined dataset, this function will return
NaN, and0above.
- get_delay_attenuation(height_terrain, height_platform, look_angle)[source]#
Calculate the range delay (defined as the difference between the apparent and geometric range) and two-way attenuation through the atmosphere. Convenience wrapper around
get_range_attenuation_angles()andgeometry_from_central_angle().- Parameters:
height_terrain (
Quantity|float|ndarray[floating]) – Height of the terrain relative to the mean planet radius in [km], if not aQuantityheight_platform (
Quantity|float|ndarray[floating]) – Height of the platform relative to the mean planet radius in [km], if not aQuantitylook_angle (
Quantity|float|ndarray[floating]) – Look angle of the instrument in [rad], if not aQuantity
- Return type:
- Returns:
delay – Range delay [m]
attenuation – Two-way signal attenuation [dB]
- get_interpolated_attribute(attribute, unit, altitude, left, right)[source]#
Retrieve an attribute profile and interpolate it.
- Parameters:
attribute (
str) – Name of the attributeunit (
Unit) – Unit to be used for the interpolationaltitude (
Quantity|float|ndarray[floating]) – Height in [km], if not aQuantityleft (
float) – Value to use below the available data of the profileright (
float) – Value to use above the available data of the profile
- Return type:
- Returns:
Interpolated attribute profile
- get_range_attenuation_angles(look_angle, height_terrain, height_platform)[source]#
Calculate the apparent range, two-way attenuation through the atmosphere, the central angle, and the apparent incidence angle for a range of look angles, terrain heights, and platform heights.
- Parameters:
look_angle (
Quantity|float|ndarray[floating]) – Look angle(s) of the instrument in [rad], if not aQuantityheight_terrain (
Quantity|float|ndarray[floating]) – Height(s) of the terrain relative to the mean planet radius in [km], if not aQuantityheight_platform (
Quantity|float) – Height(s) of the platform relative to the mean planet radius in [km], if not aQuantity
- Return type:
- Returns:
apparent_range – Apparent range from the platform to the surface [km]
attenuation – Two-way signal attenuation [dB] (note that the power absorption is twice this value)
central_angle – Central angle [rad]
apparent_incidence_angle – Apparent incidence angle [rad]
- get_refraction(altitude)[source]#
Return the index of refraction at specific altitudes. At altitudes below the defined dataset, this function will return
NaN, and1above.
- get_temperature(altitude)[source]#
Return the temperature at specific altitudes. At altitudes below the defined dataset, this function will return
NaN, and0above.
- cloud_concentration: Annotated[Quantity, PhysicalType('dimensionless')]#
H2SO4 concentration by weight of the cloud droplets
- cloud_mass_mixing_ratio: Annotated[Quantity, PhysicalType('dimensionless')]#
Mass mixing ratio of the clouds
- electron_density: Annotated[Quantity, PhysicalType('number density')]#
Electron density of the model
- eps_prime_r_atmo: Annotated[Quantity, PhysicalType('dimensionless')]#
Real part of the relative permittivity of the atmosphere
- eps_prime_r_iono: Annotated[Quantity, PhysicalType('dimensionless')]#
Real part of the relative permittivity of the ionosphere
- polarization_parameters: dict[str, HarveyLemmon2005Parameters | Pitzer1983Parameters]#
Dictionary that containes the parameter objects for each species
- pressure: Quantity, PhysicalType({'energy density', 'pressure', 'stress'})]#
Pressure levels of the model
Duan et al. (2010)#
Model class that loads all the reference data, maybe adds its own, and returns permittivity.
- class xvamp.models.duan_et_al_2010.Duan2010(profile_TPD='duan', profile_CO2=zahnmoroz1985.co2_molar_fraction, profile_N2=zahnmoroz1985.n2_molar_fraction, profile_H2O=duan2010figures.h2o_molar_fraction, profile_SO2=duan2010figures.so2_molar_fraction, profile_CO=duan2010figures.co_molar_fraction, profile_H2SO4=duan2010figures.h2so4_molar_fraction, profile_OCS=duan2010figures.ocs_molar_fraction, profile_Ar=None, use_clouds_from='cimino', ocs_abspol_from='duan', use_eps_prime_r_inf=True, load_polarization_parameters=True, use_compressible_gas=True, use_keating_temp_press_above100km=False, use_virial_approximation=True, cutoff_so2_frequency=None, use_cimino_fitted_lookup=False)[source]#
Initialize the Duan et al. [2010] model. All parameters are set such that they correspond to the Matlab
config.atm_recipe = 'all_standard'setting.- Parameters:
profile_TPD (
MultiProfile|str, default:"duan") –Which temperature, pressure, and density profile to use:
"duan": A combination of Seiff et al. [1985] and Zasova et al. [2006] as described in the paper, Section 3.1 (i.e., including the 3 K offset)."seiff:x": A specific profile of Seiff et al. [1985] for a given latitude x (valid values: 30, 45, 60, 75, 85) in degrees.
Note that these preconfigured profiles are all downward-continued to negative altitudes, and are influenced by the the parameters
use_compressible_gasanduse_keating_temp_press_above100km. Alternatively, axvamp.profile.MultiProfilewith the data columns"temperature","pressure", and optionally"mass_density"(and the index being the altitude).profile_CO2 (
Profile|None, default:zahnmoroz1985.co2_molar_fraction) – CO2 molar fraction profile.profile_N2 (
Profile|None, default:zahnmoroz1985.n2_molar_fraction) – N2 molar fraction profile.profile_H2O (
Profile|None, default:duan2010figures.h2o_molar_fraction) – H2O molar fraction profile.profile_SO2 (
Profile|None, default:duan2010figures.so2_molar_fraction) – SO2 molar fraction profile.profile_CO (
Profile|None, default:duan2010figures.co_molar_fraction) – CO molar fraction profile.profile_H2SO4 (
Profile|None, default:duan2010figures.h2so4_molar_fraction) –H2SO4 molar fraction profile. Preconfigured options are:
h2so4_molar_fractionorh2so4_3212_molar_fractionfrom Duan et al. [2010] and the reference code.h2so4_mr_mean(mean) orh2so4_mr_3212(where3212,3213and3214are individual orbits) from Kolodner and Steffes [1998], Figs. 7-9. This option adds about a tenth of a dB attenuation and removes about 4 mm of delay.h2so4_molar_fraction_0ppm_so2(where0,50,100,150,200are assumptions about the SO2 content) from Jenkins et al. [2002]. This changes the attenuation by about a tenth of a dB and the delay by some millimeters.h2so4_mr_x_3212(where3212,3213and3214are individual orbits) from Jenkins [1996]. This changes the attenuation by about a dB and the delay of some millimeters.
profile_OCS (
Profile|None, default:duan2010figures.ocs_molar_fraction) –OCS molar fraction profile. Preconfigured options are:
This has a range delay effect on the sub-millimeter scale, and an effect on the two-way attenuation on the millidecibel scale.
profile_Ar (
Profile|None, default:None) – Argon molar fraction profile. The default is not to add Argon to the mixture, but a preconfigured (constant) profile isar_molar_fraction. This has a range delay effect on the sub-micrometer scale, and an effect on the two-way attenuation on the tens of microdecibel scale.use_clouds_from (
str, default:"cimino") –Define which cloud polarization and absorption model to use:
"cimino": Cimino [1982], eq. (10) and (16)"duan": Duan et al. [2010], sections 2.1.5 and 2.2.5"none": Ignore all cloud effects
See the notes on the importance of this parameter at Cloud polarization and absorption.
use_compressible_gas (
bool, default:True) – Whether to use the gas compressibility factor when deriving the mass density for the 0-100 km altitude range, or assume the ideal gas law. This only affects the attenuation of the cloud layer, since all other species quantities are derived from the pressure profile, which is directly loaded from Seiff et al. [1985] and Zasova et al. [2006]. The attenuation difference is about 2 millidecibels. If axvamp.profile.MultiProfileis passed as theprofile_TPDparameter and contains a mass density,use_compressible_gasis ignored.ocs_abspol_from (
str, default:"duan") –Define which model to use to compute the absorption and polarization profiles of OCS.
"duan": Using a Ben-Reuven line shape derived from SO2 (default)"kolbe": Using a Lorentzian line shape as described in the paper and following Kolbe et al. [1977]"bbld": Using a Ben-Reuven line shape with parameters derived approximately from Bouanich and Blanquet [1988] and Lavrentieva and Dudaryonok [2020].
Since OCS is such a minor constituent, the different options have a sub-millimeter effect on the delay and a milli-decibel effect on the attenuation. If changing the default, then also set
load_polarization_parameters=False, as the setting affects the polarization parameters.use_eps_prime_r_inf (
bool, default:True) – IfTrue, when computing the real part of the relative permittivity of SO2 and OCS, a value of the real relative permittivity at infinite frequency is set to an assumed value (rather than using the theoretical value of unity). This only has an effect ifload_polarization_parameters=False, because the polarization parameters resulting from the real part of the relative permittivity are stored. This option has a centimeter-level effect on the delay and changes the attenuation by micro-decibels.load_polarization_parameters (
bool|str|Path, default:True) – By default, the polarization parameters are loaded from a prepackaged configuration file (in"data/default_polarization_parameters.toml"). If set toFalse, they are recomputed with the current settings. If set to a filename, the parameters are loaded from there.use_keating_temp_press_above100km (
bool, default:False) – Only used ifprofile_TPDis not axvamp.profile.MultiProfile. Whether to use the temperature profile from Keating et al. [1985] above 100 km, and get its matching pressure profile from the ideal gas law. This option has no effect on the model, since the transition between atmosphere- and ionosphere-dominated permittivity profiles is at 100 km, and the ionosphere is modeled differently. It is only useful if one wants to load these quantities for later plotting.use_virial_approximation (
bool, default:True) – Whether to use the leading terms of the virial approximation to calculate the total polarization of the polar species [Harvey and Lemmon, 2005], or to use the polarization relationship by Pitzer [1983]. These two approaches are numerically fully equivalent.cutoff_so2_frequency (
Quantity|None, default:None) – When computing the absorption coefficient of SO2, include all spectral lines up to this frequency. IfNone, use all available ones. This option is only kept for development purposes.use_cimino_fitted_lookup (
bool, default:False) – Whether to estimate the complex permittivity of gaseous H2SO4 from lookup tables and then pre-fitted analytical extrapolation functions, or to numerically inter- and extrapolate. This option is only kept for development purposes, since the pre-fitted model is flawed. Regardless, this options only has a range delay effect on the sub-micrometer scale, and an effect on the two-way attenuation on the millidecibel scale.
- static A_epsilon_from_eq8(Pnu, A_mu, rho, T)[source]#
Compute the leading non-polar term in the dielectric virial expansion (as described by Harvey and Lemmon [2005], eq. 5) using the polarization per molar volume and the dipolar term, and assuming no temperature dependence.
- Parameters:
- Return type:
- Returns:
Leading non-polar term in the virial expansion [cm^3/mol]
- static absorption_ben_reuven(T, P_minor, P_major, spectral_lines, nu, ls_params)[source]#
Calculates the absorption by summing contributions from a spectral line catalog and using Ben-Reuven line broadening coefficients as described in eqs. (27-32) on pp. 10f.
- Parameters:
T (
Quantity) – Temperature [K]P_minor (
Quantity) – Partial pressure of the minor species [torr]P_major (
Quantity) – Partial pressure of the major species [torr]spectral_lines (
QTable) – Spectral line catalog for the minor species containing line frequencies nu [MHz], line center intensities I [nm^2 MHz], and lower state energies El [1/cm]nu (
Quantity) – Target frequency of the absorption [Hz]ls_params (
LineShapeParameters) – Line shape parameters for the Ben-Reuven expression
- Return type:
- Returns:
Total absorption [1/cm]
- static absorption_lorentz(T, P, spectral_lines, nu, ls_params)[source]#
Calculates the absorption by summing contributions from a spectral line catalog as described in eqs. (27-32) on pp. 10f but using Lorentzian line broadening coefficients.
- Parameters:
T (
Quantity) – Temperature [K]P (
Quantity) – Partial pressure [torr]spectral_lines (
QTable) – Spectral line catalog for the species containing line frequencies nu [MHz], line center intensities I [nm^2 MHz], and lower state energies El [1/cm]nu (
Quantity) – Target frequency of the absorption [Hz]ls_params (
LineShapeParameters) – Line shape parameters; only gamma_min_min is used as the line width
- Return type:
- Returns:
Total absorption [1/cm]
- static alpha_T_from_eq14(rho, T, Pnu, mu, g=1.0)[source]#
Calculate the molecular polarizability as described in eq. (14) on p. 5, assuming we know the total polarization at given conditions and the molecular dipole moment.
- Parameters:
- Return type:
- Returns:
Molecular polarizability [cm^3]
- static compute_polarization_parameters(ocs_abspol_from='duan', use_eps_prime_r_inf=True, use_virial_approximation=True)[source]#
Get the polarization parameters of the different species. Follows Section 2.1.
- Parameters:
ocs_abspol_from (
str, default:"duan") –Define which model to use to compute the absorption and polarization profiles of OCS.
"duan": Using a Ben-Reuven line shape derived from SO2 (default)"kolbe": Using a Lorentzian line shape as described in the paper and following Kolbe et al. [1977]"bbld": Using a Ben-Reuven line shape with parameters derived approximately from Bouanich and Blanquet [1988] and Lavrentieva and Dudaryonok [2020].
use_eps_prime_r_inf (
bool, default:True) – IfTrue, when computing the real part of the relative permittivity of SO2 and OCS, a value of the real relative permittivity at infinite frequency is set to an assumed value (rather than using the theoretical value of unity).use_virial_approximation (
bool, default:True) – Whether to use the leading terms of the virial approximation to calculate the total polarization of the polar species (from Harvey & Lemmon, 2005), or to use the polarization relationship by Pitzer [1983].
- Return type:
dict[str,HarveyLemmon2005Parameters|Pitzer1983Parameters]- Returns:
Dictionary that containes the parameter objects for each species
- static eps_dprime_r_from_eq25(eps_prime_r, alpha, lambda_0=VISAR_WAVELENGTH)[source]#
Converts the total absorption and relative dielectric constant to the imaginary part of the permittivity using eq. (25) on p. 9.
- static eps_prime_r_from_eq3(Pnu)[source]#
Given the polarization per molar volume, calculate the (positive) solution of eq. (3) for the dielectric constant.
- static eps_prime_r_from_spectral_lines(T, P, spectral_lines, ls_params, nu, freqstep=Quantity(0.1, 'GHz'), freqmin=None, freqmax=None, use_ben_reuven=True, eps_prime_r_inf=1.0)[source]#
Computes the real part of the relative permittivity by integrating through the spectral lines and assuming an infinite convergence value
- Parameters:
T (
Quantity) – Temperature [K]P (
Quantity) – Pressure [bar]spectral_lines (
QTable) – Spectral line catalog for the minor species containing line frequencies nu [MHz], line center intensities I [nm^2 MHz], and lower state energies El [1/cm]ls_params (
LineShapeParameters) – Parameters for the Ben-Reuven line expressionnu (
Quantity) – Target frequency of the absorption [Hz]freqstep (
Quantity, default:Quantity(0.1, "GHz")) – Frequency step of the integration domainfreqmin (
Quantity|None, default:None) – Minimum frequency of the integration domain (defaults to minimum frequency ofspectral_lines). Below that, five log-spaced samples at lower orders of magnitude are added for numerical stabilityfreqmax (
Quantity|None, default:None) – Maximum frequency of the densely-sampled integration domain (defaults to maximum frequency ofspectral_lines). Above that, five log-spaced samples at higher orders of magnitude are added for numerical stability.use_ben_reuven (
bool, default:True) – IfTrue, use the Ben-Reuven line expression, else use a Lorentzian line shape for the computation of the absorption.eps_prime_r_inf (
float, default:1.0) – Real part of the relative permittivity at infinite frequency, theoretically1.
- Returns:
Real part of the relative permittivity
- static eq14(rho, T, pp, g=1.0)[source]#
Calculate the total polarization as described in eq. (14), assuming we know the molecular polarizability and molecular dipole moment.
- Parameters:
rho (
Quantity) – Molar density [mol/m^3]T (
Quantity) – Temperature [K]pp (
Pitzer1983Parameters) – Material polarization parametersg (
float, default:1.0) – Kirkwood correlation factor
- Return type:
- Returns:
Polarization [-]
- static eq2(eps_prime_r)[source]#
Calculate the polarization per molar volume of a non-polar material from the relative dielectric constant using eq. (2) on page 3.
- static eq22_mod(el_density, frequency=VISAR_FREQUENCY)[source]#
Calculate the relative permittivity due to the polarization of the ionosphere, i.e., the parenthesis in eq. (22).
- static eq25(eps_prime_r, eps_dprime_r, lambda_0=VISAR_WAVELENGTH)[source]#
Converts the real and imaginary parts of the relative permittivity to the absorption coefficient using eq. (25) on p. 9.
- Parameters:
- Return type:
- Returns:
Power absorption coefficient [1/m]
- static eq26(P, T, f_CO2, f_N2, f_Ar, f_H2O, lambda_0=VISAR_WAVELENGTH)[source]#
Calculate the total absorption of a mixture of CO2, N2, Ar, and H2O following eq. (26) on p. 9.
- Parameters:
- Return type:
- Returns:
Total absorption [1/cm]
- static eq3(eps_prime_r)[source]#
Calculate the polarization per molar volume of a polar material from the relative dielectric constant using eq. (3) on page 3.
- static eq33(q, p, f, T)[source]#
Calculate the total absorption of H2SO4 given eq. (33) on p. 11 in Duan et al. [2010], which in turn is eq. (18) in Kolodner and Steffes [1998].
- static eq8(rho, T, fluid)[source]#
Calculate the total polarization using the dielectric virial expansion as described in eq. (8) from Duan et al. [2010].
- Parameters:
rho (
Quantity) – Molar density [mol/m^3]T (
Quantity) – Mixture temperature [K]fluid (
HarveyLemmon2005Parameters) – Material coefficients
- Return type:
- Returns:
Polarization [-]
- static get_h2so4_rel_permittivity(concentration, temperature, frequency)[source]#
Calculate the complex relative permittivity of gaseous H2SO4.
- Parameters:
- Return type:
- Returns:
eps_prime_r – Real part of the relative permittivity
eps_dprime_r – Imaginary part of the relative permittivity
Note
Here, the imaginary part of the relative atmospheric permittivity has the opposite sign as in Duan et al. [2010].
- static get_tpd(profile_TPD='duan', use_compressible_gas=True, use_keating_temp_press_above100km=False)[source]#
Build the temperature, pressure, and mass density profiles.
- Parameters:
profile_TPD (
str, default:"duan") –Which temperature, pressure, and density profile to use:
"duan": A combination of Seiff et al. [1985] and Zasova et al. [2006] as described in the paper, Section 3.1 (i.e., including the 3 K offset)."seiff:x": A specific profile of Seiff et al. [1985] for a given latitude x (valid values: 30, 45, 60, 75, 85) in degrees.
Note that these preconfigured profiles are all downward-continued to negative altitudes.
use_compressible_gas (
bool, default:True) – Whether to use the gas compressibility factor when deriving the mass density for the 0-100 km altitude range, or assume the ideal gas law. Gas compressibility is always assumed below 0 km, and never above 100 km.use_keating_temp_press_above100km (
bool, default:False) – Whether to use the temperature profile from Keating et al. [1985] above 100 km, and get its matching pressure profile from the ideal gas law.
- Return type:
- Returns:
MultiProfilewith altitude as the index and temperature and pressure as data columns. Ifuse_compressible_gas=True, also has the mass density as a data column.
- static kirkwood_correlation_cgs(d, T, p0=2.68, p1=6.69, p2=565.0, e=0.3)[source]#
Kirkwood correlation factor as described on p. 5. Inconsistent units so no
Quantityinputs.
- evaluate_absorptions(cutoff_so2_frequency=None, ocs_abspol_from='duan')[source]#
Evaluate the absorption models given the model’s atmospheric quantities.
- Parameters:
cutoff_so2_frequency (
Quantity|None, default:None) – When computing the absorption coefficient of SO2, include all spectral lines up to this frequency. IfNone, use all available ones. This option is only kept for development purposes.ocs_abspol_from (
str, default:"duan") –Define which model to use to compute the absorption and polarization profiles of OCS.
"duan": Using a Ben-Reuven line shape derived from SO2 (default)"kolbe": Using a Lorentzian line shape as described in the paper and following Kolbe et al. [1977]"bbld": Using a Ben-Reuven line shape with parameters derived approximately from Bouanich and Blanquet [1988] and Lavrentieva and Dudaryonok [2020].
- Return type:
- Returns:
Table with evaluated absorptions
- evaluate_cloud_permittivity(use_clouds_from='cimino', use_cimino_fitted_lookup=False)[source]#
Evaluate the cloud polarization and absorption given the model’s atmospheric quantities. Follows Sections 2.1.5 and 2.2.5, and/or Cimino [1982].
- Parameters:
use_clouds_from (
str, default:"cimino") –Define which cloud polarization and absorption model to use:
"cimino": Cimino [1982], eq. (10) and (16)"duan": Duan et al. [2010], sections 2.1.5 and 2.2.5"none": Ignore all cloud effects
See the notes on the importance of this parameter at Cloud polarization and absorption.
use_cimino_fitted_lookup (
bool, default:False) – Whether to estimate the complex permittivity of gaseous H2SO4 from lookup tables and then pre-fitted analytical extrapolation functions, or to numerically inter- and extrapolate. This option is only kept for development purposes, since the pre-fitted model is flawed. Regardless, this options only has a range delay effect on the sub-micrometer scale, and an effect on the two-way attenuation on the millidecibel scale.
- Return type:
- Returns:
cloud_pol – Polarization of the cloud (accounting for its volume fraction)
cloud_absorp – Absorption of the cloud (accounting for its volume fraction)
- evaluate_polarization_parameters()[source]#
Evaluate the model’s polarization parameters given its atmospheric quantities.
- Return type:
- Returns:
Table with evaluated polarizations
- sum_absorptions()[source]#
Sum the absorptions already present in the model.
- Return type:
- Returns:
Total absorption of the atmospheric profile
- sum_polarizations()[source]#
Sum the polarizations already present in the model. These have all already been scaled by their volume fraction.
- Return type:
- Returns:
Total polarization of the atmospheric profile
- update_densities()[source]#
Compute the total and specific mass, number, and molar densities from the total pressure and temperature, and the molar fractions. Also computes the cloud mass density from the atmospheric profile and the cloud concentration and mass mixing ratio. If the mass density has not been set yet, it is derived from the ideal gas law.
Notes
Reads:
pressure,temperature,molar_fractions, andcloud_mass_mixing_ratioWrites:
number_density,mass_densities,molar_density,molar_densities,cloud_mass_densityand (if not already present)mass_density
- update_ionosphere()[source]#
Converts the model’s electron density to the corresponding real part of the relative permittivity.
Notes
Reads:
electron_density.Writes:
eps_prime_r_iono.
- update_pol_absorp_atmosphere(cutoff_so2_frequency=None, ocs_abspol_from='duan', use_clouds_from='cimino', use_cimino_fitted_lookup=False)[source]#
Update the individual and total polarization and absorption of the atmosphere’s species and clouds given the polarization and absorption parameters. Then, sum up the contributions and compute the resulting real part of the relative permittivity.
- Parameters:
cutoff_so2_frequency (
Quantity|None, default:None) – When computing the absorption coefficient of SO2, include all spectral lines up to this frequency. IfNone, use all available ones. This option is only kept for development purposes.ocs_abspol_from (
str, default:"duan") –Define which model to use to compute the absorption and polarization profiles of OCS.
"duan": Using a Ben-Reuven line shape derived from SO2 (default)"kolbe": Using a Lorentzian line shape as described in the paper and following Kolbe et al. [1977]"bbld": Using a Ben-Reuven line shape with parameters derived approximately from Bouanich and Blanquet [1988] and Lavrentieva and Dudaryonok [2020].
use_clouds_from (
str, default:"cimino") –Define which cloud polarization and absorption model to use:
"cimino": Cimino [1982], eq. (10) and (16)"duan": Duan et al. [2010], sections 2.1.5 and 2.2.5"none": Ignore all cloud effects
See the notes on the importance of this parameter at Cloud polarization and absorption.
use_cimino_fitted_lookup (
bool, default:False) – Whether to estimate the complex permittivity of gaseous H2SO4 from lookup tables and then pre-fitted analytical extrapolation functions, or to numerically inter- and extrapolate. This option is only kept for development purposes, since the pre-fitted model is flawed. Regardless, this options only has a range delay effect on the sub-micrometer scale, and an effect on the two-way attenuation on the millidecibel scale.
Notes
Reads:
polarization_parameters,temperature,pressure,molar_fractions,molar_densities,mass_densities,cloud_concentration, andcloud_mass_density.Writes:
polarizations,polarization,absorptions,absorption, andeps_prime_r_atmo.
- update_rel_perm_refraction()[source]#
Update the complex relative permittivity from the real parts of the atmos- and ionosphere, as well as the total absorption profile.
Notes
Reads:
altitude,eps_prime_r_atmo,eps_prime_r_iono, andabsorption.Writes:
relative_permittivityandrefraction.
- BR_OCS_CO2 = LineShapeParameters(T_0=<Quantity 300. K>, gamma_min_min=<Quantity 5.9 MHz / Torr>, gamma_min_maj=<Quantity 4.3 MHz / Torr>, zeta_min_min=<Quantity 0. MHz / Torr>, zeta_min_maj=<Quantity 0. MHz / Torr>, delta_min=<Quantity 0. MHz / Torr>, m=0.7, n=0.7)#
Ben-Reuven line parameters for OCS in CO2 based on visual inspection of Bouanich and Blanquet [1988] and Lavrentieva and Dudaryonok [2020]
- BR_SO2_AS_OCS_CO2 = LineShapeParameters(T_0=<Quantity 300. K>, gamma_min_min=<Quantity 16. MHz / Torr>, gamma_min_maj=<Quantity 7.2 MHz / Torr>, zeta_min_min=<Quantity 0. MHz / Torr>, zeta_min_maj=<Quantity 0. MHz / Torr>, delta_min=<Quantity 0. MHz / Torr>, m=0.85, n=0.85)#
Ben-Reuven line parameters for OCS in CO2 derived from the SO2 in CO2 parameters but setting zeta and delta to zero
- BR_SO2_CO2 = LineShapeParameters(T_0=<Quantity 300. K>, gamma_min_min=<Quantity 16. MHz / Torr>, gamma_min_maj=<Quantity 7.2 MHz / Torr>, zeta_min_min=<Quantity 1.6 MHz / Torr>, zeta_min_maj=<Quantity 1.3 MHz / Torr>, delta_min=<Quantity 2.9 MHz / Torr>, m=0.85, n=0.85)#
Ben-Reuven line parameters for SO2 in CO2
- EPS_DPRIME_R_H2SO4#
Imaginary part of the relative permittivity for H2SO4 at 2650 MHz for concentrations between 0% and 100% [-]
- EPS_PRIME_R_CO = <Quantity 1.000634>#
X-band estimated dielectric constant of CO at 1 atm and 0 °C
- EPS_PRIME_R_H2SO4#
Real part of the relative permittivity for H2SO4 at 2650 MHz for concentrations between 0% and 100% [-]
- EPS_PRIME_R_INF_OCS = <Quantity 1.00586264>#
Estimated dielectric constant of OCS at infinite frequency
- EPS_PRIME_R_INF_SO2 = <Quantity 1.00586264>#
Estimated dielectric constant of SO2 at infinite frequency
- EXT_PRESSURE_COEFFS = [11.201473859081256, 0.006260686643162, -9.240397971368619, 0.010200118486472]#
Coefficients fit to a douple exponential function to extrapolate pressure [log10(atm)] from altitude [km], taken from the reference code
- HLP_AR = HarveyLemmon2005Parameters(a0=4.1414, a1=0.0, b0=1.597, b1=0.262, c0=-117.9, c1=0.0, D=2.1, T0=273.16, A_mu=0)#
Mixture parameters for Ar in cgs units
- HLP_CO2 = HarveyLemmon2005Parameters(a0=7.3455, a1=0.00335, b0=83.93, b1=145.1, c0=-578.8, c1=-1012.0, D=1.55, T0=273.16, A_mu=0)#
Mixture parameters for CO2 in cgs units
- HLP_N2 = HarveyLemmon2005Parameters(a0=4.3872, a1=0.00226, b0=2.206, b1=1.135, c0=-169.0, c1=-35.83, D=2.1, T0=273.16, A_mu=0)#
Mixture parameters for N2 in cgs units
- L_OCS = LineShapeParameters(T_0=<Quantity 300. K>, gamma_min_min=<Quantity 6.4 MHz / Torr>, gamma_min_maj=<Quantity 0. MHz / Torr>, zeta_min_min=<Quantity 0. MHz / Torr>, zeta_min_maj=<Quantity 0. MHz / Torr>, delta_min=<Quantity 0. MHz / Torr>, m=0.0, n=0.0)#
Lorentzian line parameters for OCS from Kolbe et al. [1977]
- MIN_ALTITUDE_SPACING = <Quantity 1. km>#
Minimum height spacing between altitude nodes. Only becomes relevant if the loaded profiles of the physical and chemical quantities are not dense enough to ensure an accurate numerical integration.
- MU_CO = <Quantity 1.12e-19 Fr cm>#
Permanent dipole moment of CO [esu cm]
- MU_OCS = <Quantity 7.1521e-19 Fr cm>#
Permanent dipole moment of OCS [esu cm]
- MU_SO2 = <Quantity 1.633e-18 Fr cm>#
Permanent dipole moment of SO2 [esu cm]
- PP_water_vapor = Pitzer1983Parameters(mu=<Quantity 1.84e-18 Fr cm>, alpha_T=<Quantity 1.444e-24 cm3>)#
Polarization parameters for water vapor
- P_CO = <Quantity 101325. Pa>#
Pressure at which the dielectric constant for CO was calculated
- P_OCS = <Quantity 101325. Pa>#
Pressure at which the dielectric constant for OCS was calculated
- P_SO2 = <Quantity 101325. Pa>#
Pressure at which the dielectric constant for SO2 was calculated
- RHO_CO = <Quantity 40.89461871 mol / m3>#
Molar density from
P_COandT_CO
- RHO_OCS = <Quantity 44.61013388 mol / m3>#
Molar density from
P_OCSandT_OCS
- RHO_SO2 = <Quantity 44.61503341 mol / m3>#
Molar density from
P_SO2andT_SO2
- TRANSITION_ATMO_IONO = <Quantity 100. km>#
Altitude at which the computation of the real part of the relative permittivity switches from the individual components in the atmosphere to the overall effect of the ionosphere
- T_CO = <Quantity 298. K>#
Temperature at which the dielectric constant for CO was calculated
- T_OCS = <Quantity 273.18 K>#
Temperature at which the dielectric constant for OCS was calculated
- T_SO2 = <Quantity 273.15 K>#
Temperature at which the dielectric constant for SO2 was calculated
- VENUS_GAS_CONSTANT = <Quantity 191.4 J / (K kg)>#
Venus standard atmospheric gas constant (= R/M) [J/kg K]
- VENUS_MOLAR_MASS = <Quantity 0.04344964 kg / mol>#
Venus standard atmospheric molar mass [kg/mol]
- class xvamp.models.duan_et_al_2010.Duan2010Verification(profile_TPD='seiff:75', profile_CO2=zahnmoroz1985.co2_molar_fraction, profile_N2=zahnmoroz1985.n2_molar_fraction, profile_H2O=duan2010figures.h2o_old_molar_fraction, profile_SO2=duan2010figures.so2_old_molar_fraction, profile_CO=duan2010figures.co_old_molar_fraction, profile_H2SO4=kolodnersteffes1998.h2so4_mr_3212, profile_OCS=duan2010figures.ocs_old_molar_fraction, profile_Ar=None, use_clouds_from='none', ocs_abspol_from='duan', use_eps_prime_r_inf=True, load_polarization_parameters=True, use_compressible_gas=True, use_keating_temp_press_above100km=False, use_virial_approximation=True, cutoff_so2_frequency=None, use_cimino_fitted_lookup=False)[source]#
The same as
Duan2010except that the defaults follow the Matlabconfig.atm_recipe = 'model_verification'setting.
Onboard model#
Module with the onboard atmospheric model.
- class xvamp.models.onboard.OnboardPolynomial[source]#
Onboard method to compute the atmoshperically-derived range error and attenuation.
- get_apparent_range(h_t, r_o, rho, iter=2)[source]#
Compute the geomtric range from the apparent range.
- get_geometric_range(h_t, r_o, rho_tilde)[source]#
Compute the geomtric range from the apparent range.
- platfhref = 220000.0#
Altitude reference value [m] to be used for the range radiometric correction
- platfrref = np.float64(6271800.0)#
Radius reference value [m] to be used for the range radiometric correction
- ppRngGeoAppInpt = Polynomial([ 9.80061143e+00, -4.94896297e-04, 5.37523416e-09, 9.38617483e-14], domain=[-1., 1.], window=[-1., 1.], symbol='x')#
Polynomial for fitting the intercept of geometric range vs. apparent range as a function of terrain height
- ppRngGeoAppSlope = Polynomial([ 9.98767936e-01, 7.13862691e-08, -1.60203186e-12, 1.45073790e-17], domain=[-1., 1.], window=[-1., 1.], symbol='x')#
Polynomial for fitting the slope of geometric range vs. apparent range as a function of terrain height