petitRADTRANS.opacities.clouds#

Attributes#

Functions#

_selected_clouds_have_effect(mass_fractions, ...)

_build_cloud_species_mass_fractions(mass_fractions, ...)

_resolve_cloud_parameter_key(parameter, cloud_name)

_expand_cloud_parameter_column(value, pressures, ...)

_standardize_cloud_species_parameter(parameter, ...)

_filter_patchy_clouds(cloud_species, patchy_clouds)

_select_loaded_cloud_opacity_tables(...)

_init_cloud_branch_outputs(frequencies, pressures, ...)

_maybe_add_opaque_cloud_deck(...)

_maybe_add_power_law_cloud_scattering(...)

_validate_power_law_inputs(power_law_opacity_350nm, ...)

_init_cloud_background_continuum(frequencies, ...)

_validate_selected_cloud_species(...)

_compute_selected_cloud_branch(selected_cloud_species, ...)

_maybe_compute_cloud_branch(selected_cloud_species, ...)

_initialize_hansen_b(cloud_hansen_b, ...)

_initialize_cloud_species_inputs(cloud_species, ...)

_standardize_f_sed(cloud_f_sed, cloud_species, ...)

_compute_cloud_opacity_grids_from_known_radii(...)

_validate_missing_cloud_radius_arguments(...)

_compute_cloud_opacity_grids_with_derived_radii(...)

_assemble_cloud_opacity_outputs(...)

init_clouds_particle_porosity_factor(...)

Normalize and validate per-species cloud porosity factors.

compute_cloud_continuum_opacities(frequencies, ...)

Compute cloud continuum opacity products for cloudy and optional clear branches.

_compute_cloud_opacities(pressures, temperatures, ...)

Calculate cloud opacity terms for a single cloud branch.

compute_species_optical_depths(reference_gravity, ...)

Compute cloud optical depths from per-species cloud opacities.

Module Contents#

