Example #1
0
def example_of_gaussian():
    # Fixed values are set
    onepxtom = pow(10, -5)
    distance = 0.7
    wavelength = 500 * pow(10, -9)
    aperturesize = 40
    pxx = 128
    pxy = 128
    diffrac = odak.diffractions()
    aperture = odak.aperture()
    beam = odak.beams()
    #aperture.show(rectangle,onepxtom,wavelength,'Aperture')
    # Defining a gaussian beam
    amplitude = 10
    waistsize = 20 * onepxtom
    # Distance in between beam waist and the simulation origin
    focal = 8
    for distance in xrange(5, 10):
        distance *= 1
        gaussianbeam = beam.gaussian(pxx, pxy, distance, wavelength, onepxtom,
                                     amplitude, waistsize, focal)
        aperture.show(diffrac.intensity(gaussianbeam, onepxtom), onepxtom,
                      wavelength, 'Detector at %s m' % (distance))
    aperture.show3d(gaussianbeam)
    return True
Example #2
0
def example_of_retroreflector():
    onepxtom = pow(10, -5)
    distance = 0.8
    wavelength = 500 * pow(10, -9)
    aperturesize = 40
    pxx = 1920
    pxy = 1920
    pitch = 40
    diffrac = odak.diffractions()
    aperture = odak.aperture()
    beam = odak.beams()
    # Retroreflector corner cube array is created
    retro = aperture.retroreflector(pxx, pxy, wavelength, pitch, 'normal')
    aperture.show(retro, onepxtom, wavelength, 'Detector')
    #aperture.show(diffrac.fft(retro),onepxtom,wavelength,'FFT')
    #aperture.show3d(retro)
    # Divergin gaussian beam defined
    focal = 0.8
    amplitude = 1
    waistsize = 50 * onepxtom
    gaussianbeam = beam.gaussian(pxx, pxy, distance, wavelength, onepxtom,
                                 amplitude, waistsize, focal)
    aperture.show(gaussianbeam, onepxtom, wavelength,
                  'Detector at %s m' % (distance))
    # Output after the gaussian beam reflects from retroreflector
    output1 = gaussianbeam * retro
    aperture.show(output1, onepxtom, wavelength, 'Detector')
    # Output at the far distance
    distance = 1
    output2 = diffrac.fresnelfraunhofer(output1, wavelength, distance,
                                        onepxtom, aperturesize)
    aperture.show(diffrac.intensity(output2, onepxtom), onepxtom, wavelength,
                  'Detector', 'normal')
    return True
Example #3
0
def example_of_retroreflector():
    onepxtom     = pow(10,-5)
    distance     = 0.8
    wavelength   = 500*pow(10,-9)
    aperturesize = 40
    pxx          = 1920
    pxy          = 1920
    pitch        = 40
    diffrac      = odak.diffractions()
    aperture     = odak.aperture()
    beam         = odak.beams()
    # Retroreflector corner cube array is created
    retro        = aperture.retroreflector(pxx,pxy,wavelength,pitch,'normal')
    aperture.show(retro,onepxtom,wavelength,'Detector')
    #aperture.show(diffrac.fft(retro),onepxtom,wavelength,'FFT')
    #aperture.show3d(retro)
    # Divergin gaussian beam defined
    focal        = 0.8
    amplitude    = 1
    waistsize    = 50*onepxtom
    gaussianbeam = beam.gaussian(pxx,pxy,distance,wavelength,onepxtom,amplitude,waistsize,focal)
    aperture.show(gaussianbeam,onepxtom,wavelength,'Detector at %s m' % (distance))
    # Output after the gaussian beam reflects from retroreflector
    output1      = gaussianbeam*retro
    aperture.show(output1,onepxtom,wavelength,'Detector')
    # Output at the far distance
    distance     = 1
    output2      = diffrac.fresnelfraunhofer(output1,wavelength,distance,onepxtom,aperturesize)
    aperture.show(diffrac.intensity(output2,onepxtom),onepxtom,wavelength,'Detector','normal')
    return True
Example #4
0
def example_of_fresnel_fraunhofer():
    # Fixed values are set.
    onepxtom     = pow(10,-6)
    # Aperture size in mm.
    wavelength   = 500*pow(10,-9)
    pxx          = 2048
    pxy          = pxx
    diffrac      = odak.diffractions()
    aperture     = odak.aperture()
    beam         = odak.beams()
    # A spherical beam traveled from a point to a pinhole, with a distance in mm.
    focal        = pow(10,-4)
    distance     = 9.
    distance    *= pow(10,-3)
    spherical    = beam.spherical(pxx,pxy,distance,wavelength,onepxtom,focal,1)
