solprop.tools.capillary#
Soliton parameters of a mode or a gas-filled capillary, and capillary designs.
The full set of design numbers for a pulse in a mode (soliton_params()) or a
capillary (capillary_params()), the capillary that gives a soliton order
(capillary_design()) and the gas mixing ratio of a bulk dispersion
(gas_ratio()).
Functions
|
Return the pressure and energy that give a capillary a soliton design. |
|
Return the design numbers of a pulse in a gas-filled capillary. |
|
Return the ratios of bulk dispersion and Kerr response of two gases. |
|
Return the design numbers of a pulse in any mode. |
Classes
|
Ratios of the bulk dispersion and the Kerr response of two gases. |
|
The design numbers of one pulse in one mode and one fill. |
- class solprop.tools.capillary.GasRatio(beta2, chi3)[source]#
Bases:
objectRatios of the bulk dispersion and the Kerr response of two gases.
- Attributes:
- beta2float
Ratio of the bulk group-velocity dispersions, first gas over second.
- chi3float
Ratio of the third-order susceptibilities, first gas over second.
- class solprop.tools.capillary.SolitonParams(energy, fwhm, width, omega, wavelength, gas, pressure, temperature, shape, peak_power, beta2, density, index, n2, gamma, soliton_order, soliton_content, intensity, peak_intensity, critical_power, dispersion_length, nonlinear_length, fission_length, zdw, loss_length, effective_area, mode)[source]#
Bases:
DisplayedThe design numbers of one pulse in one mode and one fill.
- Attributes:
- energyfloat
Pulse energy in J.
- fwhmfloat
Full width at half maximum of the power in s.
- widthfloat
Natural width
tau0of the shape in s (pulse_width()).- omegafloat
Angular frequency of the pump in rad/s.
- wavelengthfloat
Vacuum wavelength of the pump in m.
- gasstr
The fill’s species labels, joined by
+.- pressurefloat
Total pressure at the position in bar; NaN for a mixture of independent populations, which has no single pressure.
- temperaturefloat
Fill temperature in K.
- shape{‘sech’, ‘gauss’}
"sech"or"gauss".- peak_powerfloat
Peak power in W.
- beta2float
Group-velocity dispersion of the mode at the pump in s^2/m.
- densityfloat
Total number density of the fill in m^-3.
- indexfloat
Linear refractive index of the fill at the pump.
- n2float
Nonlinear index of the fill in m^2/W.
- gammafloat
Nonlinear coefficient in rad/(W m).
- soliton_orderfloat
sqrt(L_D / L_NL).- soliton_contentSolitonContent or None
Unchirped NLSE constituent count and largest soliton; None for normal GVD.
- intensityfloat
Mode-averaged intensity
peak_power / effective_areain W/m^2.- peak_intensityfloat
On-axis intensity of the mode at the peak power in W/m^2: what a run’s
peak_intensitystatistic reports at its first plane. For the fundamental of a capillary it is 1.77 times intensity. NaN for a mode without a transverse profile (a dispersion-specified one).- critical_powerfloat
Self-focusing power in W (
self_focusing_power()).- dispersion_lengthfloat
In m.
- nonlinear_lengthfloat
In m.
- fission_lengthfloat
In m.
- zdwfloat
Zero-dispersion wavelength in m within 100 nm to 3 um, or NaN when the dispersion does not change sign there. No second, guess-seeded search is tried.
- loss_lengthfloat
The 1/e power loss length of the mode at the pump in m.
- effective_areafloat
In m^2.
- modeMode
The mode.
- soliton_content: SolitonContent | None#
- solprop.tools.capillary.capillary_design(radius, gas, *, zdw_wavelength, fwhm, wavelength, soliton_order=None, soliton_count=None, largest_eigenvalue=None, shape='sech', temperature=293.15, m=1, model='full', loss=True, cladding=None, materials=None, pressure_max=100.0)[source]#
Return the pressure and energy that give a capillary a soliton design.
The inverse of
capillary_params(): the pressure puts the zero-dispersion point at zdw_wavelength (pressure_zdw()), and the energy then gives the pulse one soliton target. At that pressure \(\beta_2\) and \(\gamma\) do not depend on the energy and \(N^2 = \gamma P_0\tau_0^2/|\beta_2|\), so the peak power is \(P_0 = N^2|\beta_2|/(\gamma\tau_0^2)\). Give exactly one target:soliton_order, the conventional \(N\);
soliton_count, a number \(M\) of solitons in the scattering content (
soliton_content()): the pulse area is set to \(M\pi\), the middle of the band of areas with \(M\) solitons, which is \(N = M\) for sech and \(N = M\sqrt{\pi/2}\) for a Gaussian;largest_eigenvalue, the \(\eta\) of the largest constituent, which fixes its width \(\tau_0/(2\eta)\): \(N = \eta + 1/2\) for sech, and a root of the Gaussian scattering problem otherwise.
- Parameters:
- radiusfloat
Core radius in m, > 0.
- gasGas or str
A single built-in gas, as
pressure_zdw()takes it.- zdw_wavelengthfloat
Wavelength at which the dispersion should vanish, m.
- fwhmfloat
Full width at half maximum of the power in s, > 0.
- wavelengthfloat
Pump wavelength in m, > 0.
- soliton_orderfloat or None, optional
Target conventional soliton order, > 0.
- soliton_countint or None, optional
Target number of solitons, >= 1.
- largest_eigenvaluefloat or None, optional
Target imaginary part of the largest Zakharov-Shabat eigenvalue, dimensionless with time in units of the shape’s natural width, > 0.
- shape{‘sech’, ‘gauss’}, optional
The pulse shape, used for the width, the peak power and the content.
- temperaturefloat, optional
Fill temperature in K.
- mint, optional
Radial index of the HE_1m mode.
- model{‘full’, ‘reduced’}, optional
Marcatili model.
- lossbool, float or callable, optional
Loss policy of the mode in the returned numbers.
- claddingGlassIndex, complex or None, optional
Cladding index;
Noneis fused silica.- materialsMaterialSelection or None, optional
Design under this selection, as
capillary_params()andpressure_zdw()do.NoneisMaterialSelection().- pressure_maxfloat, optional
Upper end of the pressure bracket in bar.
- Returns:
- SolitonParams
The numbers at the designed pressure and energy, with the mode; the pressure is
.pressure(bar) and the energy.energy(J).
- Raises:
- ToolsError
If not exactly one target is given or it is out of range, no pressure in the bracket gives the zero-dispersion point, or a content target is asked of a pump in normal dispersion.
Examples
>>> from solprop.tools import capillary_design >>> p = capillary_design(125e-6, "Ar", zdw_wavelength=500e-9, fwhm=10e-15, ... wavelength=800e-9, soliton_order=3.0, cladding=1.45) >>> f"{p.pressure:.4f} bar {p.energy * 1e6:.1f} uJ N = {p.soliton_order:.3f}" '0.0664 bar 100.5 uJ N = 3.000' >>> g = capillary_design(125e-6, "Ar", zdw_wavelength=500e-9, fwhm=10e-15, ... wavelength=800e-9, soliton_count=2, shape="gauss", ... cladding=1.45) >>> f"{g.soliton_order:.4f} {g.soliton_content.count}" '2.5066 2'
- solprop.tools.capillary.capillary_params(radius, gas, pressure=None, *, energy, fwhm, wavelength, shape='sech', temperature=None, n=1, m=1, kind='HE', model='full', loss=True, cladding=None, materials=None)[source]#
Return the design numbers of a pulse in a gas-filled capillary.
Builds the mode as
solprop.driver.interface.prop_capillary()does for the same arguments – aMarcatiliModeover the fill’s mixture – and hands it tosoliton_params().- Parameters:
- radiusfloat
Core radius in m, > 0.
- gasGas, str, Mapping or Mixture
The fill, as prop_capillary takes it.
- pressurefloat or None, optional
Total pressure in bar;
Noneis one bar. For a gradient, evaluate at the pressure of the position of interest.- energyfloat
Pulse energy in J, > 0.
- fwhmfloat
Full width at half maximum of the power in s, > 0.
- wavelengthfloat
Pump wavelength in m, > 0.
- shape{‘sech’, ‘gauss’}, optional
The pulse shape.
- temperaturefloat or None, optional
Fill temperature in K;
Noneis room temperature, or the mixture’s own beside a Mixture, which refuses any other.- nint, optional
Azimuthal mode index.
- mint, optional
Radial mode index, >= 1.
- kind{‘HE’, ‘TE’, ‘TM’}, optional
Mode family.
- model{‘full’, ‘reduced’}, optional
Marcatili model.
- lossbool, float or callable, optional
Loss policy of the mode.
- claddingGlassIndex, complex or None, optional
Cladding index;
Noneis fused silica.- materialsMaterialSelection or None, optional
Build the capillary as prop_capillary does under the same
materials=: the fill from optmat (index, density and Kerr coefficient at wavelength) andcladding=Noneas optmat’s recommended fused silica.NoneisMaterialSelection().
- Returns:
- SolitonParams
The numbers, with the mode that was built.
Examples
>>> from solprop.tools import capillary_params >>> p = capillary_params(125e-6, "He", 0.4, energy=300e-6, fwhm=10e-15, ... wavelength=800e-9, model="reduced", cladding=1.45) >>> f"{p.gamma:.3e} {p.intensity:.3e}" '4.884e-11 1.130e+18'
- solprop.tools.capillary.gas_ratio(gas_a, gas_b, wavelength, *, pressure=1.0, temperature=293.15, materials=None)[source]#
Return the ratios of bulk dispersion and Kerr response of two gases.
The bulk (unguided) dispersion of each gas, not a mode’s: it answers “how much more pressure of B matches A”, which is a property of the gases alone.
- Parameters:
- gas_aGas or str
The numerator’s species.
- gas_bGas or str
The denominator’s species.
- wavelengthfloat
Wavelength in m at which the dispersions are compared, > 0.
- pressurefloat, optional
Pressure of both gases in bar, > 0.
- temperaturefloat, optional
Temperature of both in K.
- materialsMaterialSelection or None, optional
Take both gases from optmat under this selection, as a run’s
materials=does: their index, their density and their Kerr coefficient at wavelength;"air"is nitrogen and oxygen.NoneisMaterialSelection().
- Returns:
- GasRatio
Named
beta2andchi3ratios.
- Raises:
- ToolsError
If the selection names a carrier other than wavelength, or a gas has no Kerr data under it.
Examples
>>> from solprop.tools import gas_ratio >>> ratio = gas_ratio("Ar", "He", 800e-9) >>> f"{ratio.beta2:.1f} {ratio.chi3:.1f}" '18.6 28.4'
- solprop.tools.capillary.soliton_params(mode, gas, pressure=None, *, energy, fwhm, wavelength, shape='sech', temperature=None, z=0.0, materials=None)[source]#
Return the design numbers of a pulse in any mode.
The mode supplies the dispersion, the area and the loss; the fill supplies the nonlinear index. They are separate arguments because a mode need not know its fill’s Kerr response (a tabulated mode does not), and the caller is trusted to give the fill the mode was built with –
capillary_params()does both.- Parameters:
- modeMode
Any mode: a capillary, an antiresonant or tabulated fibre, a rectangular guide.
- gasGas, str, Mapping or Mixture
The fill: a registry species,
"air", mole fractions, or a mixture. A mixture of species selected from optmat takes their Kerr coefficients at wavelength, the carrier.- pressurefloat or None, optional
Total pressure in bar;
Noneis one bar, and is required beside a Mixture.- energyfloat
Pulse energy in J, > 0.
- fwhmfloat
Full width at half maximum of the power in s, > 0.
- wavelengthfloat
Pump wavelength in m, > 0.
- shape{‘sech’, ‘gauss’}, optional
The pulse shape, used consistently for the width and the peak power.
- temperaturefloat or None, optional
Fill temperature in K;
Noneis room temperature, or the mixture’s own beside a Mixture, which refuses any other.- zfloat, optional
Position along the waveguide at which everything is evaluated, m.
- materialsMaterialSelection or None, optional
Resolve a named fill from optmat under this selection, as a run’s
materials=does: its index, density and Kerr coefficient at wavelength.NoneisMaterialSelection(); a Mixture is taken as it is. The mode is the caller’s either way.
- Returns:
- SolitonParams
The numbers, with the mode.
- Raises:
- ToolsError
If a quantity is not positive, the shape is unknown, the mode has no dispersion at the pump, a component of the fill has no Kerr data, the selection names a carrier other than wavelength, or a pressure or a temperature other than its own is given beside a Mixture.
Examples
>>> from solprop.modes import MarcatiliMode >>> from solprop.tools import soliton_params >>> mode = MarcatiliMode(125e-6, "He", 0.4, model="reduced", cladding=1.45) >>> p = soliton_params(mode, "He", 0.4, energy=300e-6, fwhm=10e-15, ... wavelength=800e-9) >>> f"{p.soliton_order:.2f} {p.fission_length:.2f}" '2.26 1.75'