petitRADTRANS.opacities.clouds._MISSING_FLOAT#
petitRADTRANS.opacities.clouds._MISSING_NEG_INF#
petitRADTRANS.opacities.clouds._selected_clouds_have_effect(mass_fractions, selected_cloud_species)#
petitRADTRANS.opacities.clouds._build_cloud_species_mass_fractions(mass_fractions, selected_cloud_species)#
petitRADTRANS.opacities.clouds._resolve_cloud_parameter_key(parameter, cloud_name)#
petitRADTRANS.opacities.clouds._expand_cloud_parameter_column(value, pressures, parameter_name, cloud_name)#
petitRADTRANS.opacities.clouds._standardize_cloud_species_parameter(parameter, cloud_species, pressures, parameter_name)#
petitRADTRANS.opacities.clouds._filter_patchy_clouds(cloud_species, patchy_clouds)#
petitRADTRANS.opacities.clouds._select_loaded_cloud_opacity_tables(clouds_loaded_opacities, cloud_species, selected_cloud_species)#
petitRADTRANS.opacities.clouds._init_cloud_branch_outputs(frequencies, pressures, n_clouds)#
petitRADTRANS.opacities.clouds._maybe_add_opaque_cloud_deck(cloud_continuum_opacities, pressures, opaque_cloud_top_pressure)#
petitRADTRANS.opacities.clouds._maybe_add_power_law_cloud_scattering(scattering_in_transmission, cloud_continuum_opacities_scattering, frequencies, pressures, power_law_opacity_350nm, power_law_opacity_coefficient)#
petitRADTRANS.opacities.clouds._validate_power_law_inputs(power_law_opacity_350nm, power_law_opacity_coefficient)#
petitRADTRANS.opacities.clouds._init_cloud_background_continuum(frequencies, pressures, n_clouds, scattering_in_transmission, opaque_cloud_top_pressure, power_law_opacity_350nm, power_law_opacity_coefficient, compute_clear_opacities)#
petitRADTRANS.opacities.clouds._validate_selected_cloud_species(cloud_species_mass_fractions, selected_cloud_species, mass_fraction_keys)#
petitRADTRANS.opacities.clouds._compute_selected_cloud_branch(selected_cloud_species, continuum_seed, pressures, temperatures, frequency_bins_edges, mass_fractions, mean_molar_masses, reference_gravity, cloud_particle_radius_distribution_std, clouds_loaded_opacities, sum_opacities, anisotropic_cloud_scattering, cloud_f_sed, eddy_diffusion_coefficients, cloud_particle_mean_radii, cloud_particle_number_density_grid, cloud_particle_radius_distribution, cloud_hansen_a, cloud_hansen_b, clouds_particle_porosity_factor, cloud_photosphere_median_optical_depth, return_cloud_contribution, target_particle_radii, target_pressure)#
petitRADTRANS.opacities.clouds._maybe_compute_cloud_branch(selected_cloud_species, selected_clouds_have_effect, base_continuum_opacities, base_continuum_opacities_scattering, cloud_scattering_opacities, cloud_absorption_opacities, cloud_opacities, cloud_particle_mean_radii, pressures, temperatures, frequency_bins_edges, mass_fractions, mean_molar_masses, reference_gravity, cloud_particle_radius_distribution_std, clouds_loaded_opacities, sum_opacities, anisotropic_cloud_scattering, cloud_f_sed, eddy_diffusion_coefficients, input_cloud_particle_mean_radii, cloud_particle_number_density_grid, cloud_particle_radius_distribution, cloud_hansen_a, cloud_hansen_b, clouds_particle_porosity_factor, cloud_photosphere_median_optical_depth, return_cloud_contribution, target_particle_radii, target_pressure)#
petitRADTRANS.opacities.clouds._initialize_hansen_b(cloud_hansen_b, cloud_particle_radius_distribution, cloud_species, pressures)#
petitRADTRANS.opacities.clouds._initialize_cloud_species_inputs(cloud_species, cloud_species_mass_fractions, pressures, clouds_loaded_opacities, clouds_particle_porosity_factor, cloud_particle_mean_radii, cloud_hansen_a)#
petitRADTRANS.opacities.clouds._standardize_f_sed(cloud_f_sed, cloud_species, pressures_size)#
petitRADTRANS.opacities.clouds._compute_cloud_opacity_grids_from_known_radii(cloud_particle_radius_distribution, atmospheric_densities, cloud_particle_density, cloud_species_mass_fractions_grid, cloud_particle_mean_radii, cloud_hansen_b, cloud_particle_radius_distribution_std, cloud_particle_number_density_grid, clouds_loaded_opacities, cloud_species_mass_fractions, pressures, target_particle_radii, target_pressure)#
petitRADTRANS.opacities.clouds._validate_missing_cloud_radius_arguments(cloud_particle_radius_distribution_std, cloud_particle_radius_distribution, cloud_f_sed, eddy_diffusion_coefficients, clouds_loaded_opacities, cloud_particle_number_density_grid)#
petitRADTRANS.opacities.clouds._compute_cloud_opacity_grids_with_derived_radii(cloud_particle_radius_distribution, reference_gravity, atmospheric_densities, cloud_particle_density, temperatures, mean_molar_masses, cloud_f_sed, cloud_species, pressures, cloud_particle_radius_distribution_std, eddy_diffusion_coefficients, cloud_hansen_b, cloud_species_mass_fractions_grid, cloud_species_mass_fractions, cloud_particle_number_density_grid, clouds_loaded_opacities, target_particle_radii, target_pressure)#
petitRADTRANS.opacities.clouds._assemble_cloud_opacity_outputs(clouds_total_absorption_opacities, clouds_total_scattering_opacities, cloud_scattering_reduction_factor, clouds_loaded_opacities, frequency_bins_edges, anisotropic_cloud_scattering, sum_opacities, photospheric_cloud_optical_depths, continuum_opacities)#
petitRADTRANS.opacities.clouds.init_clouds_particle_porosity_factor(clouds_particle_porosity_factor, cloud_species)#

Normalize and validate per-species cloud porosity factors.

The input mapping is adjusted to the defaults expected by each cloud opacity source. DHS-based tables default to a porosity of 0.25 when no finite value is supplied, while non-DHS sources default to 0.0. The function also validates that all resulting porosity factors lie in the interval $[0, 1)$.

