예제 #1
0
[xx, yy] = meshgrid(x, y)

lg = lg.LG_xy(l=l, p=0, xx=xx, yy=yy, omega0=2 / sqrt(l))
# normalize lg; we only want the phase information
lg /= abs(lg)
#imshow (x,y,arg(lg))
####### END Create LG order

propagate = Propagate()

if False:
    #####  Just the hollow beam relayed.
    F = Field(N, side_length, wavelength)  # beginning field
    F.gaussian_aperture(gaussian_size)
    F.value[:] *= lg  # SLM LG phase
    F.lens(fslm)  # 'SLM' lens
    F.forvard(fslmR)
    F.lens(fslmR)  # relay:1 lens:1
    F.forvard(2 * fslmR)
    F.lens(fslmR)  # relay:1 lens:2
    F.forvard(fslmR + fslm)  # MOT (1st pass)

    imshow((F.value * F.value.conj()).real)
    print 'press enter to continue'
    raw_input()

    F.forvard(fr1)
    F.lens(fr1, )  # relay:2 lens:1
    F.forvard(fr1 + fr2)
    F.lens(fr2, )  # relay:2 lens:2
    F.forvard(2 * fr2)
예제 #2
0
wavelength = 780 * nm  # Wavelength
gaussian_size = 1.00 / sqrt(
    2) * mm  # 1/e Intensity width of beam; (note, it's not the 1/e^2)
step_size = 5. * mm  # LPForvard step size
f = 20 * cm  # focal length of SLM lens
l = 8  # azimuthal order of LG beam

######## END Param ##############

####### Create LG order
dx = (2 / (N - 1.))
x = y = 3 * r_[-1:(1 + dx):dx]
[xx, yy] = meshgrid(x, y)

lg = lg.LG_xy(l=l, p=0, xx=xx, yy=yy, omega0=2 / sqrt(l))
# normalize lg; we only want the phase information
lg /= abs(lg)
#imshow (x,y,arg(lg))
####### END Create LG order

propagate = Propagate()

F = Field(N, side_length, wavelength)
F.gaussian_aperture(gaussian_size)
F.lens(f)
F.value[:] *= lg
propagate(F, z=f + cm, dz=.5 * cm)
#F.forvard(18.0*cm)
#F5 = propagate(4.*cm,.5*cm,                F4,0,0,4)
#F5 = propagate(13.*cm, step_size,               F4,0,0,4)
예제 #3
0
lg /= abs(lg)
#imshow (x,y,angle(lg))
####### END Create LG order

propagate = Propagate()

F = Field(N, side_length, wavelength)
F.gaussian_aperture(gaussian_size)

Pf = P / sum(F.value * F.value.conj())  # power per grid cell [ W ]
Ef = sqrt(Pf / grid_dx**2)  # sqrt(I) [ sqrt(W/m^2) ]
Ef /= sqrt(mW / cm**2)  # put Ef in units [ sqrt(mW/cm^2) ]
F.value[:] *= Ef  # put F in units of sqrt(I)

print 'writing SLM phase...'
F.lens(f)  # apply lens (physical lens)
Fb = F.copy()  # store the undeflected beam
Fb.value[:] *= sqrt(0.2)  # undeflected light
F.value[:] *= lg  # apply lg phase
grating.phase.perfect(F, 32, 0)  # apply a perfect grating phase.
F.value[:] *= sqrt(0.8)  # deflection efficiency of SLM
F.value[:] += Fb.value  # mix the beams back together.
print 'finished writing SLM phase.'

F.forvard(lf * f)

# traverse a piece of glass and interfere primary beam with 1st internally
# reflected+transmitted beam.
Fr = F.copy()
Fr.interpolate(side_length, N, dx0)
Fr.value[:] *= exp(1j * dphi)  # add phase delay to secondary beam
예제 #4
0
#!/usr/bin/env python
"""
LightPipes for Python Optical Toolbox
Calculates the Fraunhofer diffraction of a round hole.
"""

import common
from lightpipes import Field
from pylab import *

m = 1
nm = 1e-9 * m
mm = 1e-3 * m
cm = 1e-2 * m

wavelength = 1000 * nm
size = 10 * cm
N = 150
R = 10 * mm
z = 1000 * m
f1 = 200 * m
f2 = -200 * m

F = Field(N, size, wavelength)
F.circular_aperture(R)
F.lens(f1)
F.lens_forvard(f2, z)

imshow(abs(F.value)**2)  # plot intensity
show()
예제 #5
0
#imshow (x,y,arg(lg))
####### END Create LG order

propagate = Propagate()

F = Field(N, side_length, wavelength)
F.gaussian_aperture(gaussian_size)
F.axicon(axicon_angle, axicon_n1)
#propagate(F, z=13.*cm, dz=step_size)
F.forvard(7.5 * cm)
F.axicon(axicon_angle, axicon_n1)

print 'moving towards slm'
#F.forvard(40*cm)
propagate(F, z=75. * cm, dz=5 * cm)

print 'first lens'
F.lens(-75 * cm)
propagate(F, z=100. * cm, dz=5 * cm)

print 'second lens'
F.lens(-25 * cm)
propagate(F, z=25. * cm, dz=1 * cm)

print 'applying slm'
F.value[:] *= lg
propagate(F, z=50. * cm, dz=2 * cm)

print 'press enter to exit'
raw_input()