solprop.modes.fill#

Share gas-fill resolution, freezing and loss policy across hollow-waveguide modes.

This class contributes methods only. Concrete frozen dataclasses declare their own fields, preserving the public Marcatili constructor and its arithmetic.

Module Attributes

LossSpec

Specify the model loss of any mode that mixes in GasFillMixin.

EVANESCENT_INDEX_FLOOR

Smallest real effective index the full model will return.

Classes

GasFillMixin()

Provide material and loss methods for frozen hollow-mode dataclasses.

class solprop.modes.fill.GasFillMixin[source]#

Bases: Displayed

Provide material and loss methods for frozen hollow-mode dataclasses.

Subclasses declare gas, pressure, temperature, susceptibility, mixture, density and loss fields. The model attribute selects the evanescent floor: "full" applies it and "reduced" does not. No dataclass fields or constructor are supplied here.

absorption_by_species(omega, z=0.0)[source]#

Attribute material intensity loss to populations to first order in chi.

Return rho_s(z) omega Im(gamma_s(omega)) / c in mixture order. This dilute-material attribution excludes wall leakage and the higher-order square-root and waveguide corrections in the mode’s total attenuation. loss=False removes it; a numeric loss scales it. A callable replaces total loss and therefore supplies no species attribution.

Parameters:
omeganumpy.ndarray

Positive angular frequencies in rad/s, within each species’ support.

zfloat, optional

Position in m at which to evaluate the component densities.

Returns:
numpy.ndarray

Non-negative intensity absorption in m^-1, shape (n_species, n_omega). A legacy gas or vacuum has one row.

Raises:
ModeError

If omega is non-positive or non-finite, or loss is a callable whose total attenuation cannot be assigned to individual species.

density: ZProfile#
property fill_species: Species | None[source]#

Return the single species a fill without a mixture carries.

Returns:
Species or None

The species of the density path, whose equation of state gives the density and, for an optmat law, whose susceptibility is the fill’s; None for vacuum or a mixture.

gas: Gas | str | None#
loss: bool | float | Callable[[Float[ndarray, 'n_omega']], Float[ndarray, 'n_omega']]#
mixture: Mixture | None#
model: Literal['full', 'reduced']#
pressure: float | ZProfile#
susceptibility: GasSusceptibility | None#
temperature: float | ZProfile | None#
with_mixture(mixture)[source]#

Return the same mode geometry with the supplied ordered gas mixture.

Parameters:
mixturesolprop.physdata.mixtures.Mixture

New populations, density paths and temperature: the mode’s gas, pressure and temperature are replaced by the mixture’s.

Returns:
GasFillMixin

A new instance of the same concrete dataclass.

Raises:
ModeError

If the concrete mode is not a dataclass.