Args:
clouds_particle_porosity_factor:

Mapping from cloud species name to porosity factor.

cloud_species:

Cloud species included in the current calculation.

Returns:

Updated porosity-factor mapping with defaults applied.

petitRADTRANS.opacities.clouds.compute_cloud_continuum_opacities(frequencies: jax.typing.ArrayLike, frequency_bins_edges: jax.typing.ArrayLike, pressures: jax.typing.ArrayLike, temperatures: jax.typing.ArrayLike, mass_fractions: dict[str, jax.typing.ArrayLike], mean_molar_masses: jax.typing.ArrayLike, reference_gravity: float, scattering_in_transmission: bool, sum_opacities: bool, opaque_cloud_top_pressure: float, power_law_opacity_350nm: float, power_law_opacity_coefficient: float, cloud_species: list[str] | tuple[str], clouds_particle_porosity_factor: dict[str, float], clouds_loaded_opacities: petitRADTRANS.utils.LockedDict[str, jax.typing.ArrayLike], anisotropic_cloud_scattering: bool, cloud_particle_mean_radii: jax.typing.ArrayLike, cloud_particle_radius_distribution_std: float, cloud_particle_number_density_grid: jax.typing.ArrayLike, cloud_f_sed: dict[str, float], eddy_diffusion_coefficients: dict[str, float], cloud_particle_radius_distribution: str, cloud_hansen_a: float, cloud_hansen_b: float, cloud_photosphere_median_optical_depth: float, patchy_clouds: tuple[str], return_cloud_contribution: bool, compute_clear_opacities, target_particle_radii, target_pressure)#

Compute cloud continuum opacity products for cloudy and optional clear branches.

This is the main cloud entry point used by Radtrans. It builds the cloud absorption and scattering continuum contributions, evaluates the selected cloud species, and optionally computes a second branch containing only the fully covering clouds for partial-cloud post-processing.

Args:
frequencies:

Frequency grid used for continuum outputs.

frequency_bins_edges:

Frequency-bin edges used for cloud opacity interpolation.

pressures:

Atmospheric pressure grid in cgs units.

temperatures:

Atmospheric temperature profile in K.

mass_fractions:

Species mass-fraction mapping for the current atmosphere.

mean_molar_masses:

Mean molecular mass profile in amu.

reference_gravity:

Reference gravity in cgs units.

scattering_in_transmission:

Whether scattering is already active in transmission before adding cloud contributions.

sum_opacities:

Whether cloud opacities should be collapsed into a single absorber channel.

opaque_cloud_top_pressure:

Optional pressure in bar for an opaque cloud deck.

power_law_opacity_350nm:

Optional reference opacity for the power-law cloud scattering model.

power_law_opacity_coefficient:

Wavelength exponent for the power-law cloud scattering model.

cloud_species:

Cloud species to include in the cloudy branch.

clouds_particle_porosity_factor:

Mapping of cloud species to particle porosity factors.

clouds_loaded_opacities:

Loaded cloud opacity tables and metadata.

anisotropic_cloud_scattering:

If True, use anisotropic scattering when forming continuum scattering opacities.

cloud_particle_mean_radii:

Optional prescribed particle mean radii.

cloud_particle_radius_distribution_std:

Width of the log-normal particle size distribution.

cloud_particle_number_density_grid:

Optional custom particle number density grid.

cloud_f_sed:

Cloud settling parameter, scalar or per-species mapping.

eddy_diffusion_coefficients:

Eddy diffusion coefficient profile or mapping.

cloud_particle_radius_distribution:

Particle size distribution model, such as "lognormal", "hansen", or "custom".

cloud_hansen_a:

Optional Hansen a parameter or equivalent mean-radius input.

cloud_hansen_b:

Optional Hansen b width parameter.

cloud_photosphere_median_optical_depth:

Optional target cloud optical depth near the photosphere.

patchy_clouds:

Cloud species affected by cloud_fraction and therefore excluded from the clear branch.

return_cloud_contribution:

Whether to propagate cloud-only products required by contribution diagnostics.