#    aperture.show(spherical,onepxtom,wavelength,'Spherical wave')
    for i in xrange(1,20):
        da           = i*0.01
        aperturesize = da*pow(10,-3)/onepxtom
        circle       = aperture.circle(pxx,pxy,aperturesize)
    #    aperture.show(circle,onepxtom,wavelength,'Aperture')
        # Spherical wave transmitted from a pinhole.
        AfterPinhole = diffrac.transmittance(spherical,circle)
    #    aperture.show(AfterPinhole,onepxtom,wavelength,'After a pinhole')
        # Distance between pinhole and a lens in mm.
        distance     = 43.
        distance    *= pow(10,-3)
        # Sample Fresnel and Fraunhofer region calculation of the given aperture
        print 'lambda*d/w = %s m' % (wavelength*distance/(aperturesize*onepxtom))
        # Calculating far field behaviour.
        BeforeLens   = diffrac.fresnelfraunhofer(AfterPinhole,wavelength,distance,onepxtom,aperturesize)
        # Calculating the fresnel number.
        fresnelno    = diffrac.fresnelnumber(aperturesize,onepxtom,wavelength,distance)
    #    aperture.show(diffrac.intensity(BeforeLens,onepxtom),onepxtom,wavelength,'Before a lens, Distance: %s m Wavelength: %s m Fresnel Number: %s'% (distance,wavelength,fresnelno))   
    #    aperture.showrow(diffrac.intensity(BeforeLens,onepxtom),wavelength,onepxtom,distance)
        # Multiply it with lens transmittance function. Focal length in mm.
        focal        = 22. 
        focal       *= pow(10,-3)
        AfterLens    = diffrac.lens(BeforeLens,wavelength,focal,onepxtom)
        # Calculating far field behaviour.
        distance     = 22.
        distance    *= pow(10,-3)
        aperturesize = 20.*pow(10,-3)/onepxtom
        output       = diffrac.fresnelfraunhofer(AfterLens,wavelength,distance,onepxtom,aperturesize)
        # Calculating the fresnel number.
        fresnelno    = diffrac.fresnelnumber(aperturesize,onepxtom,wavelength,distance)
        aperture.show(diffrac.intensity(output,onepxtom),onepxtom,wavelength,'Retina, Distance: %s m Wavelength: %s m Fresnel Number: %s'% (distance,wavelength,fresnelno),'normal','da=%smm.png'%da)   
        aperture.showrow(diffrac.intensity(output,onepxtom),wavelength,onepxtom,distance,'row_da=%smm.png' % da)    
        # Show a 3D plot of the output.
    #    aperture.show3d(diffrac.intensity(output,onepxtom))
    # Showing plots.
#    aperture.showplots()
    return True
Example #5
0
def example_of_spherical_wave():
    # Fixed values are set
    onepxtom     = pow(10,-5)
    distance     = 0.7
    wavelength   = 500*pow(10,-9)
    aperturesize = 40
    pxx          = 128
    pxy          = 128
    diffrac      = odak.diffractions()
    aperture     = odak.aperture()
    beam         = odak.beams()
    # Defining a diverging spherical wave
    focal        = 0.0001
    for distance in xrange(1,20):
        # Focal point distance fromn the origin of the spherical wave
        distance  *= 0.00001
        spherical  = beam.spherical(pxx,pxy,distance,wavelength,onepxtom,focal,1)
        aperture.show(diffrac.intensity(spherical,onepxtom),onepxtom,wavelength,'Detector at %s m' % distance)
    aperture.show3d(spherical)
    return True
Example #6
0
def example_of_spherical_wave():
    # Fixed values are set
    onepxtom = pow(10, -5)
    distance = 0.7
    wavelength = 500 * pow(10, -9)
    aperturesize = 40
    pxx = 128
    pxy = 128
    diffrac = odak.diffractions()
    aperture = odak.aperture()
    beam = odak.beams()
    # Defining a diverging spherical wave
    focal = 0.0001
    for distance in xrange(1, 20):
        # Focal point distance fromn the origin of the spherical wave
        distance *= 0.00001
        spherical = beam.spherical(pxx, pxy, distance, wavelength, onepxtom,
                                   focal, 1)
        aperture.show(diffrac.intensity(spherical, onepxtom), onepxtom,
                      wavelength, 'Detector at %s m' % distance)
    aperture.show3d(spherical)
    return True
