pyLaserPulse.bessel_mode_solver¶
Classes
|
Find modes supported by a step index fibre. |
- class pyLaserPulse.bessel_mode_solver.bessel_mode_solver(core_rad, clad_rad, n_co, n_cl, wl, tol=1e-09)¶
Find modes supported by a step index fibre.
Based loosely on code in pyMMF and D. Marcuse, “Light Transmission Optics”, Van Nostrand Reinhold, New York, 1972.
- __init__(core_rad, clad_rad, n_co, n_cl, wl, tol=1e-09)¶
- Parameters:
core_rad (float) – Radius of the core in m
clad_rad (float) – Radius of the cladding in m
n_co (float) – Refractive index of the core
n_cl (float) – Refractive index of the cladding
wl (float) – Wavelength of the light in m
- LP_eigenvalue_equation(u)¶
Find my roots for guided modes!
- Parameters:
u (numpy array) – u = r_core * sqrt(n_core^2 * k^2 - beta^2)
- Returns:
(J_v(u) / (u J_v-1(u))) + (K_v(w) / (w K_v-1(w)))
- Return type:
numpy array
Notes
LP modes can be found by finding the roots to this function. See D. Marcuse, “Light Transmission Optics”, Van Nostrand Reinhold, New York, 1972.
- root_func(u)¶
Wrapper for using scipy.optimize.root to find the roots of self.LP_eigenvalue_equation.
- Parameters:
u (numpy array) – u = r_core * sqrt(n_core^2 * k^2 - beta^2)
- Returns:
Solution (i.e., the roots of self.LP_eigenvalue_equation).
- Return type:
scipy OptimizeResult object
- solve(max_modes=500)¶
Find the LP modes of an ideal step-index fibre.
- Parameters:
max_modes (int) – Maximum number of modes to find
- make_modes(r, num_modes=1)¶
Return an array containing the mode shapes.
- Parameters:
r (numpy array) – radial (polar) axis.
num_modes (int.) – Number of mode profiles to calculate (starts from LP01) if num_modes > self.num_modes, default to self.num_modes
- get_amplitude_distribution(std=None)¶
Calculate an incoherent sum of all modes.
- Parameters:
std – If None, then the modes are assumed to contain equal energy. If numeric, it is used as the standard deviation for a normal distribution which scales the mode energy (favouring low-order modes).