compute_clear_opacities:

If True, also compute the clear branch.

target_particle_radii:

Optional target particle radii grid for cloud opacity evaluation.

target_pressure:

Optional pressure grid associated with target_particle_radii.

Returns:

Tuple containing cloudy continuum absorption and scattering opacities, cloud-only opacity diagnostics, particle radii, clear-branch cloud products, and the updated transmission-scattering flag.

petitRADTRANS.opacities.clouds._compute_cloud_opacities(pressures, temperatures, cloud_species, frequency_bins_edges, cloud_species_mass_fractions, mean_molar_masses, reference_gravity, cloud_particle_radius_distribution_std, clouds_loaded_opacities, sum_opacities, anisotropic_cloud_scattering, cloud_f_sed=None, eddy_diffusion_coefficients=None, cloud_particle_mean_radii=None, cloud_particle_radius_distribution='lognormal', cloud_hansen_a=None, cloud_hansen_b=None, cloud_particle_number_density_grid=None, clouds_particle_porosity_factor=None, photospheric_cloud_optical_depths=None, continuum_opacities=None, return_cloud_contribution=False, target_particle_radii=None, target_pressure=None)#

Calculate cloud opacity terms for a single cloud branch.

The function prepares cloud particle properties, evaluates the selected particle size distribution against the loaded cloud tables, interpolates the resulting opacities onto the model frequency grid, and separates the final absorption and scattering products used by the radiative-transfer solvers.

Args:
pressures:

Atmospheric pressure grid in cgs units.

temperatures:

Atmospheric temperature profile in K.

cloud_species:

Cloud species included in this branch.

frequency_bins_edges:

Frequency-bin edges for interpolation of cloud opacity tables.

cloud_species_mass_fractions:

Mapping of cloud species to mass-fraction profiles.

mean_molar_masses:

Mean molecular mass profile in amu.

reference_gravity:

Reference gravity in cgs units.

cloud_particle_radius_distribution_std:

Width of the log-normal particle size distribution.

clouds_loaded_opacities:

Loaded cloud opacity tables and metadata.

sum_opacities:

Whether cloud opacity outputs should be collapsed into a single absorber channel.

anisotropic_cloud_scattering:

Whether to use anisotropic scattering in the continuum output.

cloud_f_sed:

Cloud settling parameter used when radii must be derived.

eddy_diffusion_coefficients:

Eddy diffusion coefficient profile or mapping used for derived particle radii.

cloud_particle_mean_radii:

Optional prescribed cloud particle mean radii.

cloud_particle_radius_distribution:

Particle size distribution model.

cloud_hansen_a:

Optional Hansen a parameter or equivalent mean-radius input.

cloud_hansen_b:

Optional Hansen b width parameter.

cloud_particle_number_density_grid:

Optional custom particle number density grid.

clouds_particle_porosity_factor:

Optional mapping of cloud species to particle porosity factors.

photospheric_cloud_optical_depths:

Optional target cloud optical depth near the photosphere.

continuum_opacities:

Seed continuum absorption opacities to which cloud absorption is added.

return_cloud_contribution:

Whether to retain cloud-only products needed for contribution diagnostics.

target_particle_radii:

Optional target particle radii grid for cloud opacity evaluation.

target_pressure:

Optional pressure grid associated with target_particle_radii.

Returns:

Tuple (continuum_opacities, continuum_opacities_scattering, cloud_anisotropic_scattering_opacities, cloud_absorption_opacities, cloud_opacities, cloud_particle_mean_radii).

petitRADTRANS.opacities.clouds.compute_species_optical_depths(reference_gravity, pressures, cloud_opacities)#

Compute cloud optical depths from per-species cloud opacities.

Optical depths are integrated from the top of the atmosphere downward using the atmospheric pressure grid and a vertically constant reference gravity.

Args:
reference_gravity:

Surface gravity in cgs units.

pressures:

Atmospheric pressure grid in cgs units.

cloud_opacities:

Cloud opacity array with dimensions (..., n_layers).

Returns:

Cloud optical depths with the same shape as cloud_opacities.