Optical Fields¶
This module contains all routines related to the optical fields.
-
class
fast.electric_field.
MotField
(relative_intensities, parity=1, color='blue')¶ The optical field of a MOT scheme.
-
plot
(**kwds)¶ The plotting function for MOT fields.
-
-
class
fast.electric_field.
PlaneWave
(phi, theta, alpha, beta, omega=1, E0=1, color='blue', symbolical=True)¶ This class implements plane waves propagating in an arbitrary direction and with an arbitrary (and well-defined) polarization. It takes as input:
INPUT:
phi
- The azimutal angle in spherical coordinates of the wave vector.theta
- The polar angle in spherical coordinates of the wave vector.alpha
- The angle between the fast axis of a half-wave plate and an incident linearly polarized beam.beta
- The angle between the fast axis of a quarter-wave plate and an incident linearly polarized beam.
The easiest way to understand what this means is to use the function draw_lasers to get a 3d view of the direction and polarization of the wave.
An explicit way to understand what alpha and beta are is to see how the overall form of the electric field is contructed. We begin with a polarization vector for a plane wave propagating towards z:
>>> from sympy import symbols, Matrix, I, exp, sin, cos, pprint >>> E0=symbols("E0",real=True) >>> t,x,y,z,omega,kx,ky,kz=symbols("t,x,y,z,omega,kx,ky,kz",real=True) >>> phi, theta, alpha, beta = symbols("phi, theta, alpha, beta",real=True) >>> ep=Matrix([cos(2*beta),I*sin(2*beta),0])
>>> pprint(ep,use_unicode=False) [ cos(2*beta) ] [ ] [I*sin(2*beta)] [ ] [ 0 ]
Where beta specifies the circularity of the polarization. We define the following rotation matrices
>>> R1=Matrix([[cos(2*alpha), -sin(2*alpha), 0], ... [sin(2*alpha), cos(2*alpha), 0], [0, 0, 1]]) >>> pprint(R1, use_unicode=False) [cos(2*alpha) -sin(2*alpha) 0] [ ] [sin(2*alpha) cos(2*alpha) 0] [ ] [ 0 0 1]
>>> R2=Matrix([[cos(theta), 0, sin(theta)], ... [0, 1, 0], [-sin(theta),0,cos(theta)]]) >>> pprint(R2, use_unicode=False) [cos(theta) 0 sin(theta)] [ ] [ 0 1 0 ] [ ] [-sin(theta) 0 cos(theta)]
>>> R3=Matrix([[cos(phi), -sin(theta), 0], ... [sin(theta), cos(theta), 0], [0, 0, 1]]) >>> pprint(R3, use_unicode=False) [ cos(phi) -sin(theta) 0] [ ] [sin(theta) cos(theta) 0] [ ] [ 0 0 1]
Then we create a general polarization vector applying this rotation to ep
>>> epsilonp=R3*R2*R1*ep
And we build the plane wave in the following way
>>> plane_wave=E0/2 * exp(I*(kx*x+ky*y+kz*z-omega*t)) * epsilonp >>> plane_wave=plane_wave + plane_wave.conjugate()
-
fast.electric_field.
electric_field_amplitude_gaussian
(P, sigmax, sigmay=None, Omega=1000000.0)¶ Return the amplitude of the electric field for a Gaussian beam.
This the amplitude at the center of a laser beam of power P (in Watts) and a Gaussian intensity distribution of standard deviations sigmax, sigmay (in meters). The value of E0 is given in rescaled units according to the frequency scale Omega (in Hertz) understood as absolute frequency (as opposed to angular frequency).
>>> print electric_field_amplitude_gaussian(0.001, 0.001) 19.6861467587
-
fast.electric_field.
electric_field_amplitude_intensity
(s0, Omega=1000000.0)¶ Return the amplitude of the electric field for a given intensity.
This is at a given saturation parameter s0=I/I0, where I0=2.50399 mW/cm^2 is the saturation intensity of the D2 line of rubidium for linearly polarized light.
>>> print electric_field_amplitude_intensity(1.0) 6.37477867488
-
fast.electric_field.
electric_field_amplitude_top
(P, a, Omega=1000000.0)¶ Return the amplitude of the electric field for a top hat beam.
This is the amplitude of a laser beam of power P (in Watts) and a top-hat intensity distribution of radius a (in meters). The value of E0 is given in rescaled units according to the frequency scale Omega (in Hertz) understood as absolute frequency (as opposed to angular frequency).
>>> print electric_field_amplitude_top(0.001, 0.001) 27.8404157371