Example #7
0
def example_of_gaussian():
    # Fixed values are set
    onepxtom     = pow(10,-5)
    distance     = 0.7
    wavelength   = 500*pow(10,-9)
    aperturesize = 40
    pxx          = 128
    pxy          = 128
    diffrac      = odak.diffractions()
    aperture     = odak.aperture()
    beam         = odak.beams()
    #aperture.show(rectangle,onepxtom,wavelength,'Aperture')
    # Defining a gaussian beam
    amplitude    = 10
    waistsize    = 20*onepxtom
    # Distance in between beam waist and the simulation origin
    focal        = 8
    for distance in xrange(5,10):
        distance    *= 1
        gaussianbeam = beam.gaussian(pxx,pxy,distance,wavelength,onepxtom,amplitude,waistsize,focal)
        aperture.show(diffrac.intensity(gaussianbeam,onepxtom),onepxtom,wavelength,'Detector at %s m' % (distance))
    aperture.show3d(gaussianbeam)
    return True
Example #8
0
def example_of_fresnel_fraunhofer():
    # Fixed values are set.
    onepxtom = pow(10, -6)
    # Aperture size in mm.
    wavelength = 500 * pow(10, -9)
    pxx = 2048
    pxy = pxx
    diffrac = odak.diffractions()
    aperture = odak.aperture()
    beam = odak.beams()
    # A spherical beam traveled from a point to a pinhole, with a distance in mm.
    focal = pow(10, -4)
    distance = 9.
    distance *= pow(10, -3)
    spherical = beam.spherical(pxx, pxy, distance, wavelength, onepxtom, focal,
                               1)
    #    aperture.show(spherical,onepxtom,wavelength,'Spherical wave')
    for i in xrange(1, 20):
        da = i * 0.01
        aperturesize = da * pow(10, -3) / onepxtom
        circle = aperture.circle(pxx, pxy, aperturesize)
        #    aperture.show(circle,onepxtom,wavelength,'Aperture')
        # Spherical wave transmitted from a pinhole.
        AfterPinhole = diffrac.transmittance(spherical, circle)
        #    aperture.show(AfterPinhole,onepxtom,wavelength,'After a pinhole')
        # Distance between pinhole and a lens in mm.
        distance = 43.
        distance *= pow(10, -3)
        # Sample Fresnel and Fraunhofer region calculation of the given aperture
        print 'lambda*d/w = %s m' % (wavelength * distance /
                                     (aperturesize * onepxtom))
        # Calculating far field behaviour.
        BeforeLens = diffrac.fresnelfraunhofer(AfterPinhole, wavelength,
                                               distance, onepxtom,
                                               aperturesize)
        # Calculating the fresnel number.
        fresnelno = diffrac.fresnelnumber(aperturesize, onepxtom, wavelength,
                                          distance)
        #    aperture.show(diffrac.intensity(BeforeLens,onepxtom),onepxtom,wavelength,'Before a lens, Distance: %s m Wavelength: %s m Fresnel Number: %s'% (distance,wavelength,fresnelno))
        #    aperture.showrow(diffrac.intensity(BeforeLens,onepxtom),wavelength,onepxtom,distance)
        # Multiply it with lens transmittance function. Focal length in mm.
        focal = 22.
        focal *= pow(10, -3)
        AfterLens = diffrac.lens(BeforeLens, wavelength, focal, onepxtom)
        # Calculating far field behaviour.
        distance = 22.
        distance *= pow(10, -3)
        aperturesize = 20. * pow(10, -3) / onepxtom
        output = diffrac.fresnelfraunhofer(AfterLens, wavelength, distance,
                                           onepxtom, aperturesize)
        # Calculating the fresnel number.
        fresnelno = diffrac.fresnelnumber(aperturesize, onepxtom, wavelength,
                                          distance)
        aperture.show(
            diffrac.intensity(output, onepxtom), onepxtom, wavelength,
            'Retina, Distance: %s m Wavelength: %s m Fresnel Number: %s' %
            (distance, wavelength, fresnelno), 'normal', 'da=%smm.png' % da)
        aperture.showrow(diffrac.intensity(output, onepxtom), wavelength,
                         onepxtom, distance, 'row_da=%smm.png' % da)
        # Show a 3D plot of the output.
    #    aperture.show3d(diffrac.intensity(output,onepxtom))
    # Showing plots.


#    aperture.showplots()
    return True