optmat.solid.raman_response#
The Raman response of fused silica (TC-691, TC-692).
A glass’s delayed third-order response is a normalised shape \(h_R\) (unit integral) and a size: the Raman share \(f_R\) of the long-pulse nonlinear index \(n_2\). For an envelope, the intensity-dependent index is
the form of Stolen et al. (1989), Blow & Wood (1989, their envelope equation), Lin &
Agrawal (2006) and optmat’s Kerr fit (optmat.solid.kerr). For a real field, in
the convention of the gases (optmat.gas.raman_response),
because a kernel slower than the optical cycle follows only the slowly varying half of \(E^2\), while the instantaneous term also has the \(3\omega\) part: the Raman term of the field carries 2/3 of the envelope’s share (Blow & Wood’s Eqs. (2) and (8), TC-692). \(K h_R\) is the silica counterpart of a gas’s \(N h\).
The steady-state Stokes gain, pump and Stokes polarised alike, is \(g(\Omega) = 2 \omega_s n_2 f_R \operatorname{Im} H_R(\Omega) / c\), with \(H_R(\Omega) = \int_0^\infty h_R(\tau) e^{i\Omega\tau} d\tau\) (Lin & Agrawal’s \(2\gamma f_R \operatorname{Im}\tilde R\)).
The models (data/solid/raman/SiO2.toml):
hollenbeck_2002, the default: Hollenbeck & Cantrell’s 13 modes, \(\sum_i A_i e^{-\gamma_i t} e^{-\Gamma_i^2 t^2 / 4} \sin(\omega_i t)\), with the Raman fraction of optmat’s Kerr fit, which uses this shape. Its normalisation is analytic: \(\int_0^\infty e^{-\gamma t - \Gamma^2 t^2/4} \sin(\omega t)\, dt = (\sqrt\pi / \Gamma) \operatorname{Im} w[(\omega + i\gamma)/\Gamma]\), with \(w\) the Faddeeva function. It is copolarised only.lin_2006: Lin & Agrawal’s isotropic part \(R_a = f_a h_a\) and anisotropic part \(R_b = f_b h_b + f_c h_a\), the functions \(a\) and \(b\) of Hellwarth’s form (optmat.gas.raman_response), with their \(f_R = 0.245\).blow_1989: Blow & Wood’s single oscillator with its share 0.222.
The literature forms’ \(f_R\) are theirs, not the Kerr fit’s: with them the
electronic part of the fitted \(n_2\) and the Raman part do not add up to the
fitted \(n_2\) (paired is False).
References#
K. J. Blow and D. Wood, “Theoretical description of transient stimulated Raman scattering in optical fibers”, IEEE J. Quantum Electron. 25, 2665 (1989).
R. H. Stolen, J. P. Gordon, W. J. Tomlinson and H. A. Haus, “Raman response function of silica-core fibers”, J. Opt. Soc. Am. B 6, 1159 (1989).
D. Hollenbeck and C. D. Cantrell, “Multiple-vibrational-mode model for fiber-optic Raman gain spectrum and response function”, J. Opt. Soc. Am. B 19, 2886 (2002).
Q. Lin and G. P. Agrawal, “Raman response function for silica fibers”, Opt. Lett. 31, 3086 (2006).
Module Attributes
The version of this module's evaluation code, in the identity of every model that evaluates through it; raised whenever the code changes its output (OEP 1, section 4.8). |
|
The solids' Raman response models. |
|
The functional form of a model (the module docstring). |
|
A part of the normalised response: |
Functions
|
Return a Raman response model of fused silica. |
Return every Raman response model of fused silica. |
Classes
|
A Raman response model of fused silica. |
- optmat.solid.raman_response.Component#
A part of the normalised response:
parallel(\(h_R = a + b\)), or Hellwarth’sa(isotropic) andb(anisotropic) for a model that has them.alias of
Literal[‘parallel’, ‘a’, ‘b’]
- optmat.solid.raman_response.EVALUATION_VERSION: Final = 1#
The version of this module’s evaluation code, in the identity of every model that evaluates through it; raised whenever the code changes its output (OEP 1, section 4.8).
- optmat.solid.raman_response.Form#
The functional form of a model (the module docstring).
alias of
Literal[‘hollenbeck’, ‘lin_agrawal’, ‘single_oscillator’]
- optmat.solid.raman_response.RAMAN_DIRECTORY: Final = PosixPath('/home/docs/checkouts/optmat/checkouts/7/src/optmat/data/solid/raman')#
The solids’ Raman response models.
- class optmat.solid.raman_response.SilicaRamanResponse(name, form, raman_fraction, paired, parameters, description='', sources=<factory>, reasons=<factory>, *, status='user', status_reason='', modified=(), base='')[source]#
Bases:
IdentifiedA Raman response model of fused silica.
- Attributes:
- namestr
The model (
hollenbeck_2002,lin_2006,blow_1989).- formstr
Its functional form (
Form).- raman_fractionfloat
\(f_R\), the Raman share of the long-pulse \(n_2\).
- pairedbool
True where \(f_R\) is the one optmat’s Kerr fit found with this shape.
- parametersdict of str to numpy.ndarray
The shape’s constants in SI: for
hollenbeckthe amplitudesA, angular frequenciesomega(rad/s), GaussianGammaand Lorentziangammawidths (1/s); forlin_agrawaltau1,tau2,tau_b(s) andf_a,f_b,f_c; forsingle_oscillatortau1,tau2(s).- descriptionstr
What the model is.
- sourcesdict of str to str
The datasets and formulas behind it.
- reasonsdict of str to str
Why.
- statusstr
validatedfor the default,comparisonfor the other shapes.- Its overrides are the shape’s constants (``parameters``, any of them, merged
- into the model’s) and ``raman_fraction``. Any override sets :attr:`paired` to
- False: the fraction was found with the curated shape.
- DERIVED: ClassVar[tuple[str, ...]] = ('paired',)#
Fields derived from the inputs, which an override may not name.
- INPUTS: ClassVar[tuple[str, ...]] = ('parameters', 'raman_fraction')#
The parameters
with_parameters()may change.
- electronic_susceptibility(wavelength)[source]#
Return \(\chi_e = \tfrac43 n_0^2 \varepsilon_0 c (1 - f_R) n_2\).
- Parameters:
- wavelengthfloat
Vacuum wavelength of the field, m.
- Returns:
- float
The instantaneous third-order susceptibility, m^2/V^2.
- Warns:
- ModelRangeWarning
Outside the Kerr fit’s wavelengths.
- gain(pump_wavelength, shift, *, n2=None)[source]#
Return the copolarised steady-state Stokes gain.
\(g = 2 \omega_s n_2 f_R \operatorname{Im} H_R(\Omega) / c\).
- Parameters:
- pump_wavelengthfloat
Vacuum wavelength of the pump, m.
- shiftarray_like
The Stokes shift \(\Omega\), rad/s.
- n2float, optional
The long-pulse \(n_2\), m^2/W; by default optmat’s Kerr fit at the pump wavelength.
- Returns:
- numpy.ndarray
The gain, m/W.
- Warns:
- ModelRangeWarning
Outside the Kerr fit’s wavelengths (without
n2).
- property has_tensor: bool#
Whether the model has an isotropic and an anisotropic part.
- Returns:
- bool
True for Lin & Agrawal’s form.
- property index_model: Model[source]#
The linear model of silica the kernel’s size reads, bound once.
- Returns:
- optmat.solid.models.base.Model
The recommended model of SiO2.
- property kerr_model: KerrModel[source]#
The Kerr fit whose n2 the kernel’s size reads, bound once.
- Returns:
- optmat.solid.kerr.KerrModel
kerr/SiO2.
- raman_coefficient(wavelength)[source]#
Return \(K = 2 n_0^2 \varepsilon_0 c f_R n_2\), the size of the kernel.
In the real-field form of the module docstring, the delayed polarisation is \(\varepsilon_0 K E \int h_R E^2\). It includes \(n_0^2\): a code in the \(n_0 = 1\) convention of the nonlinear Schrödinger equation takes \(n_2\), \(f_R\) and \(h_R\) from a silica bundle instead (
optmat.solid.bundle.silica_bundle()).- Parameters:
- wavelengthfloat
Vacuum wavelength of the field, m (for \(n_0\) and \(n_2\)).
- Returns:
- float
\(K\), m^2/V^2.
- Warns:
- ModelRangeWarning
Outside the Kerr fit’s wavelengths.
- response(time, component='parallel')[source]#
Return the normalised response \(h_R(\tau)\) (or one of its parts).
- Parameters:
- timearray_like
Delay after the impulse, s (zero before it).
- component{“parallel”, “a”, “b”}, optional
The part (
Component).
- Returns:
- numpy.ndarray
\(h_R\), 1/s;
parallelintegrates to one.
- Raises:
- DataError
If a tensor part is asked of a copolarised model.
Examples
>>> response = silica_raman_response() >>> t = np.arange(0.0, 3e-12, 0.05e-15) >>> f"{np.trapezoid(response.response(t), t):.4f}" '1.0000'
- spectrum(omega, component='parallel')[source]#
Return \(H_R(\Omega) = \int_0^\infty h_R(\tau) e^{i\Omega\tau} d\tau\).
- Parameters:
- omegaarray_like
Angular frequency, rad/s.
- component{“parallel”, “a”, “b”}, optional
The part (
Component).
- Returns:
- numpy.ndarray
\(H_R\), dimensionless, complex;
parallelis 1 at zero and its imaginary part is positive at a Stokes shift (gain).
- Raises:
- DataError
If a tensor part is asked of a copolarised model.
Examples
>>> response = silica_raman_response() >>> f"{response.spectrum(0.0).real:.6f}" '1.000000'
- optmat.solid.raman_response.silica_raman_response(model='default')[source]#
Return a Raman response model of fused silica.
- Parameters:
- modelstr, optional
default(Hollenbeck & Cantrell with the Kerr fit’s f_R),lin_2006orblow_1989.
- Returns:
- SilicaRamanResponse
The model.
- Raises:
- DataError
If the model is unknown.
Examples
>>> silica_raman_response().name 'hollenbeck_2002' >>> f"{silica_raman_response('blow_1989').raman_fraction:.3f}" '0.222'