solprop.tools.beam#

Free-space beam numbers: the critical power, beam parameters and intensities.

Functions

beam_params(waist, wavelength, gas, ...[, focus])

Return the characteristic numbers of a Gaussian beam in a gas.

beam_through_lens(focal_length, radius, ...)

Return the waist a thin lens makes of a collimated Gaussian beam.

field_to_intensity(field)

Return the intensity of a field amplitude, \(I = \epsilon_0 c E^2/2\).

intensity_to_field(intensity)

Return the field amplitude of an intensity, \(E = \sqrt{2I/\epsilon_0 c}\).

self_focusing_power(wavelength, index, n2)

Return the critical power for self-focusing, as physical power.

Classes

BeamParams(waist, focus, wavelength, index, ...)

The characteristic numbers of a Gaussian beam in a gas.

class solprop.tools.beam.BeamParams(waist, focus, wavelength, index, rayleigh_range, critical_power, peak_power, power_ratio, collapse_distance)[source]#

Bases: object

The characteristic numbers of a Gaussian beam in a gas.

Attributes:
waistfloat

The 1/e² intensity radius at the waist, m.

focusfloat

Where the waist lies from the launch plane, m.

wavelengthfloat

The vacuum wavelength, m.

indexfloat

The linear refractive index.

rayleigh_rangefloat

\(\pi n w_0^2/\lambda\), m.

critical_powerfloat

The Townes critical power, W (solprop.spatial.critical_power()).

peak_powerfloat

The beam’s peak power, W.

power_ratiofloat

Its peak power over the critical power.

collapse_distancefloat or None

Where a monochromatic beam in a pure Kerr medium would collapse by Marburger’s empirical formula, m from the launch plane, with a lens’s focus combined by Talanov’s law. A reference, not a prediction of a broadband, ionising run; None at or below the critical power, or where a beam already diverging leaves no collapse ahead.

collapse_distance: float | None#
critical_power: float#
focus: float#
index: float#
peak_power: float#
power_ratio: float#
radius(z)[source]#

Return the linear beam radius along z, in the absence of any nonlinearity.

Parameters:
znumpy.ndarray

Positions from the launch plane, m.

Returns:
numpy.ndarray

The 1/e² intensity radius, m.

rayleigh_range: float#
waist: float#
wavelength: float#
solprop.tools.beam.beam_params(waist, wavelength, gas, pressure, peak_power, *, focus=0.0)[source]#

Return the characteristic numbers of a Gaussian beam in a gas.

The Rayleigh range, the critical power, and Marburger’s collapse distance \(0.367 z_R/\sqrt{(\sqrt{P/P_{\rm cr}}-0.852)^2-0.0219}\), for a beam collimated at the launch plane. A beam launched a distance \(d\) before its waist has, at launch, the radius \(w_0\sqrt{1 + (d/z_R)^2}\) and a wavefront converging with radius \(R = d + z_R^2/d\); Marburger’s distance for that radius is combined with \(R\) by Talanov’s lens law, \(1/z_c' = 1/z_c + 1/R\). A waist just ahead is nearly collimated, so the distance moves smoothly with \(d\).

Parameters:
waistfloat

The 1/e² intensity radius at the waist, m.

wavelengthfloat

The vacuum wavelength, m.

gasGas or str

The gas.

pressurefloat

Its pressure, bar.

peak_powerfloat

The beam’s peak power, W.

focusfloat, optional

Where the waist lies from the launch plane, m.

Returns:
BeamParams

The numbers.

Examples

>>> from solprop.tools import beam_params
>>> beam = beam_params(300e-6, 800e-9, "Ar", 1.0, 27.6e9)
>>> f"{beam.rayleigh_range:.3f} m, P/Pcr {beam.power_ratio:.2f}"
'0.354 m, P/Pcr 3.00'
>>> f"{beam.collapse_distance:.3f} m"
'0.150 m'
solprop.tools.beam.beam_through_lens(focal_length, radius, wavelength)[source]#

Return the waist a thin lens makes of a collimated Gaussian beam.

\(w_0 = \lambda f / (\pi w) / \sqrt{1 + (\lambda f / \pi w^2)^2}\), and the waist’s distance from the lens, \(f / (1 + (\lambda f / \pi w^2)^2)\), which falls short of the focal length for a weakly focused beam. Paraxial, in vacuum.

Parameters:
focal_lengthfloat

The lens’s focal length, m.

radiusfloat

The beam’s 1/e² intensity radius on the lens, m.

wavelengthfloat

The vacuum wavelength, m.

Returns:
tuple of float

The waist, m, and its distance from the lens, m.

Examples

>>> from solprop.tools import beam_through_lens
>>> waist, distance = beam_through_lens(1.0, 5e-3, 800e-9)
>>> f"{waist * 1e6:.1f} um at {distance:.4f} m"
'50.9 um at 0.9999 m'
solprop.tools.beam.field_to_intensity(field)[source]#

Return the intensity of a field amplitude, \(I = \epsilon_0 c E^2/2\).

Parameters:
fieldfloat

Field amplitude in V/m.

Returns:
float

Intensity in W/m^2.

Examples

>>> from solprop.tools import field_to_intensity
>>> f"{field_to_intensity(1e10):.4e}"
'1.3272e+17'
solprop.tools.beam.intensity_to_field(intensity)[source]#

Return the field amplitude of an intensity, \(E = \sqrt{2I/\epsilon_0 c}\).

Parameters:
intensityfloat

Intensity in W/m^2, >= 0.

Returns:
float

Field amplitude in V/m.

Raises:
ToolsError

If the intensity is negative.

Examples

>>> from solprop.tools import field_to_intensity, intensity_to_field
>>> f"{intensity_to_field(field_to_intensity(1e10)):.6e}"
'1.000000e+10'
solprop.tools.beam.self_focusing_power(wavelength, index, n2)[source]#

Return the critical power for self-focusing, as physical power.

\(P_{\rm cr} = 1.86226\,\lambda^2/(4\pi n_0 n_2)\), the Townes power of Fibich and Gaeta (Opt. Lett. 25, 335 (2000)). It is solprop.spatial.critical_power() – the package’s one Townes constant – at the linear index, both measuring the physical axial power in the medium (SEP 34). The paper prints the constant as 1.86225; the computed value is 1.8622555, of which 1.86226 is the rounding.

Parameters:
wavelengthfloat

Vacuum wavelength in m, > 0.

indexfloat

Linear refractive index \(n_0\), > 0.

n2float

Nonlinear index in m^2/W, > 0.

Returns:
float

Critical power in W.

Examples

>>> from solprop.tools import self_focusing_power
>>> f"{self_focusing_power(800e-9, 1.0, 3.55e-25) / 1e9:.2f}"
'267.17'