optmat.solid.bundle#

The silica nonlinear bundle: n2, f_R and h_R as one object (OEP 1, section 4.7).

A propagation code in the \(n_0 = 1\) convention of the nonlinear Schrödinger equation takes the nonlinear response

\[R(t) = (1 - f_R)\,\delta(t) + f_R\,h_R(t), \qquad \int_0^\infty h_R\,dt = 1,\]

with the total long-pulse \(n_2\): the triple \((n_2, f_R, h_R)\). A bundle is that triple, so its parts cannot be mismatched. Every bundle holds the total \(n_2(\lambda)\) of the Kerr fit (kerr/SiO2), the quantity the data measure, and its shape’s own \(f_R\): its electronic part is \((1 - f_R)\,n_2\), and a scalar and a vector run agree in the long-pulse limit.

  • "default": Hollenbeck and Cantrell’s shape with the Kerr fit’s \(f_R\), paired, copolarised only;

  • "tensor": Lin and Agrawal’s shape with its own \(f_R\) (TC-734), which has the isotropic and anisotropic parts;

  • one bundle per silica response, under the response’s name.

Each carries its gain check against Stolen and Ippen’s measured Stokes gain (526.0 nm, 330 cm^-1; stolen_1973), a consistency check for a shape other than the one the Kerr fit’s \(f_R\) was set with. The silica response’s raman_coefficient and electronic_susceptibility include \(n_0^2\); a code in the \(n_0 = 1\) convention takes the bundle’s \(n_2\), \(f_R\) and \(h_R\) instead.

Module Attributes

EVALUATION_VERSION

The version of this module's evaluation code, in every bundle's identity.

Functions

silica_bundle([name])

Return a silica bundle.

silica_bundles()

Return every silica bundle, by name.

Classes

GainCheck(pump_wavelength, shift, predicted, ...)

A bundle's Stokes gain against Stolen and Ippen's measurement.

SilicaNonlinearBundle(name, kerr, response, *)

The consistent triple (n2, f_R, h_R) of fused silica.

optmat.solid.bundle.EVALUATION_VERSION: Final = 1#

The version of this module’s evaluation code, in every bundle’s identity.

class optmat.solid.bundle.GainCheck(pump_wavelength, shift, predicted, measured, sigma, reference)[source]#

Bases: object

A bundle’s Stokes gain against Stolen and Ippen’s measurement.

Attributes:
pump_wavelengthfloat
shiftfloat

The Stokes shift, cm^-1.

predictedfloat

The bundle’s copolarised gain there, with its total n2 and f_R, m/W.

measuredfloat

Stolen and Ippen’s, m/W.

sigmafloat

Its standard uncertainty, m/W.

referencestr

The curated dataset.

property deviation: float#

The predicted gain’s relative departure from the measured one.

Returns:
float

predicted / measured - 1.

measured: float#
predicted: float#
pump_wavelength: float#
reference: str#
shift: float#
sigma: float#
class optmat.solid.bundle.SilicaNonlinearBundle(name, kerr, response, *, status='user', status_reason='', modified=(), base='')[source]#

Bases: Identified

The consistent triple (n2, f_R, h_R) of fused silica.

Attributes:
namestr

The bundle’s name: default, tensor or a silica response’s.

kerrKerrModel

The Kerr fit, whose total long-pulse n2 the bundle holds.

responseSilicaRamanResponse

The Raman shape, with its f_R.

statusstr

validated for the default and the tensor default and their responses’ bundles; comparison for the other shapes.

EVALUATES_THROUGH: ClassVar[tuple[str, ...]] = ('optmat.solid.bundle',)#
EVALUATION_VERSION: ClassVar[int] = 1#
IDENTITY_KIND: ClassVar[str] = 'silica_bundle'#
property gain_check: GainCheck[source]#

The bundle’s copolarised Stokes gain against Stolen and Ippen’s.

Returns:
GainCheck

At their pump and shift, with the bundle’s total n2 and f_R.

h_r(time, component='parallel')[source]#

Return the normalised Raman response h_R (or one of its tensor parts).

Parameters:
timearray_like

Delay after the impulse, s.

component{“parallel”, “a”, “b”}, optional

The part; the tensor parts only for a shape that has them.

Returns:
numpy.ndarray

The response h_R, 1/s; parallel integrates to one.

kerr: KerrModel#
n2(wavelength)[source]#

Return the total long-pulse n2, the Kerr fit’s.

Parameters:
wavelengtharray_like or float

Vacuum wavelength, m.

Returns:
numpy.ndarray

The n2, m^2/W.

Warns:
ModelRangeWarning

Outside the Kerr fit’s wavelengths.

n2_electronic(wavelength)[source]#

Return the instantaneous part, (1 - f_R) n2, with the shape’s f_R.

Parameters:
wavelengtharray_like or float

Vacuum wavelength, m.

Returns:
numpy.ndarray

The electronic n2, m^2/W.

n2_raman(wavelength)[source]#

Return the delayed part, f_R n2.

Parameters:
wavelengtharray_like or float

Vacuum wavelength, m.

Returns:
numpy.ndarray

The Raman n2, m^2/W.

name: str#
property paired: bool#

Whether f_R is the one the Kerr fit found with this shape.

Returns:
bool

The response’s paired.

property raman_fraction: float#

The shape’s f_R, the Raman share of the total n2.

Returns:
float

The fraction f_R.

response: SilicaRamanResponse#
optmat.solid.bundle.silica_bundle(name='default')[source]#

Return a silica bundle.

Parameters:
namestr, optional

default (Hollenbeck, paired), tensor (Lin and Agrawal, their f_R) or a silica response’s name.

Returns:
SilicaNonlinearBundle

The bundle.

Raises:
DataError

For an unknown name.

Examples

>>> bundle = silica_bundle()
>>> bundle.paired, f"{bundle.raman_fraction:.3f}"
(True, '0.219')
>>> f"{silica_bundle('tensor').gain_check.deviation:+.3f}"
'-0.079'
optmat.solid.bundle.silica_bundles()[source]#

Return every silica bundle, by name.

Returns:
Mapping

default, tensor and one per silica response.