OpticalFibers.jl
Documentation for OpticalFibers.jl
Materials
OpticalFibers.Material
— TypeMaterial(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
— Functionsellmeier_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
— Functionfiber_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
— Functionradius(fiber::Fiber)
Return the radius of the fiber in micrometers.
Examples
julia> fiber = Fiber(0.1, 0.4, Material(0.6961663, 0.4079426, 0.8974794, 0.0684043^2, 0.1162414^2, 9.896161^2));
julia> radius(fiber)
0.1
OpticalFibers.wavelength
— Functionwavelength(fiber::Fiber)
Return the wavelength of the fiber mode in micrometers.
Examples
julia> fiber = Fiber(0.1, 0.4, Material(0.6961663, 0.4079426, 0.8974794, 0.0684043^2, 0.1162414^2, 9.896161^2));
julia> wavelength(fiber)
0.4
OpticalFibers.frequency
— Functionfrequency(fiber::Fiber)
Return the frequency of the fiber mode.
OpticalFibers.material
— Functionmaterial(fiber::Fiber)
Return the material of the fiber.
OpticalFibers.refractive_index
— Functionrefractive_index(fiber::Fiber)
Return the refractive index of the fiber for light with the same wavelength as the fiber mode.
OpticalFibers.propagation_constant
— Functionpropagation_constant(fiber::Fiber)
Return the propagation constant of the fiber for light with the same wavelength as the fiber mode.
OpticalFibers.propagation_constant_derivative
— Functionpropagation_constant_derivative(fiber::Fiber)
Return the derivative of the propagation constant of the fiber evaluated at the the wavelength of the fiber mode.
OpticalFibers.normalized_frequency
— Functionnormalized_frequency(fiber::Fiber)
Return the normalized frequency of the fiber mode.
OpticalFibers.effective_refractive_index
— Functioneffective_refractive_index(fiber::Fiber)
Return the effective refractive index of the fiber.
OpticalFibers.guided_mode_normalization_constant
— Functionguided_mode_normalization_constant(a::Real, n::Real, β::Real, h::Real, q::Real, K1J1::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_cylindrical_base_components
.
Electric Fields
OpticalFibers.electric_guided_mode_cylindrical_base_components
— Functionelectric_guided_mode_cylindrical_base_components(ρ::Real, a::Real, β::Real, p::Real, q::Real, K1J1::Real, s::Real)
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}{p} \frac{K_{1}(q a)}{J_{1}(p a)} [(1 - s) J_{0}(p \rho) - (1 + s) J_{2}(p \rho)] \\ e_{\phi} &= -A \frac{q}{p} \frac{K_{1}(q a)}{J_{1}(p a)} [(1 - s) J_{0}(p \rho) + (1 + s) J_{2}(p \rho)] \\ e_{z} &= A \frac{2 q}{\beta} \frac{K_{1}(q a)}{J_{1}(p a)} J_{1}(p \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, $p = \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}{p^2 a^2} + \frac{1}{q^2 a^2}}{\frac{J_{1}'(p a)}{p a J_{1}(p a)} + \frac{K_{1}'(q a)}{q a K_{1}(q a)}}.\]
OpticalFibers.electric_guided_field_cartesian_components
— Functionelectric_guided_field_cartesian_components(ρ::Real, ϕ::Real, z::Real, t::Real, f::Integer, fiber::Fiber, polarization::Polarization, power::Real)
Compute the cartesian components of a guided electric field at position $(ρ, ϕ, z)$ and time $t$ with the given $power$.
OpticalFibers.electric_guided_field_cartesian_vector
— Functionelectric_guided_field_cartesian_vector(ρ::Real, ϕ::Real, l::Integer, f::Integer, fiber::Fiber, polarization_basis::CircularPolarization, power::Real)
Compute the guided electric field vector at position $(ρ, ϕ, z)$ and time $t$ with the given $power$.
Master Equation Coefficients
OpticalFibers.vacuum_coefficients
— Functionvacuum_coefficients(r, d, ω₀)
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_mode_coefficients
— Functionguided_mode_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_mode_directional_coefficients
— Functionguided_mode_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_mode_decay_coefficients
— Functionradiation_mode_decay_coefficients(r, d, fiber; abstol = 1e-3)
Compute the 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.
OpticalFibers.radiation_mode_coefficients
— Functionradiation_mode_coefficients(r, d, fiber; abstol = 1e-6)
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.
OpticalFibers.radiation_mode_directional_coefficients
— Functionradiation_mode_directional_coefficients(r, d, fiber, f; abstol = 1e-6)
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 with directions f
from an optical fiber.
OpticalFibers.radiative_coupling_strength
— Functionradiative_coupling_strength(ρ, ϕ, z, d, l, f, fiber)
Compute the coupling strength between an atom and a radiation fiber mode.
Implementation of Eq. (7), bottom equation from Fam Le Kien and A. Rauschenbeutel. "Nanofiber-mediated chiral radiative coupling between two atoms". Phys. Rev. A 95, 023838 (2017).
Transmission
OpticalFibers.transmission_two_level
— Functiontransmission_two_level(Δes, fiber, Δr, Ωs::AbstractArray, 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
— Methodtransmission_three_level(Δes, fiber, Δr, Ω::Number, gs, J, Γ, γ)
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 γ
.
OpticalFibers.transmission_three_level
— Methodtransmission_three_level(Δes, fiber, Δr, Ωs::AbstractArray, gs, J, Γ, γ)
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 the Rabi frequency can be different from atom to atom.
The parameters of the fiber are given by fiber
, while the atoms have upper transition detuning Δr
, control Rabi frequencies Ωs
, pump coupling constants gs
, dipole-dipole interaction matrix J
, cross decay rate matrix Γ
, and Rydberg to intermediate state decay rate γ
.
Atomic Traps
OpticalFibers.gaussian_beam_intensity
— Functiongaussian_beam_intensity(x::Real, y::Real, z::Real, waist::Real, power::Real, wavelength::Real)
Compute the intensity at position (x
, y
, z
) of a gaussian beam parallel to the z-axis with parameters waist
, power
, and wavelength
.
OpticalFibers.tweezer_trap_intensity
— Functiontweezer_trap_intensity(x::Real, y::Real, z::Real, waist::Real, power::Real, wavelength::Real)
Compute the intensity at position (x
, y
, z
) of a dipole tweezer trap consisting of two beam parallel to the gaussian beams, one along the x-axis and one along the y-axis, where both beams have parameters waist
, power
, and wavelength
.
OpticalFibers.tweezer_trap_potential
— Functiontweezer_trap_potential(x::Real, y::Real, z::Real, waist::Real, power::Real, wavelength::Real, stark_shift::Real)
Compute the potential at position (x
, y
, z
) of a dipole tweezer trap consisting of two beam parallel to the gaussian beams, one along the x-axis and one along the y-axis, where both beams have parameters waist
, power
, and wavelength
, and the starkshift per unit intensity is `starkshift`.
OpticalFibers.fiber_potential
— Functionfiber_potential(x::Real, y::Real, z::Real, l::Integer, f::Integer, fiber::Fiber, polarization_basis::CircularPolarization, power::Real, stark_shift::Real)
Compute the potential at position (x
, y
, z
) of a circularly polarized fiber mode along the z-axis with polarization index l
, direction of propagation index f
, power
, and the starkshift per unit intensity is `starkshift`.
OpticalFibers.full_potential
— Functionfull_potential(x::Real, y::Real, z::Real, waist::Real, power_trap::Real, wavelength::Real, stark_shift_trap::Real, l::Integer, f::Integer, fiber::Fiber, polarization_basis::CircularPolarization, power_fiber::Real, stark_shift_fiber::Real)
Compute the full potential at position (x
, y
, z
) of a circularly polarized fiber mode along the z-axis and a dipole tweezer trap consisting of two beam parallel to the gaussian beams, one along the x-axis and one along the y-axis.