OpticalFibers.jl
Documentation for OpticalFibers.jl
Materials
OpticalFibers.Material — Type
Material(B1::Real, B2::Real, B3::Real, C1::Real, C2::Real, C3::Real)Create a Material with Sellmeier coefficients B₁, B₂, B₃, C₁, C₂, and C₃, where C₁, C₂, and C₃ must be given in square micrometers.
OpticalFibers.sellmeier_equation — Function
sellmeier_equation(material::Material, wavelength_μm::Real)Compute the refractive index, n, of the material for light with a free space wavelength of wavelength_μm, which must be given in micrometers.
The Sellmeier equation reads
\[n^{2}(λ) = 1 + \sum_{i} \frac{B_{i} λ^{2}}{λ^{2} - C_{i}},\]
where $B_{i}$ and $C_{i}$ are constants that depend on the material, and $λ$ is the wavelength of light in vacuum.
Propagation Constant
OpticalFibers.fiber_equation — Function
fiber_equation(u, parameters)Compute the value of the characteristic fiber equation with all terms moved to the same side of the equal sign, where u is the propagation constant, and parameters contains the fiber radius, refraction index, and frequency in said order.
Used as an input to the non-linear solver to find the propagation constant.
The characteristic fiber equation for single mode cylindrical fibers reads Fam Le Kien and A. Rauschenbeutel, Phys. Rev. A 95, 023838 (2017)
\[\frac{J_{0}(p a)}{p a J_{1}(pa)} + \frac{n^{2} + 1}{2 n^{2}} \frac{K_{1}'(q a)}{q a K_{1}(q a)} - \frac{1}{p^2 a^2} + \Biggl[\biggl( \frac{n^2 - 1}{2 n^2} \frac{K_{1}'(q a)}{q a K_{1}(q a)} \biggr)^2 + \frac{\beta^2}{n^2 k^2} \biggl( \frac{1}{p^2 a^2} + \frac{1}{q^2 a^2} \biggr)^2 \Biggr]^{1 / 2} = 0,\]
where $a$ is the fiber radius, $k$ is the free space wave number of the light, $n$ is the refractive index of the fiber, $p = \sqrt{n^2 k^2 - \beta^2}$, and $q = \sqrt{\beta^2 - k^2}$. Futhermore, $J_n$ and $K_n$ are Bessel functions of the first kind, and modified Bessel functions of the second kind, respectively, and the prime denotes the derivative.
OpticalFibers._propagation_constant — Function
_propagation_constant(a::Real, n::Real, ω::Real)Compute the propagation constant of a fiber with radius a, refactive index n and frequency ω by solving the characteristic equation of the fiber as written as eq. (1A) in [PRA 95, 023838].
OpticalFibers._propagation_constant_derivative — Function
_propagation_constant_derivative(a::Real, n::Real, ω::Real; dω = 1e-9)Compute the derivative of the propagation constant with respect to frequency evaluated at ω of a fiber with radius a, and refactive index n.
Fibers
OpticalFibers.radius — Function
radius(fiber::Fiber)Return the radius of the fiber in micrometers.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> radius(fiber)
0.1OpticalFibers.wavelength — Function
wavelength(fiber::Fiber)Return the wavelength of the fiber mode in micrometers.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> wavelength(fiber)
0.4OpticalFibers.frequency — Function
frequency(fiber::Fiber)Return the angular frequency of the fiber mode in units of inverse micrometers with the speed of light c = 1.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> frequency(fiber)
15.707963267948966OpticalFibers.material — Function
material(fiber::Fiber)Return the material of the fiber.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> material(fiber)
Material with Sellmeier coefficients:
B₁ = 0.6961663
B₂ = 0.4079426
B₃ = 0.8974794
C₁ = 0.00467914825849μm²
C₂ = 0.013512063073959999μm²
C₃ = 97.93400253792099μm²OpticalFibers.refractive_index — Function
refractive_index(fiber::Fiber)Return the refractive index of the fiber for light with the same wavelength as the fiber mode.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> refractive_index(fiber)
1.4701161185594052OpticalFibers.propagation_constant — Function
propagation_constant(fiber::Fiber)Return the propagation constant of the fiber in inverse micrometers for light with the same wavelength as the fiber mode.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> propagation_constant(fiber)
17.242890161273014OpticalFibers.propagation_constant_derivative — Function
propagation_constant_derivative(fiber::Fiber)Return the derivative of the propagation constant with respect to angular frequency of the fiber evaluated at the angular frequency of the fiber mode.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> propagation_constant_derivative(fiber)
1.4431087436150847OpticalFibers.group_velocity — Function
group_velocity(fiber::Fiber)Return the group velocity of the fiber mode in units of the speed of light c = 1.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> group_velocity(fiber)
0.6929484728191256OpticalFibers.normalized_frequency — Function
normalized_frequency(fiber::Fiber)Return the normalized frequency of the fiber mode.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> normalized_frequency(fiber)
1.692704437607302OpticalFibers.effective_refractive_index — Function
effective_refractive_index(fiber::Fiber)Return the effective refractive index of the fiber.
Examples
julia> fiber = Fiber(0.1, 0.4, OpticalFibers.SiO2);
julia> effective_refractive_index(fiber)
1.0977164809428834OpticalFibers.guided_mode_normalization_constant — Function
guided_mode_normalization_constant(a::Real, n::Real, β::Real, h::Real, q::Real, s::Real)Compute the normalization constant of an electric guided fiber mode.
The fiber modes are normalized according to the condition
\[\int_{0}^{\infty} \! \mathrm{d} \rho \int_{0}^{2 \pi} \! \mathrm{d} \phi \, n^{2}(\rho) \lvert \mathrm{\mathbf{e}}(\rho, \phi) \rvert^{2} = 1,\]
where $n(\rho)$ is the step index refractive index given as
\[n(\rho) = \begin{cases} n, & \rho < a, \\ 1 & \rho > a, \end{cases}\]
and $\mathrm{\mathbf{e}}(\rho, \phi) = e_{\rho} \hat{\mathrm{\mathbf{\rho}}} + e_{\phi} \hat{\mathrm{\mathbf{\phi}}} + e_{z} \hat{\mathrm{\mathbf{z}}}$, where the components are given by electric_guided_mode_base.
Electric Fields
OpticalFibers.electric_guided_mode_base — Function
electric_guided_mode_base(ρ::Real, fiber::Fiber)Compute the underlying cylindrical components of the guided mode electric field used in the expressions for both the quasilinear and quasicircular guided modes.
These components for $\rho < a$ are given by
\[\begin{aligned} e_{\rho} &= A \mathrm{i} \frac{q}{h} \frac{K_{1}(q a)}{J_{1}(h a)} [(1 - s) J_{0}(h \rho) - (1 + s) J_{2}(h \rho)] \\ e_{\phi} &= -A \frac{q}{h} \frac{K_{1}(q a)}{J_{1}(h a)} [(1 - s) J_{0}(h \rho) + (1 + s) J_{2}(h \rho)] \\ e_{z} &= A \frac{2 q}{\beta} \frac{K_{1}(q a)}{J_{1}(h a)} J_{1}(h \rho), \end{aligned}\]
and the components for $\rho > a$ are given by
\[\begin{aligned} e_{\rho} &= A \mathrm{i} [(1 - s) K_{0}(q \rho) + (1 + s) K_{2}(q \rho)] \\ e_{\phi} &= -A [(1 - s) K_{0}(q \rho) - (1 + s) K_{2}(q \rho)] \\ e_{z} &= A \frac{2 q}{\beta} K_{1}(q \rho), \end{aligned}\]
where $A$ is the normalization constant, $a$ is the fiber radius, $\beta$ is the propagation constant, $h = \sqrt{n^2 k^2 - \beta^2}$, and $q = \sqrt{\beta^2 - k^2}$, with $k$ being the free space wavenumber of the light. Futhermore, $J_n$ and $K_n$ are Bessel functions of the first kind, and modified Bessel functions of the second kind, respectively, and the prime denotes the derivative. Lastly, $s$ is defined as
\[s = \frac{\frac{1}{h^2 a^2} + \frac{1}{q^2 a^2}}{\frac{J_{1}'(h a)}{h a J_{1}(h a)} + \frac{K_{1}'(q a)}{q a K_{1}(q a)}}.\]
OpticalFibers.electric_guided_field_cartesian — Function
electric_guided_field_cartesian(ρ::Real, ϕ::Real, z::Real, t::Real, field::GuidedField)Compute the cartesian components of a guided electric field at position $(ρ, ϕ, z)$ and time $t$ with the given $power$.
Master Equation Coefficients
OpticalFibers.vacuum_coefficients — Function
vacuum_coefficients(positions, dipole, ω₀)Compute the dipole-dipole and decay coefficients for the master equation describing a cloud of atoms with positions given by the columns in r (in cartesian coordinates), dipole moment d, and transition frequency ω₀ coupled to the vacuum field.
OpticalFibers.guided_coefficients — Function
guided_coefficients(r, d, fiber)Compute the guided dipole-dipole and decay coefficients for the master equation describing a cloud of atoms with positions given by the columns in r (in cartesian coordinates), and dipole moment d coupled to an optical fiber.
OpticalFibers.guided_directional_coefficients — Function
guided_directional_coefficients(r, d, fiber)Compute the guided dipole-dipole and decay coefficients due to the modes with direction f for the master equation describing a cloud of atoms with positions given by the columns in r (in cartesian coordinates), and dipole moment d coupled to an optical fiber.
OpticalFibers.radiation_coefficients — Function
radiation_coefficients(positions, dipole, Γ₀, fiber)Compute the dipole-dipole and decay coefficients for the master equation describing a cloud of atoms with positions given by the columns in r (in cartesian coordinates), and dipole moment d coupled to the radiation modes from an optical fiber.
Transmission
OpticalFibers.transmission_two_level — Function
transmission_two_level(Δes, fiber, gs, J, Γ)Compute the transmission of a cloud of two level atoms surrounding an optical fiber for each value of the detuning given by Δes.
The parameters of the fiber are given by fiber, while the atoms have light-matter coupling constants gs, dipole-dipole interaction matrix J, and cross decay rate matrix Γ.
OpticalFibers.transmission_three_level — Function
transmission_three_level(Δes, probe::GuidedMode, atom::ThreeLevelAtom, gs, Ω, H_effective, Γ)Compute the transmission of a cloud of three level atoms surrounding an optical fiber for each value of the lower transition detuning given by Δes, where each atom experience the same Rabi frequency.
The parameters of the fiber are given by fiber, while the atoms have upper transition detuning Δr, control Rabi frequenciy Ω, pump coupling constants gs, dipole-dipole interaction matrix J, cross decay rate matrix Γ, and Rydberg to intermediate state decay rate γ.
Atomic Traps
OpticalFibers.AtomTrap — Type
AtomTrapSupertype for atom traps.
OpticalFibers.CrossedTweezerTrap — Type
CrossedTweezerTrapAn AtomTrap that contains the parameters of a crossed-beam optical tweezer trap.
OpticalFibers.gaussian_beam_intensity — Function
gaussian_beam_intensity(x::Real, y::Real, z::Real, trap::CrossedTweezerTrap)Compute the intensity at position (x, y, z) of a gaussian beam parallel to the z-axis with parameters given in trap.
OpticalFibers.trap_intensity — Function
trap_intensity(x::Real, y::Real, z::Real, trap::CrossedTweezerTrap)Compute the intensity of the trap at position (x, y, z).
OpticalFibers.trap_potential — Function
trap_potential(x::Real, y::Real, z::Real, trap::CrossedTweezerTrap)Compute the potential of the trap at position (x, y, z).
Atomic Clouds
OpticalFibers.peak_density_gaussian_cloud — Function
peak_density_gaussian_cloud(σ_x::Real, σ_y::Real, σ_z::Real, fiber_radius::Real,
exclusion_zone::Real, number_of_atoms::Int)Compute the peak density of a Gaussian cloud with the given parameters.