solprop.modes.antiresonant#
Single-ring tube-lattice modes with the Vincetti empirical fits.
The transverse field and protocol area remain Marcatili’s. The spectral model follows
the published Vincetti fits (docs/guide/waveguides/antiresonant.md): where the
printed papers and earlier published implementations of them, pyJCMwave among them,
differ,
CONVENTIONS names the choice and LEGACY_CONVENTIONS the form those
implementations share, so that a test can assemble the latter from the same building
blocks. The constants are transcribed from the three papers; the 2016 paper’s
equations were read from a degraded text extraction and have not been checked against
the typeset page.
Module Attributes
Half-width of the loss Lorentzians in the normalised frequency. |
|
Damping of the dispersive Lorentzians. |
|
Coefficient of |
|
Prefactor of the minimum confinement loss in dB/m. |
|
Prefactor of the dispersive resonance correction, Rosa 2021 eq. |
|
Prefactor of the fitted effective area, Rosa 2021 eq. |
|
Largest number of terms in the resonance sums. |
|
Wall thickness over outer tube radius of the 2019 validation fibres. |
|
Tube counts of the 2019 validation fibres. |
|
Real tube indices of the 2019 validation fibres. |
Functions
|
Return the inscribed core radius for a tube gap. |
|
Return the gap between neighbouring tubes. |
|
Return the outer tube radius for an inscribed core and gap. |
Classes
|
Describe a single ring of identical hollow tubes. |
|
Model a single-ring tube-lattice fibre with the Vincetti fits. |
- solprop.modes.antiresonant.AREA_FACTOR: Final = 0.48#
Prefactor of the fitted effective area, Rosa 2021 eq. 22.
0.48 piis Marcatili’s HE11 area factor, which the fit reduces to away from resonance.
- solprop.modes.antiresonant.DISPERSION_PREFACTOR: Final = 4.5e-07#
Prefactor of the dispersive resonance correction, Rosa 2021 eq. 6.
- solprop.modes.antiresonant.DISPERSION_WIDTH: Final = 0.03#
Damping of the dispersive Lorentzians.
gamma_dof Rosa, Melli and Vincetti (2021) eq. 2. The paper prints 0.003; earlier implementations carry 0.03, which fits the FEM index near the resonances 3.2 (vacuum) and 2.3 (argon) times better.
- solprop.modes.antiresonant.LOSS_WIDTH: Final = 0.003#
Half-width of the loss Lorentzians in the normalised frequency.
gamma_lof Vincetti and Rosa (2019) eq. 2.
- solprop.modes.antiresonant.MAX_TERMS: Final = 8#
Largest number of terms in the resonance sums.
The EH cutoff fit of the 2019 paper, eq. 5, carries
1 / (7.75 - nu), so more terms extrapolate through its pole; the papers stop at eight.
- solprop.modes.antiresonant.MINIMUM_LOSS_PREFACTOR: Final = 0.0003#
Prefactor of the minimum confinement loss in dB/m.
Vincetti (2016) eq. 3 as revised by the 2019 paper.
- solprop.modes.antiresonant.RADIUS_COEFFICIENT: Final = 10.0#
Coefficient of
wavelength / core_radiusin the effective radius.The gap-penetration term of Rosa 2021 eq. 10 as printed; earlier implementations carry 20. The factor is empirical: no derivation decides between 10 and 20, and no erratum or author confirmation has been found.
- class solprop.modes.antiresonant.TubeLattice(wall_thickness, tube_radius, n_tubes, n_terms=8)[source]#
Bases:
DisplayedDescribe a single ring of identical hollow tubes.
- Attributes:
- wall_thicknessfloat
Positive finite wall thickness in m, smaller than the outer radius.
- tube_radiusfloat
Positive finite outer tube radius in m.
- n_tubesint
Number of tubes, at least three.
- n_termsint
Number of radial and azimuthal fit terms, between one and
MAX_TERMS; default eight, the papers’ truncation.
- core_radius_for(gap)[source]#
Return the core radius for a gap.
- Parameters:
- gapfloat
Nonnegative finite tube gap in m.
- Returns:
- float
Inscribed core radius in m.
- classmethod from_gap(core_radius, gap, n_tubes, wall_thickness)[source]#
Construct a lattice from a core radius and gap.
- Parameters:
- core_radiusfloat
Positive inscribed core radius in m.
- gapfloat
Nonnegative gap in m.
- n_tubesint
Number of tubes, at least three.
- wall_thicknessfloat
Positive tube wall thickness in m.
- Returns:
- TubeLattice
Lattice with the implied outer radius and eight fit terms.
- classmethod from_inner_diameter_ratio(core_radius, wall_thickness, inner_diameter_ratio, n_tubes)[source]#
Construct a lattice from the inner tube to core diameter ratio.
- Parameters:
- core_radiusfloat
Positive inscribed core radius in m; the core diameter is twice this.
- wall_thicknessfloat
Positive tube wall thickness in m.
- inner_diameter_ratiofloat
Positive finite d/D, where d is the tube’s inner diameter and D the inscribed core diameter (some papers quote d/D with the outer diameter).
- n_tubesint
Number of resonators, at least three.
- Returns:
- TubeLattice
Lattice with outer tube radius
core_radius * inner_diameter_ratio + wall_thickness.
- Raises:
- ModeError
If dimensions are invalid or neighbouring tubes overlap.
- solprop.modes.antiresonant.VALIDATED_TUBE_COUNT: Final = (6, 10)#
Tube counts of the 2019 validation fibres.
- solprop.modes.antiresonant.VALIDATED_TUBE_INDEX: Final = (1.44, 2.42)#
Real tube indices of the 2019 validation fibres.
- solprop.modes.antiresonant.VALIDATED_WALL_RATIO: Final = (0.05, 0.2)#
Wall thickness over outer tube radius of the 2019 validation fibres.
- class solprop.modes.antiresonant.VincettiMode(radius, gas=None, pressure=0.0, *, kind='HE', n=1, m=1, phi=0.0, model='full', loss=True, cladding=None, temperature=None, susceptibility=None, mixture=None, lattice)[source]#
Bases:
MarcatiliModeModel a single-ring tube-lattice fibre with the Vincetti fits.
All inherited capillary parameters retain their meaning.
claddingis the tube index; its real part enters the fits. Onlymodel="full"is accepted. Loss follows the parent policy and positive extinction attenuates power. The real index is floored atEVANESCENT_INDEX_FLOORwith zero derivative where the floor binds. The protocol area and transverse fields remain Marcatili’s. The gas index enters the normalised frequency and the waveguide decrement through the parent’s refractivity route, so an absorbing species carries its small imaginary index into both, as the capillary carries it into its square root.- Attributes:
- latticeTubeLattice
Tube wall, outer radius, count and number of fit terms.
References
[1]Vincetti, Opt. Express 24, 10313 (2016), doi:10.1364/OE.24.010313.
[2]Vincetti and Rosa, Opt. Express 27, 5230 (2019), doi:10.1364/OE.27.005230.
[3]Rosa et al., Fibers 9, 58 (2021), doi:10.3390/fib9100058.
- effective_area(omega, z=0.0, *, conventions=_Conventions(radius_coefficient=10.0, single_power_decrement=True, area_over_gas_index=True, filled_frequency=True))[source]#
Return the fitted spectral area, distinct from the protocol area.
Rosa 2021 eq. 22:
0.48 / (8 pi n_g) (u lambda)^2 / (n_g - Re n_eff), which away from resonance reduces to0.48 pi R_eff^2, independent of the fill. The fit can diverge or become negative near resonances where its index denominator crosses zero, and the denominator is taken real for an absorbing species. It is not the area used for propagation.- Parameters:
- omeganumpy.ndarray
Positive angular frequencies in rad/s, shape
(n_omega,).- zfloat, optional
Position in m.
- conventions_Conventions, optional
Which form of the disputed terms to evaluate; solprop’s by default.
LEGACY_CONVENTIONSgives the area of earlier implementations, for the witness tests.
- Returns:
- numpy.ndarray
Fitted effective area in m^2, shape
(n_omega,).
- lattice: TubeLattice#
- sampled_terms(omega)[source]#
Sample gas and tube dispersion at positive angular frequencies.
- Parameters:
- omeganumpy.ndarray
Positive finite angular frequencies in rad/s, shape
(n_omega,).
- Returns:
- _VincettiTerms
The parent’s samples extended with the tube index, its analytic derivative and the vacuum wavelength.
- Raises:
- ModeError
If frequencies are invalid or the real tube index is not greater than one.
- solprop.modes.antiresonant.core_radius_from_gap(tube_radius, n_tubes, gap)[source]#
Return the inscribed core radius for a tube gap.
- Parameters:
- tube_radiusfloat
Positive outer tube radius in m.
- n_tubesint
Number of tubes, at least three.
- gapfloat
Nonnegative finite gap in m.
- Returns:
- float
Core radius in m.
- Raises:
- ModeError
If the geometry is invalid.
- solprop.modes.antiresonant.tube_gap(core_radius, tube_radius, n_tubes)[source]#
Return the gap between neighbouring tubes.
- Parameters:
- core_radiusfloat
Positive inscribed core radius in m.
- tube_radiusfloat
Positive outer tube radius in m.
- n_tubesint
Number of tubes, at least three.
- Returns:
- float
Gap in m; negative means overlapping tubes.
- Raises:
- ModeError
If a radius is not positive and finite or the count is invalid.
- solprop.modes.antiresonant.tube_radius_from_gap(core_radius, n_tubes, gap)[source]#
Return the outer tube radius for an inscribed core and gap.
- Parameters:
- core_radiusfloat
Positive inscribed core radius in m.
- n_tubesint
Number of tubes, at least three.
- gapfloat
Nonnegative finite gap in m, small enough to leave a positive tube radius.
- Returns:
- float
Outer tube radius in m.
- Raises:
- ModeError
If the geometry is invalid.